PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMEGA32 Seriell über RXD/TXD programmieren?



strunz
09.03.2006, 16:23
Hallo Leute,

ich hoffe ich bin hier richtig:
Kann ich meinen ATMEGA32 Seriell über RXD/TXD programmieren?
Bisher habe ich das nur über den Parallelanschluss und MISI/MOSI gemacht.

Jetzt habe ich mir aber das RN-Funk Board gegönnt und möchte es für kommunikation und programierung über einen stecker nutzen.

Meine frage:
Ist das möglich?
Oder wie würdet ihr das machen?

danke schon mal im voraus.

bertl100
09.03.2006, 16:44
Du kannst ihn mit TXD und RXD programmieren, aber nur wenn du eunen Bootloader vorher hineinflashst.
Dann musst ihn nur einmal per ISP also MOSI und MISO programmieren.

strunz
09.03.2006, 16:48
Achso, danke für die rasche antwort.
Kann ich das RXD/TXD signal aus den Funkboards benutzen um ihn über MOSI/MISO zu programieren?

tobimc
09.03.2006, 17:00
Hi!

Warum willst du das machen?
Du kannst ihn nciht über miso mosi programmieren, da das 1. ein ganz anderes Protokoll ist, 2. weil man dazu noch ein Taktsignal benötigt und 3. weil du dazu RESET auf low ziehen musst.

Um den AVR per Funk zu flashen brauchst du ebenjenen Bootloader.

VLG Tobi

strunz
09.03.2006, 17:52
Ok, danke für die raschen antworten. Ich glaube ist steige bei dem Ganzen thema nicht ganz durch.
Verstehe ich das richtig: ich flashe mir den Bootloader mit meinem eigentlichen Programm auf den Controller. Dannach kann ich mit den Signalen aus dem Funkboard die Sensoren abfragen und den Roboter steuern?

Oder versteh ich die funktion des Bootloaders falsch?

chr-mt
09.03.2006, 18:15
Hi,
nö, der Bootloader ersetzt dir nur den Programmer.
Statt über die MISO / MOSI etc. geht das dann seriell.

Das hat mit dem eigentlichen Controllerprogramm nix zu tun.
Der Bootloader übernimmt nur die Daten vom PC und speichert sie in den Flash.

Du lädst den Bootloader also erst mal mit deinem normalen Programmer in den Controller.
Ab dann kannst du den Controller mittels eines PC Programms über die serielle Schnittstelle flashen.

Bootloader kannst du dir selber programmieren, oder du benutzt einen fertigen, zB. "Megaload", den gibt's hier:

www.microsyl.com

Gruß
Christopher

strunz
09.03.2006, 19:09
Ahhhh, jetzt wirds mir klarer,
mit welchem PC Programm kann ich das programm dann auf der Controller schreiben. Weil Bascom bietet nur STK200/500, ISP usw. als schnittstelle an.
Wie kann ich ihm sagen, dass ich seriell über nen eigenen adapter schicken will?

tobimc
09.03.2006, 19:13
Hi!

Nun... das kommt ganz auf deinen Bootloader und das von ihm benutzte Protokoll an.

Wenn du dir einen selber schreibst, musst du diene Software entweder so anpassen, dass der bootloader die Software versteht, oder du musst dir eine eigene Programmiersoftware schrieben. Je nach dem.

VLG Tobi

chr-mt
09.03.2006, 19:35
Hi,
es gibt in den BASCOM Samples einen Quellcode für einen Bootloader.
Der kann dann direkt aus Bascom angesprochen werden.

Der Bascom Bootloader arbeitet mit X-Modem Protokoll.
Ich hatte den mal so umgeschrieben, daß er nicht mehr auf das Bascom-eigene Downloadprogramm wartete, sondern mit einem Taster gestartet wurde.
Dadurch konnte man jedes X-Modem fähige Terminalprogramm zum downloaden nutzen. (zB. Hyperterminal)

Gruß
Christopher

