Forum: Mikrocontroller und Digitale Elektronik Programmieren eines Atmega über UART


von Jannis F (Gast)


Lesenswert?

Hallo

Ich bin grad dabei mir ein Entwicklungsboard für einen ATMEGA 168 oder 
328 zu bauen. Auf diesem Entwicklungsboard habe ich dann die Möglichkeit 
die gängige Pheripherie zu testen und das Verhalten der Programmierung 
zu Untersuchen.

Allerdings hätte ich eine Frage bezüglich der Seriellen Schnittstelle
Ich hätte erstmal gedacht, dass ich einen ATMEGA 328 als In System 
Programmer benutze also einen USB to Seriel Chip mit einem 328 über UART 
verbinde und dieser 328 wiederum den Ziel Microcontroller also einen 168 
oder einen 328 als ISP programmiert. Meine Frage wäre nun ob diese 
Vorgehen überhaupt so funktioniert und ob jemand dort einen USB to 
Serial Chip vorschlagen kann. Außerdem wäre es nützlich wenn ich 
eventuell ein ähnliches Projekt sehen könnte. Oder geht das eventuell 
noch einfacher.

Die Hex Datei wird mit Atmel Studio mit C erstellt und anschließend mit 
dem Burn-O-Mat überspielt.

Im vorraus schonmal vielen Dank

von Route_66 H. (route_66)


Lesenswert?

Jannis F schrieb:
> Oder geht das eventuell
> noch einfacher.

Mit einem Bootloader kannst Du Deinen Contoller direkt über RS232 (oder 
USB to UART) programmieren.
Diesen kannst Du vorher per ISP in den 168 oder 328 brennen.

: Bearbeitet durch User
von Karl M. (Gast)


Lesenswert?

Jannis F schrieb:
> Burn-O-Mat überspielt

das ist nicht richtig, Burn-O-Mat ist kein ISP Programmierer, es ist 
noch ein graphisches Frontend für Avrdude.

Und hierbei (ISP Programmierung oder Nutzung eines seriellen 
Bootloaders) kommt es darauf an, was Avrdude unterstützt.

von Joachim B. (jar)


Lesenswert?

Jannis F schrieb:
> Ich bin grad dabei mir ein Entwicklungsboard für einen ATMEGA 168 oder
> 328 zu bauen. Auf diesem Entwicklungsboard habe ich dann die Möglichkeit
> die gängige Pheripherie zu testen und das Verhalten der Programmierung
> zu Untersuchen.

also einen arduino mini mit 328p?
https://www.google.com/search?q=arduino+mini+328p

oder verstehe ich deine Frage falsch?

Jannis F schrieb:
> Meine Frage wäre nun ob diese
> Vorgehen überhaupt so funktioniert und ob jemand dort einen USB to
> Serial Chip vorschlagen kann.

klar gibt welche mit echten FTDI und mit fake FTDI oder mit CH 341 o.ä.

Die Belegung sollte 6 Stifte haben mit VCC GND Rx Tx CTS DTR und
nicht! Achtung: 3,3V

https://buyhere22.com/components/usb-ttl-ft232rl-pinout.png
oder
https://cdn.antratek.nl/media/product/7f1/serial-basic-breakout-ch340g-and-usb-c-dev-15096-54e.jpg

ich habe leider zu oft welche mit 3,3V an der Stiftseite erwischt die 
sich am Arduino mini oder am mighty mini 1284p nicht 1:1 anstecken 
liessen!
https://github.com/JChristensen/mini1284

von OMG (Gast)


Lesenswert?

Jannis F schrieb:
> Im vorraus schonmal vielen Dank

Im vorraus schonmal die Warnung dass du als Anfänger viel
falsch machen kannst wenn du dein eigenes Entwicklungsboard
baust, daher lies die Wikis zum AVR hier auf uC.net und
lasse deine Schaltung und Layout begutachten bevor deine
Schöpfung in Realisierung geht.

von Jannis F (Gast)


Lesenswert?

Ich wollte ohne extra Bootloader auskommen, sodass ich die "rohen" 
Microcontroller programmieren kann deswegen wollte ich einen weiteren 
328 nehmen der die Aufgabe des Arduino Unos als Programmer übernimmt

von Sven K. (quotschmacher)


Lesenswert?

