Forum: Mikrocontroller und Digitale Elektronik AVR Debugging über UART


von Silent S. (snooc)


Lesenswert?

Ich hab mich dazu entschieden vererst auf printf() debugging zu setzen. 
Das müsste fürs Erste reichen.

Hab mir auch schon ein bisschen was durchgelesen.. sieht jetzt nicht 
sonderlich kompliziert aus - zumindest aus Softwaretechnischer sicht.

Aber kann mir jemand erklären wie das Hardwaretechnisch aussieht?

Mein AtmegaX hat irgendwo ein paar Register die ich konfigurieren muss, 
danach kann ich auf die Schnittstelle schreiben..

aber wo schreibt das hin? Muss ich den Pin selbst auswählen? Brauche ich 
dazu wieder einen eigenen controller? Und wie bekomme ich die Ausgabe 
auf mein Terminal/meine Console am PC? Kann mir mein USBProg 3.3 dabei 
irgendwie helfen oder muss ich dazu ein weiteres "fancy" Kabel kaufen? 
^^

Danke für eure Hilfe :)

LG; Stefan

von Stefan S. (sschultewolter)


Lesenswert?

Was ist ein AtmegaX? Meinst du damit nun die Atmega Familie ansich 
(328P, 8, 2560 ....) oder die xMegas?

Wenn dein MCU nur einen UART hat, dann sind die Pins mehr oder weniger 
fest! Wo genau diese liegen, siehst du im DB. (Software UART mal 
ausgenommen).

Ob du einen extra Controller brauchst, hängt von deinem genauen Typ ab. 
16u2 o.ä. haben einen USB Controller integriert der direkt an dem USB 
Port angeschlossen werden kann.

Andere, wie zB. der Atmega328P können nicht direkt an einen USB 
Anschluss angeschlossen werden. Hier bedarf es eines FTDI Adapters. 
Alternativ geht auch ein Bluetooth Adapter (zB HC05/06).

Deiner Progger scheint ein avrispmkii-Klon zu sein. Darüber kannst du 
keine UART Verbindung zum PC aufbauen.

von H.Joachim S. (crazyhorse)


Lesenswert?

effektiver ist das mit JTAG oder debug wire. Da kannst du an jedem 
einzelnem Programmschritt schauen, was passiert. Per UART nur da, wo du 
vorm compilieren meinst, schauen zu müssen. Ausserdem veränderst du mit 
printf() das Zeitverhalten deines Programms. Abgesehen davon wird dein 
Code deutlich grösser und passt u.U. gar nicht mehr in den flash deines 
MC. Printf () ist bequem, aber frisst ne Menge Speicher. Es gibt auch 
andere (speichersparende) Ausgabemethoden für den UART.

von Silent S. (snooc)


Lesenswert?

Würde ich nicht auch mit JTAG das Zeitverhalten beeinflussen?

Die Größe des Programmes ist wahrscheinlich wirklich nicht zu 
vernachlässigen. Ich bin noch "Rookie" was das hier angeht und hab noch 
gar keine genauen Vorstellungen wann, wie schnell und ob ich je einen 
ganzen Flash voll bekomme. :D

von Silent S. (snooc)


Lesenswert?

Stefan S. schrieb:
> Was ist ein AtmegaX? Meinst du damit nun die Atmega Familie ansich
> (328P, 8, 2560 ....) oder die xMegas?

Meinte damit irgendeinen Atmega.. in meinem Fall ist es ein Atmega8 aber 
da man die ja anegblich nicht debuggen kann werde ich wohl auf eineen 
Atmega88 oder Atmega16 umsteigen..


> Wenn dein MCU nur einen UART hat, dann sind die Pins mehr oder weniger
> fest! Wo genau diese liegen, siehst du im DB. (Software UART mal
> ausgenommen).

Ich kann den/die Pins nicht wirklich ausmachen 
(http://akizukidenshi.com/download/ATMEGA8-16PU-ND.pdf) .. wie heißen 
die?

> Ob du einen extra Controller brauchst, hängt von deinem genauen Typ ab.
> 16u2 o.ä. haben einen USB Controller integriert der direkt an dem USB
> Port angeschlossen werden kann.

Oha, das klingt praktisch vielleicht nehme ich doch lieber so einen. Hab 
in weiterer Folge vor einen Schrittmotor über den PC anzusteuern. Würde 
sich da ein Atmega16u2 gut dafür eignen?

> Deiner Progger scheint ein avrispmkii-Klon zu sein. Darüber kannst du
> keine UART Verbindung zum PC aufbauen.

Okay alles klar, danke!

von Stefan S. (sschultewolter)


Lesenswert?

Schau mal im Datenblatt(dein Link) auf Seite 2!
Dort wird PD0(Rx) und PD1(Tx) aufgeführt. Das sind deine Hardware UART 
Pins.

Du kannst natürlich, wenn es haupsächlich für die Verbindung mit PC ist, 
auch direkt die Atmegas mit integriertet USB Kontroller nehmen. Wobei da 
musst du dann schaun, ob es die auch als DIP gibt. Oder kommen die 
SOIC/TQFN ICs auch für die in Frage?

von Silent S. (snooc)


Lesenswert?

Stefan S. schrieb:
> Schau mal im Datenblatt(dein Link) auf Seite 2!
> Dort wird PD0(Rx) und PD1(Tx) aufgeführt. Das sind deine Hardware UART
> Pins.

Alles klar, jetzt weiß ich endlich wie die heißen :D

> Du kannst natürlich, wenn es haupsächlich für die Verbindung mit PC ist,
> auch direkt die Atmegas mit integriertet USB Kontroller nehmen. Wobei da
> musst du dann schaun, ob es die auch als DIP gibt. Oder kommen die
> SOIC/TQFN ICs auch für die in Frage?

Ich weiß leider nicht was ein DIP ist bzw was SOIC/TQFN ist. Sind das 
Pins?



Ein Freund hat mir grade das hier empfohlen: 
https://www.pjrc.com/teensy/

bzw. wie stünde es mit dem hier: 
http://store.atmel.com/PartDetail.aspx?q=p:10500053#tc:description

Sorry für die viele Fragerei aber ich hab schon ein paar Teile gekauft 
von denen ich mittlerweile weiß, dass ich sie nicht brauchen werde weil 
ich nicht gewusst hab WAS ich da eigentlich kaufe. ^^

von Stefan S. (sschultewolter)


Lesenswert?

TQFN/SOIC/DIP sind die Bauformen der ICs. DIP ist für Lochrasterplatinen 
nutzenbar oder auf Steckbrettern. Die anderen sind deutlich kleiner.

Teensy sind okay. Habe keinen, jedoch fast baugleiche aus der Bucht.

Teensy 2.0, der wäre für dich perfekt.

von Silent S. (snooc)


Lesenswert?

Alles klar, verstehe!


Ich muss gestehen dass ich schön langsam aber zum Dragon 
(http://store.atmel.com/PartDetail.aspx?q=p:10500053#tc:description) 
tendiere.

Der würde so ziemlich alles können und kostet bei reichelt.de knappe € 
50,- 
(http://www.reichelt.de/Programmer-Entwicklungstools/AT-AVR-DRAGON/3/index.html?&ACTION=3&LA=5&ARTICLE=97200&GROUPID=2969&artnr=AT+AVR+DRAGON)

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.