Hallo,
ich hatte vorher einen ATmega16 verwendet, habe ihn nun durch einen
ATmega644PV 10PU ausgetauscht.
Die UART Programmierung habe ich wie folgt angepasst, da der ATmega16
nur einen, der ATmega644 2 UARTs besitzt:
Im AVR Studio habe ich ATmega16 durch ATmega644 getauscht. Ich hatte es
auch mal mit ATmega644P versucht, ging aber auch nicht.
Beim Debuggen sehe ich folgendes:
Wenn ich im HyperTerminal einen Buchstaben eingebe, passiert schon
nichts.
Ich weiß nicht woran es liegen könnte, da vorher doch alles geklappt
hat.
Nein, ich habe nur das geändert, was oben steht.
ISR? Hatte ich vorher auch nicht drin.
Ich habe nur noch ein main-Programm, dass die init aufruft und in der
while(1)-Schleife immer sowas wie char_USART('k'); stehen hat.
Aber an der Stelle UDR0 = c sehe ich beim Debuggen, dass UDR0 IMMER auf
Null bleibt.
Also ich habe schon alle anderen Sachen getestet (SPI, TWI), das
funktioniert alles wie beim ATmega16. Hat jemand vielleicht noch eine
Idee, was ich noch probieren könnte??
@Jürgen
wenn dein AVR keine Daten empfängt, was soll dann passieren wenn du im
HyperTerminal einen Buchstaben eintippst?
Hast du an TX mal gemessen ob da überhaupt was rauskommt, wg.
Baudrate/CKdiv-Fuses!
Sascha
Sascha Weber schrieb:> Hast du an TX mal gemessen ob da überhaupt was rauskommt, wg.> Baudrate/CKdiv-Fuses!
Hm ok, habe ich mal getan jetze.
Ich sende in einer while(1)-Schleife ständig die 0x55.
Anschließend 2ms pause.
Während der Pause ist TX HIGH.
Die 8 Bits sendet er innerhalb 1ms.
Ich habe aber eigentlich 115.2k Baudrate eingestellt.
Habe die ganauso wie beim ATmega16 eingestellt.
Irgendwas passt hier nicht oder?
CKDiv/8 ist angekreuzt.ich mach mal den Haken weg und sage gleich, was
bei rauskommt
Hallo,
> Quarz: 14,7456 MHz
und
> ATmega644PV 10PU
das passt so nicht zusammen. Dieser Controller ist für max. 10MHz
spezifiziert; siehe Datenblatt (es kann aber trotzdem gehen ...).
Wie stehen die restlichen Fuse-Bits? Die vom Mega16 können beim Mega644
nicht passen. Der beliebte Fehler "ClkDiv8-Fuse" wurde bereits gefunden
:-)
Stehen die CLKSEL-Fuses auf "externer Quarz"? Ansonsten ist der interne
Takt aktiv (8 MHz RC-Oszillator).
holger schrieb:> Dann läuft er noch nicht mit dem Quarz. Und nochmal an die Fuses;)
Okay, das war wohl korrekt.
Hatte ich eigentlich schon eingestellt, keine Ahnung, warum was wieder
auf Intern gestellt war.
Ich bekomme schon ein paar Werte hin, aber noch nicht alles. Aber sieht
schon wesentlich besser aus und ein paar Wörter sind sogar lesbar.
Ich probier mal weiter, ich bin zuversichtlich es jetzt hinzubekommen
;-)
AVRuser schrieb:> das passt so nicht zusammen. Dieser Controller ist für max. 10MHz> spezifiziert; siehe Datenblatt (es kann aber trotzdem gehen ...).
Also ich habe das Datenblatt zu
164A/164PA/324A/324PA/644A/644PA/1284/1284P vor mir liegen. Das müsste
wohl auch auf den ATmega644PV 10PU zutreffen??
In dem Datenblatt, was ich hier habe, ist sogar die UBRR-Einstellung für
14.7456 MHz in Table 18-11 aufgeführt
So, also die Übertragung von Großbuchstaben und von Zahlen funktioniert
nun. Ich habe es im HyperTerminal so, wenn ich einen Buchstaben
eintippe, dass dieser dann direkt wieder in UDR0 geschrieben wird.
Hat jemand eine Idee, wieso es nicht für Kleinbuchstaben funktioniert?
Es geeeeeht! Der Mist geht!
Ich schwörs euch, eben konnte er NUR Großbuchstaben verarbeiten.
Ich habe nichts verändert, nur ein bisschen probiert.
Aber es geht.
Hoffe das war nur eine Ausnahme. Vielleich muss sich der Mikrocontroller
ja erst an mich gewöhnen :D
Jürgen Hems schrieb:> Also ich habe das Datenblatt zu> 164A/164PA/324A/324PA/644A/644PA/1284/1284P vor mir liegen. Das müsste> wohl auch auf den ATmega644PV 10PU zutreffen??
Nein, Du hast den 644PV. Der ist nur bis 10 MHz spezifiziert. Du
betreibst den weit außerhalb seines zulässigen Bereiches. Eine korrekte
Funktion ist so eher Glückssache.
http://www.atmel.com/dyn/resources/prod_documents/8011S.pdf
("Speed Grades" auf der ersten Seite)