Forum: Mikrocontroller und Digitale Elektronik ATMega32 Uart Fusebits bei 16MHZ


von Julius .F (Gast)


Lesenswert?

Hallo Leute,
ich bin neu hier. Habe aber schon ein wenig Erfahrung mit dem 
Programmieren.
Benutze das Funk avr evaluationsboard von pollin.
Angefangen hab ich mit einem ATMega8 und bin jetzt auf einen ATMega32 
umgestiegen.
Ab da gingen die Probleme mit der Uart los.
Ich betreibe den ATmega32 mit 16MHz Quartz und möchte eine BAUD von 9600 
einstellen um Messwerte von meinem I2C-Bus auf meinem PC auszugeben. 
Später möchte ich auf eine BAUD von 115200 wechseln um ein Sim900 
anzusteuern. Die Funktionen zum Senden und Empfangen Funktionieren auch. 
Nur Sendet der ATMega32 auf einer BAUD von 600 und nicht auf einer BAUD 
von 9600.

Da kommt auch schon meine erste Frage kann ich eine BAUD von 115200 auf 
den ATMega32 einstellen? Also nur ob das auch geht ohne das ich Fehler 
auf der Uart bekomme.
Um die baut rate zusetzten benutze ich <util/setbaud.h> Bibliothek .

Da ich einen externen 16MHz Quartz hab muss ich wenn ich das richtig 
sehe, die Fusebits setzten.
Ich habe meinen Quartz auch mit einem Oszilloskop überprüft nur schwingt 
dieser nicht.
Ich kenne mich mit den Fusebits nicht aus.
In die Checkliste habe ich geschaut. 
http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART
Und Natürlich in den Artikel über die Fuses
http://www.mikrocontroller.net/articles/AVR_Fuses
Nur weiß ich nicht wie ich die Fusebits einstellen muss. Habe ich da 
etwas übersehen ?
Die Bits stehen auf Low Fuse 0xE1 und das High Fuse auf 0x99


Ich habe schon einen versuch mittels myAVR ProgTool V1.39 zumachen, 
jetzt habe ich den ersten ATMega32 verfused und kann ihn nicht mehr 
erreichen. (Einstellungen hab ich leider nicht mehr da ich viel zu 
schnell was hab aber nur etwas am Low Fuse geändert)
Könnte man diesen wiederherstellen? (Das ist aber erst mal nicht so 
wichtig)

Ich habe noch einen zweiten ATMega32 und möchte hier nun alles richtig 
machen.
Was muss ich Einstellen ?
Habe bei http://www.engbedded.com/fusecalc/ geschaut aber damit komme 
ich nicht klar.
Meine Idee Einstellung ist Low Fuse 0xDF und high 0x99
Also Ext. Crystal High Frequenz 16k CK ohne Start-up
Sehe ich das richtig oder brauche ich eine Start-up time?

Ich bitte um ein Paar Hilfreiche antworten :)

Vielen Dank Julius F.

von Georg G. (df2au)


Lesenswert?

Julius .F schrieb:
> Könnte man diesen wiederherstellen? (Das ist aber erst mal nicht so
> wichtig)
Ja. Vermutlich steht er auf "externer Takt" statt auf "externer Quarz". 
Also entweder einen beliebigen Takt an XTAL1 einspeisen oder per 
HV-Programmierung wieder beleben.

> Habe bei http://www.engbedded.com/fusecalc/ geschaut aber damit komme
> ich nicht klar.
Hmmm... also noch ausführlicher kann man es eigentlich nicht machen...

> Meine Idee Einstellung ist Low Fuse 0xDF und high 0x99
Gib das bei engbedded.com ein und du bekommst eine Warnung in ROT, dass 
das unglücklich gewählte Werte sind.

> Also Ext. Crystal High Frequenz 16k CK ohne Start-up
Das würde prinzipiell funktionieren.

> Sehe ich das richtig oder brauche ich eine Start-up time?
Wäre es so schlimm, wenn der ATMega 64ms länger zum Start braucht? Und 
du bist damit weit auf der sicheren Seite.

JTAG würde ich übrigens ausschalten, wenn ich es nicht brauche. Sonst 
gibt es seltsame Effekte.

Ansonsten riechen deine Beobachtungen danach, dass dein ATMega auf 
internem Takt mit clkdiv8 aktiviert läuft. Das wäre dann der 
Auslieferungszustand.

von Jay W. (jayway)


Lesenswert?

115200 Baud wird mit 16MHz Quartz nicht gut. Da liegt der Fehler bei 
3,5%. Besser du nimmst einen Baudraten-Quartz mit 14,7456 MHz.
Das Low Byte ist bei mir 0xFF, also Startup: 16K CK + 64 ms, Ext. 
Crystal. Ist halt die "sichere" Variante.

Gruß Jay

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Jay W. schrieb:
> 115200 Baud wird mit 16MHz Quartz nicht gut. Da liegt der Fehler bei
> 3,5%.

Mit U2X=1 liegt er bei 2,1 %, das ist gerade so grenzwertig.

Deutsche Quarze schreiben sich übrigens ohne ‚t‘. ;)

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.