Erster Blinkversuch ATmega328

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Re: Erster Blinkversuch ATmega328

Beitragvon Mathias » 15. Okt 2017, 20:39 Re: Erster Blinkversuch ATmega328

Ich denke, es wird momentan das besten sein die Fuses in ruhe zu lassen. Der AVR ist komplexer als er auf den ersten Blick aussieht. :wink:
Wen ich eine Takt oder sonst was ändern will, kann ich dies (momentan) noch über die Arduino-IDE machen.
Wen der AVR vorbereitet ist, kann ich mit Lazarus weiter machen.

Ist ein Fuses vergleichbar mit eine INI-Datei, welche die Konfigurationen für den AVR speichert ?

Dass die Arduino-IDE hier die Baudrate ändert liegt wahrscheinlich nur daran, dass die IDE annimmt: Ok, der Controller läuft mit niedrigem Takt, dann kannst Du nur mit 9600 Baud übertragen weil der Uart bei niedrigem Takt die 115kBaud nicht schafft. Und dann Avrdude den Befehl gibt, mit niedriger Baudrate zu arbeiten.

Sowas habe ich fast vermutet. Ich wollte den UART meines Arduinos auch mal manuell programmieren, aber da war bei ca. 9600Baud fertig.
Mit den Arduino-Libs kommt man bis auf 1'000'000 Baud ! Dies habe ich schon probiert.

@Timm Thaler
So wie es scheint, hast du dich schon recht tief in den AVR eingearbeitet. :shock:
Ich muss wohl noch viel lernen, viel mehr als direkte Portmanipulation habe ich bis jetzt nicht gemacht, ansonsten habe ich Arduino-Libs verwendet :roll:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4107
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Timm Thaler » 15. Okt 2017, 21:41 Re: Erster Blinkversuch ATmega328

Mathias hat geschrieben:Ich denke, es wird momentan das besten sein die Fuses in ruhe zu lassen. Der AVR ist komplexer als er auf den ersten Blick aussieht.


Nein, ist er nicht. Du interpretierst da zu viel rein. Und die Fuses fasst man einmal an, wenn man den AVR einsetzt, und vielleicht ein zweites Mal wenn das Programm fertig ist und man ihn weitergeben und dabei vor Auslesen schützen will.

Mathias hat geschrieben:Ist ein Fuses vergleichbar mit eine INI-Datei, welche die Konfigurationen für den AVR speichert ?


Ein Controller ist kein Prozessor. Ein Controller ist ein Stück Hardware, welches mit festverdrahteten Schaltungsstrukturen (And, Or-Gatter, Vergleicher, Addierer, Subtrahierer, Zähler) ein quasi-festverdrahtetes Programm (den in den Flash eingeschriebenen Maschinencode) abarbeitet. Dabei spielt es auch keine Rolle, ob der Maschinencode bis zu 10.000 mal neu eingeschrieben werden kann. Ist er einmal drin, kann er als festverdrahtet betrachtet werden.

Ein Fuse-Bit ist eine Speicherzelle. Diese Speicherzelle bildet einen Schalter, mit dem sich bestimmte Funktionen am Controller ein- oder ausschalten lassen. Umschalten interner Takt, externer Takt, Taktfrequenz durch 8 teilen, Brown-out einschalten usw. 8 dieser Schalter werden praktischerweise zu einem Fuse-Byte zusammengefasst.

Fuses heisst das deswegen, weil das früher wie eine Sicherung arbeitete: Die Fuses waren bei der Herstellung des Controllers gesetzt (1) und wurden buchstäblich durchgebrannt, wenn man sie auf (0) haben wollte. Zurück ging nicht. EPROM - Elektronisch programmierbarer Nur-Lese-Speicher.

Später entwickelte man Technologien, wie man Bits auch wieder zurücksetzen konnte. EEPROM - Elektronisch programmierbarer und löschbarer (erase) Nur-Lese-Speicher.

Auch heute ist es so, dass die Bits im Flash anfangs auf (1) stehen und beim Programmieren die entsprechenden Bits auf (0) gesetzt werden. Man kann keine Bits von (0) auf (1) setzen. Dazu muss man den Flash vorher löschen (erase), dann stehen alle Bits wieder auf (1), und dann kann man ihn programmieren (nötige Bits auf 0). Deswegen ist bei einem Programmiervorgang eigentlich immer ein Erase nötig, dass macht der Programmer aber von allein - wenn man es ihm nicht verbietet.

Und deswegen kann man z.B. Lock-Bits auch nur zurücknehmen (Programm nicht vor Auslesen geschützt), wenn man vorher den ganzen Chip löscht. Was ungemein praktisch ist, sonst könnte jemand einfach die Lock-Bits zurücksetzen und Dein Programm auslesen.
Timm Thaler
 
Beiträge: 622
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Marc » 29. Nov 2017, 22:26 Re: Erster Blinkversuch ATmega328

Endlich hab ich es auch geschafft.
So einen Programmieradapter unter Linux dazu zu bringen mit dem AVRDude zu funktionieren ist nun nicht so trivial.
Der dritte Adapter läuft nun. Ist ein USBasp Typ.
So sieht der Aufruf bei mir aus.
avrdude -p m328 -P /dev/ttyACM0 -c usbasp -b 19200 -F -u -U flash:w:Project1.hex
Damit programmiere ich nun direkt einen Atmega328p ohne Arduino gedöns. :-)
Good code comes from experience, experience comes from bad code.
Marc
 
