Guten Abend, ich hab die SUART eines ATmega644 Programmiert. Nun das beängstigende: ATmega644 (Modell 1) funktioniert in Schaltung, d.h. der gewünschte Text wird ordnungsgemäß übermittelt. ATmega644 (Modell 2) mit selben Programm geflasht, jedoch übermittelt sinnlose Zeichen. Bei Modell 3 wieder das Selbe. Warum funktioniert es bei dem ersten und bei den anderen nicht? Habe den gleichen ATmega644 (genau 644 20PU) genommen und jeweils mit selben Programm geflasht. Komisch, woran kann das liegen? O.o MfG Herbert
Du verwendest hoffentlich nicht die interne Taktquelle, oder?
> sinnlose Zeichen Ein starkes Indiz für knapp danebenliegende Baudrate! Möglicherweise Abweichungen in der Taktquelle, insbesondere bei internem Ozillator. Hast du mal die Bit-Zeiten mit dem Oszi ausgemessen, um auf die reale Baudrate zu kommen? Oder alternativ die Pulsdauer einer Blink-LED an den verschiedenen AVR Exemplaren verglichen?
Fuses sind richtig gesetzt. Verwende einen externen Taktgeber. Krapao schrieb: > Hast du mal die Bit-Zeiten mit dem Oszi ausgemessen, um auf die reale > Baudrate zu kommen? Oder alternativ die Pulsdauer einer Blink-LED an den > verschiedenen AVR Exemplaren verglichen? Habe ich noch nicht probiert. Aber danke für den Tipp.
versteh nicht woran es liegen kann O.o vl. hilft das ja weiter: wenn ich die zweite Software UART verwende, dann liefert jeder Mikrocontroller das richtige Ergbnis. Nur hald bei der ersten Schnittstelle nicht. :/
??? 1. und 2. Software UART? Du meinst die USARTS die in Hardware vorhanden sind nehm ich mal an? Im Anhang maln Baudratenberechner, alles um 0% geht in Ordnung.
Ja ich meinte die SUARTS in der Hardware. Die Baudrate müsste richtig eingestellt sein, sonst würde ja auch die SUART an PD4 das falsche Ergebnis liefern. Diese funktioniert jedoch immer, nur die auf PD5 weist nur das richtige Ergebnis auf, wenn ich den ersten Mikrocontroller verwende. Dass es an der Hardware liegt, sprich am MAX232 und deren Beschaltung schließe ich aus, da es ja mit dem ersten Mikrocontroller funktioniert. Hat noch jemand eine Idee?
Vieleicht bringst du mal Fakten. Boudrate? Was für eine externe Taktquelle? Taktfrequenz? Eingestellte Vorteiler? Initialisierungscode der Schnittstelle ...
Herbert schrieb: > Ja ich meinte die SUARTS in der Hardware. > Die Baudrate müsste richtig eingestellt sein, sonst würde ja auch die > SUART an PD4 das falsche Ergebnis liefern. Diese funktioniert jedoch > immer, nur die auf PD5 weist nur das richtige Ergebnis auf, wenn ich den > ersten Mikrocontroller verwende. Weder PD4, noch PD5, sind TXD oder RXD Pins für irgendeinen der Hardware-UARTs. Bleibt also immer noch die Frage: was genau meinst du überhaupt?
Herbert schrieb: > jedoch übermittelt sinnlose Zeichen. Immer andere oder immer die selben Wie sieht es mit der CLKDIV Fuse aus? > wenn ich die zweite Software UART verwende Welche Zweite? Und welches ist die Erste? > Ja ich meinte die SUARTS in der Hardware. Was denn jetzt? Soft-UART oder Hardware? Zeig mal dein Programm...
Herbert schrieb: > Ja ich meinte die SUARTS in der Hardware. Das versteht sich wirklich sehr schwer. Soft Uarts in der Hardware ? Hmmm ? Irgendwie konfus. Allerdings gibt es ja verschiedene Varianten des M644. Der 644PV hat ja tatsächlich 2 Hardware Uarts. K.
Sorry, für die Unklarheiten, verwende den ATmega644 20PU. Verwende die Beiden Ports PD4 (OC1B) und PD5 OC1A für eine Software - UART. Weiteres verwende ich einen externen Quarz: 3,6864 MHz. Als Baudrate nehme ich 9600.
Herbert schrieb: > Beiden Ports PD4 (OC1B) und PD5 OC1A für eine Software - UART. Und die andere, die da im Gespräch war?
Funktioniert nun, die Fuses waren falsch gesetzt. Hätte gedacht, dass diese Einstellung bleibt und bei jedem programmiern automatisch gesetzt werden, aber anscheinend muss man für jeden Mikrocontrolle die Fuses manuell setzen. Danke für die zahlreichen Antworten. Super Forum =)
Das war doch klar , oder ? Da wir alle nur mit Wasser kochen wurde mir das Ergebnis bei deinem vorletzten Post schon klar. In Bascom gibt es eine Option, wo man die Fuseeinstellungen im Programmcode hinterlegen kann. Dann wird es beim Flashen gleich mit erledigt. ob es das bei deiner programmiersprache auch gibt weiss ich nicht. Klaus
Wenn du mit WinAVR und AVRDude proggst, kannste im makefile einstellen, dass er auch jedesmal die im makefile hinterlegten Fuses flasht.
gute Info Martin, ich mach zwar nix mit WinAVR aber es hätte mich gewundert wenn Bascom etwas kann wovon die anderen nur träumen k.
Hi >In Bascom gibt es eine Option, wo man die Fuseeinstellungen im >Programmcode Und im AVR-Studio kann man ein Elf-File erstellen das Flash, EEPROM, Fusebits und Security-Bits enthält. MfG Spess
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.