Erster Blinkversuch ATmega328

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erster Blinkversuch ATmega328

Beitrag von Mathias »

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 grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 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

Re: Erster Blinkversuch ATmega328

Beitrag von Timm Thaler »

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.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erster Blinkversuch ATmega328

Beitrag von Marc »

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.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erster Blinkversuch ATmega328

Beitrag von Mathias »

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 grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erster Blinkversuch ATmega328

Beitrag von Marc »

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.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erster Blinkversuch ATmega328

Beitrag von Mathias »

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 grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erster Blinkversuch ATmega328

Beitrag von Marc »

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.

Timm Thaler
Beiträge: 1224
Registriert: So 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

Re: Erster Blinkversuch ATmega328

Beitrag von Timm Thaler »

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.

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erster Blinkversuch ATmega328

Beitrag von Marc »

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.

Antworten