Forum: Mikrocontroller und Digitale Elektronik Probleme mit Uart (AVR Tutorial)


von Oliver D. (smasher)


Lesenswert?

Hallo,

ich habe die Schaltung aus dem Tutorial 1:1 nachgebaut und den quellcode 
abgetippt und auf mein myavr board geladen.

Leider tut sich weder in hyper terminal noch in HTERM irgendwas.

Wo könnte da der Fehler liegen?
Schaltung habe ich schon mehrfach kontrolliert.


Danke.

von Oliver D. (smasher)


Lesenswert?

Muss ich für die verwendung des externen quarzes noch ein fusebit 
umsetzen?

(täte mich dann aber wundern, wenn ihr es nicht erwähnt hättet)

von gast (Gast)


Lesenswert?


von Oliver D. (smasher)


Lesenswert?

Toll.

Das bringt mich ja unglaublich weiter.

Ich schätze mal, das mit dem Beispielcode aus dem tutorial keine 
fusebits gesetzt werden.

Mit meinem My AVR Prog Tool, gibt es die möglichkeit das zu tun, ich 
habe aber keine Ahnung, was ich dafür einstellen muss.


Weiß das jemand?
Bei EXT: soll noch ein zweistelliger HEX wert eingetragen werden.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Oliver D. wrote:
> Muss ich für die verwendung des externen quarzes noch ein fusebit
> umsetzen?

Selbstverständlich.

> ich habe die Schaltung aus dem Tutorial 1:1 nachgebaut und den quellcode
> abgetippt und auf mein myavr board geladen.

Verstehe ich nicht. Wie kannst du die Schaltung nachgebaut haben, wenn 
du das  myavr Board verwendest?

> Ich schätze mal, das mit dem Beispielcode aus dem tutorial keine
> fusebits gesetzt werden.

Korrekt. Per Code kann man keine Fuses (Fusebits) setzen. Das Setzen von 
AVR Fuses macht man in der Software des AVR ISP Programmers.

In deinem Fall wäre das wohl das "My AVR Prog Tool". Wie das zu bedienen 
ist, sollte im Handbuch stehen.

Empfehlungen zur Einstellerei der Fuses ("Gib mal einen HEX-Wert!") sind 
die "zweitliebsten" Antworten hier im Forum.

Sie sind nämlich sehr dankbare Antworten, weil man weit ausholen darf, 
um jemanden was zu erklären, was dieser nicht schafft, im Datenblatt 
oder Tutorials nachzulesen.

Und weil man mit hoher Misserfolgsrate bei nicht peinlich genauer 
Befolgung und Unklarheiten einen fremden AVR schrottet und dies 
anschliessend im Forum unter die Nase gerieben bekommt.

von Oliver D. (smasher)


Lesenswert?

Ich habe die Schaltung auf einem BReadboard nachgebaut.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Welche?

Diese
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Der_Mikrocontroller

Mit dem "AT90S4433" oder mit dem "Atmega8"?

Und mit dem "Quarz statt Quarzoszillator" oder mit dem 
"Keramikschwinger/Resonator- statt Quarz/Oszillator"? Wieviele MHz?

von Oliver D. (smasher)


Lesenswert?

Also ich habe folgendes Schaltung nachgebaut:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

Direkt oben ist ne Schaltung mit dem RS232 aufgebaut.
Diese habe ich nachgebaut.

Angeshclossen ist das ganze auf einem MY avr Board V 1.52. Leider steht 
auf dem Quarz keine Frequenz, ich denke aber das es ca. 4mhz sind.

von Oliver D. (smasher)


Lesenswert?

Übrigens, mein "schul" board, funktioniert einwandfrei.

Da haben wir einen AT89S52 sowie eine selbstgebaute Platine fürs UART.
Die funktioniert prima, allerdings habe ich nur gelernt das ganze in C 
zu programmieren...
So langsam wollte ich aber mal mit assembler anfangen und habe mich 
daher für das myavr und den atmega8 entschieden.

von Karsten D. (karstendonat)


Lesenswert?

Erstmal ein Hinweis zur Quarzfrequenz:

für UART nur Baudratenquarze benutzen, sonst gehen nur wenige unschöne 
Baudraten (hab bei meinem aktuellen Projekt auch nen 16MHz wieder 
runtermachen müssen ;-) :
 1,8432 MHz
 3,6864 MHz
 7,3728 MHz
11,0592 MHz
14,7456 MHz
18,4320 MHz

(Bezugsquellen wären CSD für "normale Größen" oder Farnell/RS [z.B. 
Rakon, Fox] für kleine flache SMDs)

Fuses ändern mit dem myAVR geht mit dem Workpad:

kleines Copy/Paste aus dem Bootloaderartikel
http://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger

Der myAVR Dongle unterstützt leider keine Fuses mit AVRDude. Abhilfe 
liefert hier jedoch das myAVR Worpad Plus. Die Demo-Version (reicht 
hierfür) kann unter

