Forum: Mikrocontroller und Digitale Elektronik Software - UART "witziges" Phänomen


von Herbert (Gast)


Lesenswert?

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

von Thorsten (Gast)


Lesenswert?

Fuses?

von Sauger (Gast)


Lesenswert?

Moin,

an einer unzuverlässigen Taktquelle?

MfG

von Micha (Gast)


Lesenswert?

Du verwendest hoffentlich nicht die interne Taktquelle, oder?

von Krapao (Gast)


Lesenswert?

> 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?

von Herbert (Gast)


Lesenswert?

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.

von Herbert (Gast)


Lesenswert?

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. :/

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Angehängte Dateien:

Lesenswert?

???
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.

von Herbert (Gast)


Lesenswert?

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?

von Udo S. (urschmitt)


Lesenswert?

Vieleicht bringst du mal Fakten.
Boudrate?
Was für eine externe Taktquelle?
Taktfrequenz?
Eingestellte Vorteiler?
Initialisierungscode der Schnittstelle
...

von Stefan E. (sternst)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Klaus D. (kolisson)


Lesenswert?

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.

von Herbert (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Herbert schrieb:
> Beiden Ports PD4 (OC1B) und PD5 OC1A für eine Software - UART.
Und die andere, die da im Gespräch war?

von Herbert (Gast)


Lesenswert?

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 =)

von Klaus D. (kolisson)


Lesenswert?

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

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Wenn du mit WinAVR und AVRDude proggst, kannste im makefile einstellen, 
dass er auch jedesmal die im makefile hinterlegten Fuses flasht.

von Klaus D. (kolisson)


Lesenswert?

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.

von spess53 (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.