ich geh jetzt mal davon aus, dass du die Schaltung richtig aufgebaut hast, mit MAX232 oder ähnlich
welchen Quartz oder Quartzoszillator verwendest du am µC und hast du diesen per Fusebits aktiviert?
hast du am PC dieselbe Baudrate angegeben?
Hallo,
habe einen µC (AVR AT90S8535) und möchte damit Daten an meinen PC über die Serielle senden.
Habe mir also erstmal ein ganz einfaches Programm geschrieben, in dem ich ein Byte andauernd sende. Allerdings kommt am PC nicht das an, was ich eigentlich sende.
Hier der Code:
Und ein paar meiner Ergebnisse, wobei oft zwei verschiedene Bytes in unterschiedlichen Reihenfolgen empfangen werden:Code:.INCLUDE "D:\Programme\AVR Studio\Appnotes\8535def.inc" .DEF temp = R16 .DEF data = R17 .EQU clock = 8000000 .EQU baud = 2400 .EQU ubrrval = clock/(baud*16)-1 reset: ;Stackpointer initialisieren ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ;LED konfiguration ldi temp, 0x04 out DDRA, temp ldi temp, 0x00 out PORTA, temp ;Baudrate einstellen ldi temp, ubrrval out UBRR, temp ;Uart RX und RXInt aktivieren sbi UCR, TXEN ldi data, 0x1C loop: sbis USR, UDRE ;überspringe wenn bereit rjmp loop out UDR, data rjmp loop
Register im Programm -> Empfangen am PC
0F -> C8 oder D8
0E -> 88 oder 98
0D -> 48 oder 58
0C -> 08 oder 18
1F -> E4 oder F4
1E -> 44
1D -> A4 oder B4
1C -> 84
Kann auch noch weitere Ergebnisse ermitteln, wenn es helfen würde.
Hat vielleicht jemand eine Idee? Könnte das an der Hardware, Software oder an der Konfiguration liegen?
Danke im Voraus,
eXe
ich geh jetzt mal davon aus, dass du die Schaltung richtig aufgebaut hast, mit MAX232 oder ähnlich
welchen Quartz oder Quartzoszillator verwendest du am µC und hast du diesen per Fusebits aktiviert?
hast du am PC dieselbe Baudrate angegeben?
Die Baudrate ist richtig eingestellt.
Soweit ich weiß, ist ein 8MHz Quartz drauf, genaueres kann ich noch nicht sagen, da ich das Ding nicht selbst zusammengebaut habe. Kannst du mir denn mal sagen, wie ich das mit den Fusebits aktiviere bzw. welches ich ein-/ausstellen muss. Habe im Datenblatt irgendwie nichts gefunden.
Gruß,
eXe
da benutzt du am besten die Forensuche, da findest du sicher was, in einem der letzten Threads darüber hat Frank das ganze sehr schön erklärt(und mit Bildern verdeutlicht)
Erstmal danke für die Antworten. Habe es jetzt hinbekommen.
Es lag an dem Quartz (war ein guter Tipp), das war nämlich ein 7,3728MHz und kein 8MHz. Nachdem ich den Konstrukteur gefragt hatte wusste ich dann, wo dieser zu finden war und habe es dann gesehen.
Habe noch etwas zu ergänzen:
Der AVR AT90S8535 läuft immer mit der Frequenz, die per Quartz reingeht. Da lässt sich also nichts mit Fusebits rumstellen.
Gruß,
eXe
Lesezeichen