http://www.myavr.de/download/myAVR_WorkpadPLUS_Demo.exe - myAVR Workpad 
Plus Demoversion

heruntergeladen werden. Nach dem Installieren und starten im Menü Extras 
– Fuse- und Lock-Bits wählen. Das Programm ermittelt automatisch den 
aktuellen Status. Je nach Controller steht der Bootloader Support unter 
High oder Extended Fuses.

Du musst auf externen Quarz umstellen. Hab das myAVR Board gerade nicht 
hier, deshalb mal die Bezeichnung ausm AVR Studio, sollte aber ähnlich 
sein:

Ext. Crystal/ Resonator Low|Medium|High Freq

Low|Medium|High hängt von der Frequenz ab. Da steht ne Tabelle im 
Datenblatt. Bei höhren Freuqnzen kannst noch die CKOPT fuse aktivieren.

Ciao

Karsten

von Karsten D. (karstendonat)


Lesenswert?

Ob ASM oder C ist eh immer ne Diskussion für sich. Hat beides 
Berechtigung.

Ich benutze für den UART die Lib von Peter Flury
http://jump.to/fleury

Ist in C geschrieben und liegen auch schöne Beispiele dabei. Auch wie 
man Daten direkt ausm Flash sendet um RAM zu sparen.

Karsten

von Oliver D. (smasher)


Lesenswert?

Jo, interessant währe für mich mal, wie man Z.B. mit dem SP12 von KEN 
Huntington die Fusebits setzen kann.

Wo man halt was einstellen muss....


Gut währe auch, wenn man das mal im AVR Tutorial eintragen würde.
Ich kann mir nicht vorstellen, das man da als Anfänger alleine drauf 
kommt, das soetwas gemacht werden muss und vor allem wie.

Die frage sollte daher also schon mehr als 1 mal aufgetaucht sein, warum 
das programm nicht funktioniert.

von Oliver D. (smasher)


Lesenswert?

ALso ich habe jetzt mit MYAVR Workpa Demo die Fusebits gelesen
(Danke für den Tipp mit der software!)

Es stand auf 1MHZ internal irgendwas.

Jetzt habe ich auf EXT. Crystal/resonator MED FREQ, start_up time: 
16CK+4ms gestellt.
Es gibt da mehrere einstellungen, auch mit 1k CK +0ms.

Ich probiers erstmal so.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Oliver D. wrote:

> Gut währe auch, wenn man das mal im AVR Tutorial eintragen würde.
> Ich kann mir nicht vorstellen, das man da als Anfänger alleine drauf
> kommt, das soetwas gemacht werden muss und vor allem wie.

Hmm, grundsätzlich sollte jemand, der dem AVR Tutorial von Anfang an 
gefolgt ist, an dieser Stelle keine Probleme mehr haben. Die ganze 
Notwendigkeit der Einstellerei der Taktquelle, wird in der ersten 
Lektion bzw. der Einführung in den Mikrocontroller erklärt. Mit Hilfe 
der Verweise auf den Artikel AVR Fuses und das Datenblatt des AVRs 
müsste eine Einstellung der Fuses gelingen.