chr-mt
09.03.2006, 20:02
Hi,
Wenn du das mit dem Bootloader mal ausprobieren willst:
1.
lade das Programm "bootloader.bas" in Bascom.
"bootloader.bas" findest du im verzeichnis samples/boot
Passe die Einstellungen für den Quarz an.
Den Chip brauchst du nicht im Programm zu ändern, da dort schon der Mega32 voreingestellt ist.

2.
compile das Programm mit Bascom.
Die Größe des Programms wird mit 98% angegeben.
Nicht dran stören.
Das ist die Größe , die der Bootloader im Bootbereich braucht.
Für dein eigentliches Programm ist dann immer noch genug Platz.

3.
Mit dem vorhandenen Programmiergerät schickst du das Programm nun zum Chip.
Es wird dort automatisch in den Bootbereich geladen.
(wenn der verfügbar ist, das kann man mit den Fuses einstellen)

4.
Programmiergerät abstöpseln.

Ab jetzt kannst du den Mega 32 seriell programmieren:

Serielles Kabel vom PC an den Mega32 anschließen (über einen Pegelwandler)

In Bascom bei "Programmer" den "MCS Bootloader" auswählen.

Jetzt lädst du dein eigentliches Programm in Bascom, oder schreibst ein neues.
Dieses Programm wie gewohnt compilieren.

5. In Bascom auf "Run Programmer" clicken (oder F4)

6. Den Mega32 resetten.

Jetzt wird das Programm seriell auf deinen Mega32 übertragen.


Wichtig:
Bootloder und Bootprogramm müssen die gleiche Baudrate haben.
(also bei "Programmer" in Bascom Baudrate kontrollieren)

Gruß
Christopher

strunz
09.03.2006, 20:06
Also leute irgendwie....
ich glaube ich muss mich erst mal in die ganze Materie einlesen.
Das kann doch nicht so kompliziert sein seriell zu programieren. Ich bin doch nicht der erste der das machen will. Es gibt sicherlich ne ganz einfache möglicht die hex-datei in den controller zu bekommen.
Ich werde mich jetzt mal auf die such in den unendlichen weiten des www begeben und melde mich wenn ich was gefunden habe.

Danke an alle, ausser super_castel, auf seinen sarkassmus könnte ich gut verzichten.

chr-mt
09.03.2006, 20:11
Hi,

Das kann doch nicht so kompliziert sein seriell zu programieren
Isses doch auch gar nicht.
Wenn du den Bootloader einmal im Chip installiert hast, brauchst du ja nix mehr zu machen.
Hast eben nur den anderen Programmer in Bascom angewählt.
An der Arbeitsweise ändert sich dann nichts mehr.

Der Bootloader MUSS in den Chip.
Wie soll der Mega denn sonst wissen, was er machen soll?

Probier's einfach mal aus.
Ist wirklich nicht schwer.

EDIT:
Wenn du in den Bascom Einstellungen bei "Programmer" keinen "MCS Bootloader" findest, solltest du Bascom mal updaten.
Das geht erst seit der vorletzten Version.

Gruß
Christopher

strunz
09.03.2006, 20:59
ja, das verstehe ich jetzt schon.
Kannst du mir aber erklären wie ich den bootloader (ist es eine hexdatei?) in der Chip bekomme? Das muss ich dann ja mit der Parallelschnittstelle machen!? Und wo bekomme ich den Bootloader für ATMEGA32 her? Wenn ich das weiss, dann bekomme ich das bestimmt hin...

chr-mt
10.03.2006, 08:37
Hi,


Und wo bekomme ich den Bootloader für ATMEGA32 her?
Habe ich doch oben schon beschrieben.
Der ist in den Bascom Samples drin, als .bas-Datei.
Musst du nur mit Bascom compilieren und in den Chip programmieren, so wie du es gewohnt bist.

Kannst du mir aber erklären wie ich den bootloader (ist es eine hexdatei?) in der Chip bekomme?
Hast du doch schon selber geschrieben:

Bisher habe ich das nur über den Parallelanschluss und MISI/MOSI gemacht.
Genau so.

Gruß
Christopher