moinsen.
ich habe folgenden plan:
ein atmega soll langfristig midi (31250 Baud) verarbeiten. bin gerade
dabei mich da ran zu tasten. dazu habe ich einen 4 MHz Quarzoszillator
dran gehänt und den µC entsprechend gefused. Um erstmal zu schauen ob
uart überhaupt etwas macht, dachte ich, gebe ich mir das RXC (Uart
receive complete) an nem port mit led aus und so könnte ich sehen, dass
uart was empfangen hat.
nun, es funktioniert nicht!!!
Hab mal am oszilloskop ausgemessen, und der oszillator schwingt
tatsächlich mit der angegebenen Frequenz. daran kanns also nicht liegen.
ich muss halt auch sagen, ich bin jetzt noch relativ neu in dem thema.
wahrscheinlich liegt der fehler in dem assembler-code. könnt ihr mir nen
tipp geben?
hier ist der code:
Hi
>ldi temp, 0b00000111 ;läd das obere Baudratenregister>out UBRRH, temp>;>ldi temp, 0b11111111 ;läd das untere Baudratenregister>out UBRRL, temp
Was soll das für eine Baudrate werden?
MfG Spess
matze schrieb:> ein atmega soll langfristig midi (31250 Baud) verarbeiten. bin gerade> dabei mich da ran zu tasten. dazu habe ich einen 4 MHz Quarzoszillator> dran gehänt und den µC entsprechend gefused. Um erstmal zu schauen ob> uart überhaupt etwas macht, dachte ich, gebe ich mir das RXC (Uart> receive complete) an nem port mit led aus und so könnte ich sehen, dass> uart was empfangen hat.> nun, es funktioniert nicht!!!> Hab mal am oszilloskop ausgemessen, und der oszillator schwingt> tatsächlich mit der angegebenen Frequenz. daran kanns also nicht liegen.
Wenn du schon einen Oszi zu deiner Verfügung hast, dann wäre es ja wohl
mehr als logisch, einfach mal eine kleine Anwendung zu programmieren,
die über einen Pin einen einfachen Vmax-Toggle ausgibt und über die UART
ein bestimmtes Muster. Dann braucht man nur diese beiden verschissenen
Signal zu oszillografieren und weiß sofort folgendes:
1) Stimmen meine Fuse-Settings
2) Ist das UART Taktsystem korrekt initialisiert
> ich muss halt auch sagen, ich bin jetzt noch relativ neu in dem thema.> wahrscheinlich liegt der fehler in dem assembler-code.
Nein, der Fehler liegt mit an Sicherheit grenzender Wahrscheinlichkeit
daran, daß der Code nicht von dir geschrieben wurde und du nicht den
Hauch einer Ahnung davon hast, was er tut.
Ändere das.
@Matze
Daß der Oszillator schwingt, ist noch keine Garantie dafür, daß die
Fuse-Bits richtig szehen. So ein Oszillator schwingt los, sobald
die Betriebsspannung dran ist. Ich nehme doch an, daß Du einen
solchen Kollegen verbaut hast?
https://de.wikipedia.org/wiki/Datei:Quarzoszillator.jpg
MfG Paul
c-hater schrieb:> Nein, der Fehler liegt mit an Sicherheit grenzender Wahrscheinlichkeit> daran, daß der Code nicht von dir geschrieben wurde und du nicht den> Hauch einer Ahnung davon hast, was er tut.
Falsch. Ich habe ihn geschrieben. ich weiß auch was er tuen sollte. und
jetzt tut er auch was er soll. spess53 war ganz recht gelegen. da lag
der fehler. da hatte ich mich verrechnet. vielen dank dafür spess53. hat
mir wirklich viel geholfen dieser kleine tipp.
@c-hater: du solltest mal echt deine einstellung überdenken. gleich mal
leute der völligen unwissenheit bezichtigen ist ja wohl das letzten. ich
meine ich fange gerade erst damit an, ja aber ich hab mir den code nicht
zusammengeklaut sondern selbst überlegt! ich muss gerade an mir halten,
dass ich nicht ausfallend werden!
Paul Baumann schrieb:> @Matze> Daß der Oszillator schwingt, ist noch keine Garantie dafür, daß die> Fuse-Bits richtig szehen.
ne, das ist mir klar. aber ich kann die fuse-bytes ja auch lesen und da
hat schon alles gepasst. war ja letztlich nicht der fehler.
>So ein Oszillator schwingt los, sobald die Betriebsspannung dran ist.
jup hab ich auch gemerkt...
Ich nehme doch an, daß Du einen
> solchen Kollegen verbaut hast?> https://de.wikipedia.org/wiki/Datei:Quarzoszillator.jpg
ne, ich hab nen quarz auf den sockel vom stk500 gesteckt.