darf man den sinn dahinter hinterfragen? so hast du zusätzlichen 
hardwareaufwand (wenn du das gerät mehrmals herstellst, multipliziert 
sich das) vs. einmaligen softwareaufwand.

von Ralph S. (jjflash)


Lesenswert?

Viele Wege führen nach ROM (auch ohne eigenen Bootloader)  !!!

1. Weg:

Nachbau eines USBasp mit auf das Board nehmen (bei Bedarf kann ich dir 
auch eine modifizierte Firmware geben, die unter Linux auch als 
USB2RS232 Bridge dienen kann

2. Weg:

einem nackten ATmega mit Bootloader versorgen und in diesen das AVRISP 
aus den Beispielen der Arduino-IDE flashen, der dann als ISP-Programmer 
funktioniert

3. Weg (den ich auf eigenen Boards verwende):

CH340 als US2RS232 Bridge, diese bedient ein ATmega als STK500v2 
Programmer. Ein an den ATmega angeschlossener Taster fungiert als 
Toggleschalter zwischen ISP-Programmer Modus oder als Serial-Bridge, 
sodass ein EVAL-Board diese Brücke als Kanal für serielle Ausgaben 
nutzen kann (auch hier kann ich dir bei Bedarf eine Firmware stellen).

Das Ausgangsprojekt war dieses hier:

http://tuxgraphics.org/electronics/200510/article05101.shtml

4. Weg

viele weitere Möglichkeiten : - )

von Ralph S. (jjflash)


Angehängte Dateien:

Lesenswert?

So, jetzt habe ich mal meine Sourcen durchsichtet und auch einen 
Schaltplan gezeichnet. Prinzipiell (ich finde es nicht mehr) hatte ich 
einen Teil der Software in Verbindung mit etwas das ich "Flashershield" 
nenne hier eingestellt.

Hier jetzt allerdings nicht in Verbindung mit einem Arduino, sondern als 
eigenständige Lösung.

Mit der Jumperreihe kann der ISP-Mode selektiert werden. In Verbindung 
1-2 kann eine neue Firmware in den Controller geladen werden. Wenn 
dieses NICHT die STK500v2 Firmware sein sollte, sondern wenn hier ein 
Arduino-Bootloader geflasht wird, reagiert die Schaltung logischerweise 
wie ein Arduino (Uno).

Ist dieser Bootloader geflasht, so kann der Arduinomodus mit JP2 
selektiert werden.

Hier wäre es denkbar, den Firmwarecontroller mit einem Bootloader zu 
versehen und über diesen dann die Firmware als STK500 Clone zu flashen.

Jumperreihe Verbindung 2-3 bedeutet, dass ein AVR-Controller geflasht 
werden kann.

Als "Schmankerl" können (müssen aber nicht) die seriellen Anschlüsse des 
Zielsystems an den STK500 Clone angeschlossen werden.

Wenn dieses gemacht wird, kann über den Taster S1 der STK500 Modus 
überbrückt werden und jede serielle Zeichenübertragung des Targetsystems 
wird an den PC gesendet (ein Upload des Targetsystems ist dann 
logischerweise nicht mehr möglich).

S1 toggelt den STK500 und der seriellen Modus, eine rote Leuchtdiode 
zeigt an, in welchem Modus sich der STK500-Clone befindet.

Beitrag #6010568 wurde vom Autor gelöscht.
von Ralph S. (jjflash)


Lesenswert?

PS:

Flashen eines Zielcontrollers:

Linux:

avrdude -c stk500v2 -p m3288 -b 115200 -P /dev/ttyUSB0 -U 
flash:w:meinprg.hex

Windows:

avrdude -c stk500v2 -p m3288 -b 115200 -P comx -U flash:w:meinprg.hex

von Alexander S. (alesi)


Lesenswert?

Ralph S. schrieb:
> Prinzipiell (ich finde es nicht mehr) hatte ich
> einen Teil der Software in Verbindung mit etwas das ich "Flashershield"
> nenne hier eingestellt.

Das hier?
Beitrag "Arduino - UNO Flashershield (Linux)"

von Ralph S. (jjflash)


Lesenswert?

Alexander S. schrieb:
> Das hier?
> Beitrag "Arduino - UNO Flashershield (Linux)"

Stimmt, das war es !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.