Kritisch ist die Angabe mitten drin als eine Art Kochrezept ("Trage HEX 
xy als Fuses ein"). Dazu gibt es technisch gesehen eine zu grosse Anzahl 
von Programmer/Program Tools Kombinationen und möglichen 
Testboards/AVRs. Und in Folge würden sich IMHO bestimmt mehr Leute 
melden, dass ihr Testboard so nicht funktioniert bzw. dass es jetzt gar 
nicht mehr funktioniert, als andersrum Leute, die nicht wissen, was sie 
eintragen sollen und denen man ihre Hardware/Software "aus der Nase 
ziehen kann".

Bei einem kommerziell vertriebenen Board würde ich erwarten, dass in 
dessen Anleitung drin steht, mit was man die Fuses auf dem Board 
programmiert und welche Werte grundsätzlich in Betracht kommen (Art der 
Taktquelle). Dennoch - die aktuellen Werte für den konkreten AVR, den 
der User eingesetzt hat, muss der User selbst aus dem Datenblatt des AVR 
herausfinden oder der Hersteller macht eine Tabelle o.ä. für alle auf 
seinem Board einsetzbaren AVRs.

von Oliver D. (smasher)


Angehängte Dateien:

Lesenswert?

Hmm,

ich habe mir das irgendwie ein bischen einfacher vorgestellt :(

Ich habe mal ein oszilloskop am ausgang des uC an TXD angeschlossen.
Es kommt also ein konstantes signal heraus.

Kann der Fehler nun nurnoch an meiner MAX232 schaltung liegen?
(neben dem falsch eingestellten quarz takt?)

Achja, dem tutorial bin ich übrigens von anfang an gefolgt!

von Daniel R. (sliderbor)


Lesenswert?

Oliver D. wrote:
> Hmm,
>
> ich habe mir das irgendwie ein bischen einfacher vorgestellt :(
>
> Ich habe mal ein oszilloskop am ausgang des uC an TXD angeschlossen.
> Es kommt also ein konstantes signal heraus.
>
> Kann der Fehler nun nurnoch an meiner MAX232 schaltung liegen?
> (neben dem falsch eingestellten quarz takt?)

Dann mess doch mal, was hinten am MAX232 rauskommt. Und dann nochmal die 
andere Richtung. Was ich bei anderen schon öfter gesehen habe ist, dass 
am MAX232 die Kondensatoren falsch angeschlossen oder verpolt waren.

von Oliver D. (smasher)


Lesenswert?

Hmm erstmal habe ich gerade das problem, das der uC nicht mehr reagiert.

Laut dem AVR Fuses tutorial, habe ich auf 0000, also external clock 
gestellt.
Nun habe ich keine verbindung mehr zum chip, trotzdem ein quarz drauf 
ist :(

bissl komisch ne?

von Oliver D. (smasher)


Lesenswert?

So habe nen neuen chip drinne.


So jetzt mal das oszilloskop am ausgang des Max.
Ausgangspegel ca. 8V (sollte das nicht mehr sein?)
Netzteil auf exakt 5V.

Das signal sieht ähnlich dem des Txd am uC.

von Oliver D. (smasher)


Lesenswert?

Also der Pegel ist wohl in Ordnung.
An meinem anderen 8051er Board habe ich denselben ausgangspegel und es 
funktioniert gut.

von Daniel R. (sliderbor)


Lesenswert?

Wie sieht es in der anderen Richtung aus? Was für Pegel liegen am MAX232 
am Eingang an (also das Signal vom PC) und was liefert der MAX232 an den 
uC?

Was hast du für ein Kabel verwendet? Nullmodem oder 1:1? Hast du GND vom 
Kabel/RS232-Buchse verbunden?

von Oliver D. (smasher)


Lesenswert?

Soo, die schaltung aus dem tutorial ist der übeltäter.
Entweder ist mein bread board kaputt oder ich spinne ;)

Mein 8051er funktioniert an der schaltung ebenfalls nicht.

Mit dem AVR an meiner gehts nun endlich!

Zwar kommt momentan nur Mist heraus, aber lieber grob unkorrekt als 
komplett daneben ;)

Ich denke es liegt nun nurnoch am quarz, denn ich bekomme momentan eine 
konstante zeichenfolge geschickt.

HHÈÈhhHHHHHHhHHHHHHHHHHHHHHHHHHHHHHÈ
hhhHHHHHhhHHHHHHhHHHHHHH6hhhHHHHHHHH 
hhhHHHH
hhhHHHHHhhHHHHHHhHHHHHHH6HHHHHHÈÈhhhHHHHHHHHHÈÈÈ 
hhhHHHHH

So siehts aus ;)

von Oliver D. (smasher)


Lesenswert?

Ja, die beiden masssen sind verbunden.
1:1 kabel!

von Karsten D. (karstendonat)


Lesenswert?

Die Schaltung ist schon ok so. Da kann man ja auch kaum was falsch 
machen. Probleme könnte das Vertauschen von TX und RX geben.

Oder Du hast die Anschlüsse vertauscht. Man kann ja bei vielen RS232 ICs 
mehrere Leitungen transferieren.

Hast du 100nF Keramisch am 5V Pin?

Karsten

von Oliver D. (smasher)


Lesenswert?

Hi, Leitungen nicht vertauscht und 100nF Keramisch an 5V.


Ich habe nun mit my AVR Quickprog die möglichkeit gefunden, den externen 
Takt zu verwenden.
Da kann ich per mausklick den externen quarz aktivieren.


Mit dem Programm HTERM bekomme ich dann auch datengewusel angezeigt.
Bei 9600Baud.

Mit Hyper terminal klappts nicht, da hängt sich hyper terminal bzw. der 
pc auf. (bei 9600)
Bei 1200 bekomme ich datengewusel angezeigt!

Woran könnte das denn liegen?
Und wie kann ich testen ob der uC nun mit dem externen takt arbeitet?

von Oliver D. (smasher)


Lesenswert?

aaaaaaaaaaaaah,
endlich.

Es funktioniert.


Bei 9600 Baud klappts nicht richtig.
Ich habe im quellcode mal auf 1200 gestellt.
Klappt nicht so gut.

Von 4Mhz bin ich dann mal auf 3,8Mhz gegangen und es klappt einwandfrei!


Das 200khz so einen Unterschied machen ;)


Danke für die Tipps. Ich werde nun noch versuchen die Schaltung aus dem 
Tutorial hinzubekommen.

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.