Beiträge: 188
Registriert: 11. Nov 2016, 14:09
Wohnort: Schweiz
OS, Lazarus, FPC: Linux Mint 18 (WinXP VBox) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 29. Nov 2017, 22:31 Re: Erster Blinkversuch ATmega328

So einen Programmieradapter unter Linux dazu zu bringen mit dem AVRDude zu funktionieren ist nun nicht so trivial.
Der dritte Adapter läuft nun. Ist ein USBasp Typ.

Ich habe mir selbst einen Adapter gebaut, siehe Link.

https://flazer.de/blog/14/arduino-atmel-flash-station

Mit diesem habe ich schon ATmega328 und diverse ATtiny programmiert.
Unter Linux funktioniert er einwandfrei, Windows habe ich nicht getestet.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4107
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Marc » 29. Nov 2017, 22:51 Re: Erster Blinkversuch ATmega328

Hallo Mathias.

Den Link hast Du schon mal 'gepostet'. Das sieht wirklich eindrücklich aus.
Aber eben es ist mir ein bisschen kompliziert. ;-)
Bin auch nicht so der Arduino Liebhaber.

Der USBasp adapter hat mich jetzt 10€ gekostet.

Wirklich cool wäre die AVR direkt mit einem Raspberry zu brennen. Das müsste im Prinzip ja gehen?
Good code comes from experience, experience comes from bad code.
Marc
 
Beiträge: 188
Registriert: 11. Nov 2016, 14:09
Wohnort: Schweiz
OS, Lazarus, FPC: Linux Mint 18 (WinXP VBox) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 29. Nov 2017, 22:57 Re: Erster Blinkversuch ATmega328

Wirklich cool wäre die AVR direkt mit einem Raspberry zu brennen. Das müsste im Prinzip ja gehen?

Wieso sollte dies nicht gehen, vorausgesetzt, es gibt ein averdude für den Raspi.

Den Link hast Du schon mal 'gepostet'. Das sieht wirklich eindrücklich aus.
Könnte sein, im Wiki habe ich ihn auf jeden Fall gepostet.

Aber eben es ist mir ein bisschen kompliziert. ;-)
Bin auch nicht so der Arduino Liebhaber.
So kompliziert war dies auch wieder nicht, dafür hast du noch Kontroll-LEDs, wen ein Fehler aufgetreten ist.

Ich habe bei meinem Adapter noch einen PSK-Stecker angelötet, auf meinen AVR-Projkten habe ich den gleichen Stecker und somit kann ich schnell Programmieren. :wink:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4107
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Marc » 30. Nov 2017, 13:28 Re: Erster Blinkversuch ATmega328

Mathias hat geschrieben:
Wirklich cool wäre die AVR direkt mit einem Raspberry zu brennen. Das müsste im Prinzip ja gehen?

Wieso sollte dies nicht gehen, vorausgesetzt, es gibt ein averdude für den Raspi.

Den Link hast Du schon mal 'gepostet'. Das sieht wirklich eindrücklich aus.
Könnte sein, im Wiki habe ich ihn auf jeden Fall gepostet.

Aber eben es ist mir ein bisschen kompliziert. ;-)
Bin auch nicht so der Arduino Liebhaber.
So kompliziert war dies auch wieder nicht, dafür hast du noch Kontroll-LEDs, wen ein Fehler aufgetreten ist.

Ich habe bei meinem Adapter noch einen PSK-Stecker angelötet, auf meinen AVR-Projkten habe ich den gleichen Stecker und somit kann ich schnell Programmieren. :wink:


Das gibt es wohl. Ich meine den Raspi ohne einen Programmieradapter zu verwenden.
Hab da auch schon was gefunden im Netz. Will das gelegentlich mal testen.

Das das im Wiki gepostet ist ist sicher gut.

Ueberhaupt das Tutorial ist sehr gut geworden, vielen Dank dafür. Möchte eigentlich gleich alles ausprobieren.
Plane einen kleinen LED Würfel damit zu machen, mal sehen, kommen ja noch ein paar Feiertage daher.

Meinst Du mit PSK Stecker den 6 oder 10 poligen ISP Stecker?
Good code comes from experience, experience comes from bad code.
Marc
 
Beiträge: 188
Registriert: 11. Nov 2016, 14:09
Wohnort: Schweiz
OS, Lazarus, FPC: Linux Mint 18 (WinXP VBox) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Timm Thaler » 30. Nov 2017, 15:24 Re: Erster Blinkversuch ATmega328

Marc hat geschrieben:Das gibt es wohl. Ich meine den Raspi ohne einen Programmieradapter zu verwenden.


Achtung! Nur mit 3.3V am AVR.

Achtung! Nur mit Schutzwiderständen zum Raspi. Sind die Pins am Raspi und am AVR beide auf Ausgang und auf unterschiedlichen Pegeln, gewinnt sonst der AVR.
Timm Thaler
 
Beiträge: 622
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Marc » 30. Nov 2017, 16:21 Re: Erster Blinkversuch ATmega328

Es kann nur einen geben. :-)
Ja ist klar, habe schon solche Levelshifter vom Chinesischen Hersteller meines Vertrauens.
Aber wäre schon Klasse, gerade wenn mann eh schon den Raspi mit dem AVR verbindet.
Good code comes from experience, experience comes from bad code.
Marc
 
Beiträge: 188
Registriert: 11. Nov 2016, 14:09
Wohnort: Schweiz
OS, Lazarus, FPC: Linux Mint 18 (WinXP VBox) | 
CPU-Target: 64Bit
Nach oben

• Themenende •
Vorherige

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried