Hallo, ich beschäftige mich zum ersten Mal mit den AVR Microcontrollern, speziell mit dem ATMEGA8. Ich habe den Prozessor mit der seriellen Schnittstelle des Rechners verbunden. Die Daten kommen auch an, sind aber nicht lesbar! Ich vermute es stimmt etwas mit dem Timing nicht oder die Bits sind verschoben! Die Schnittstelle ist mit 9600 8N1 im HyperTerminal konfiguriert, im Atmel: #define F_CPU 8000000UL // 8 MHz #define BAUD_RATE 38400 UCSRB=(1 << TXEN); UBRRL=(F_CPU / (BAUD_RATE * 16L) - 1); Zwischen dem Atmel und dem PC ist ein MAX232 als Schnittstellenwandler eingesetzt. Geschickt werden an den PC nur Zahlen heraus kommen z.B. die Hex Werte: 20,94,54,39 ... also alles Andere nur nicht das was ich schicke! Hat jemand eine Idee, was nicht stimmt, oder woran es liegen kann, und wie ich das Problem lösen kann? Viele Grüße Volker
es wäre interessant zu wissen, was du schickst. Zeige mal ein wenig Code. Das Benutzen von Glaskugeln zu Ostern ist Blasphemie.
Ich glaub nicht, dass das dein gesamter Code ist. Muss an Zeile 42 liegen.
Volker Knobe schrieb: > Die Schnittstelle ist mit 9600 8N1 im HyperTerminal konfiguriert, im > Atmel: > #define F_CPU 8000000UL // 8 MHz > #define BAUD_RATE 38400 Ja wasn nu? 9600 oder 38400?
Hi
>#define F_CPU 8000000UL // 8 MHz
Wenn die 8Mhz vom internen RC-Oszillator kommen, nicht verwunderlich.
MfG Spess
Volker Knobe schrieb: > Die Schnittstelle ist mit 9600 8N1 im HyperTerminal konfiguriert, im > Atmel: > #define F_CPU 8000000UL // 8 MHz > #define BAUD_RATE 38400 Dir sollte klar sein das nur Datenmüll ankommen muss, wenn beide Schnittstellen mit unterschiedlicher Baudrate arbeiten.
Volker Knobe schrieb:
> UBRRL=(F_CPU / (BAUD_RATE * 16L) - 1);
kann der compiler das? UBBRL ist ein 8bit register, du willst 16 bit
laden.
das klappt vllt mit der datenrate, aber sicher nicht garantiert mit
jeder.
die inverter hat jeder pegelwandler für die serielle schnittstelle integriert... machs doch nicht so kompliziert.
Hallo, sorry, das 38400 war flasch, war noch von einem Versuch. Es war der MAX232 schuld, der hat wohl einen Macken. Nach dem Tausch gegen einen neuen funktioniert das wunderbar :-) Danke trotzdem für die Hilfe, prima Forum :-) Gruß Volker
Spendiere den seriellen Datenleitungen 12V- oder 15V-VDRs (Überspannungsableiter), dann leben die Pegelwandler länger. So lange es nur leicht ausgauschbare MAXe sind, geht es noch, was aber, wenn er auf dem Mainboard sitzt? Oftmals wird zuerst eine Datenleitung verbunden, dann Gnd. Potentialunterschiede werden über Signalleitungen ausgeglichen, das geht oft nicht gut. Ein häufig übersehener Punkt ist bei HyperTerminal das Handshake = none.
Hallo, danke für den Tip. Das Problem am Anfang ist halt immer, das man nie weiß wo man mit der Fehlersuche ansetzten soll. Neuer Microcontroller, neue Kabel, neuer Pegelwander, neuer Programmer, neues Programm... Wenn es einmal läuft hat man eine Referenz wo man vergleichen kann . Gruß Volker
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.