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