Hallo Habe Probleme mit einem 20Mhz Resonator (CSTCE20M0V53-R0) an einem ATmega328. Irgendwie schwingt der nicht richtig. Ich benutze HW UART mit 38400baud und die Daten kommen nicht sauber raus, nur die ersten paar bytes und dann nur noch Schrott. Verwende ich den internen RC mit 8Mhz, ist alles IO, daten kommen sauber. Ich bin mir überhaupt nicht sicher ob ich die Fuses richtig eingestellt habe, anbei mal ein Foto.
Und wo ist der Code? Hast du U2X gesetzt? Wenn nein, sollte das Fehler 1 sein, da hier ein Fehler von > 1% auftritt
Ich programmiere in Bascom... Im Code ist momentan 8Mhz Taktfrequenz für den internen RC eingestellt. Stefan S. schrieb: > Hast du U2X gesetzt? In welchem Register ist das ?
Und wie sieht die Platine aus? Bei 20MHz klappen Steckbrett und 5cm Kabel nicht mehr.
Mal abgesehen von Deinem Problem, auch in BASCOM sollte man so was vermeiden: Goto Beginn und das Waitus 500 in der Empfangsroutine ist auch eher dubios.
Michael L. schrieb: > Ich programmiere in Bascom... Das ist egal. > Im Code ist momentan 8Mhz Taktfrequenz für den internen RC eingestellt. Und bei der Frequenz ist auch das U2X-Bit egal. > In welchem Register ist das ? UCSR0A Und guck dir im Datenblatt das Kapitel "Examples of Baud Rate Setting" an. mfg.
Bastler schrieb: > Mal abgesehen von Deinem Problem, auch in BASCOM sollte man so was > vermeiden: Der ATmega fungiert letztendlich als UART Puffer zwischen einem Funkmodul und einem Bluetooth Modul. Der AVR empfängt Daten vom Funkmodul, wartet bis die RTS Leitung am Bluetooth-Modul Low ist, und sendet die Daten weiter. Bastler schrieb: > Goto Beginn > > und das > > Waitus 500 braucht es alles...
Michael L. schrieb: > Der ATmega fungiert letztendlich als UART Puffer zwischen einem > Funkmodul und einem Bluetooth Modul. Der AVR empfängt Daten vom > Funkmodul, wartet bis die RTS Leitung am Bluetooth-Modul Low ist, und > sendet die Daten weiter. Warum nimmst du dann keinen Baudratenquarz, sondern ersten einen Resonator und zweitens einen, der nicht passt? mfg.
Thomas E. schrieb: > Warum nimmst du dann keinen Baudratenquarz, sondern ersten einen > Resonator und zweitens einen, der nicht passt? Den hatte ich gerade noch.. Hast natürlich recht, aber mit 20Mhz sollte es doch nur ein Fehler von 0.2% ergeben ? In Bascom wird mit Config Com1 = 38400 , Synchrone = 0 das U2X bit gesetzt.
Michael L. schrieb: > aber mit 20Mhz sollte > es doch nur ein Fehler von 0.2% ergeben ? Dazu kommt noch die Toleranz des Resonators. Mit einem 18,432MHz Quarz wäre die Abweichung 0. Egal bei welcher Baudrate. Die 38K4 machst du doch auch nur, weil es nicht schneller geht. Was manchmal hilft, ist mit 2 Stopbits zu senden. Ist aber auch keine Garantie. mfg.
Thomas E. schrieb: > Dazu kommt noch die Toleranz des Resonators. Also wenn die eine Relevanz hat ist entweder der Code Mist oder der Resonator für die Tonne.
Michael K. schrieb: > Also wenn die eine Relevanz hat ist entweder der Code Mist oder der > Resonator für die Tonne. Der Code nicht unbedingt. Mit 8Mhz geht es ja. Ausserdem sind noch 2 andere Kandidaten beteiligt, die ihrerseits auch wieder ihre Toleranzen mit einbringen. Da man auf die keinen Einfluss hat, sollte man wenigstens den einen auf 0 bringen. Zumindest schadet es nicht. mfg.
Hello, With 20MHz ceramic resonator try to use 2400 baud to see if data communication is OK. If it is, check with 19200 baud (error+0.2%). Anyway, you will not get 38400 baud with this resonator frequency due to great error (-1.4%).
Also ich lass im Moment den 20Mhz Resonator weg, und nehme den internen 8Mhz. Bis jetzt funktionierts ohne Fehler und die Geschwindigkeit reicht völlig aus. Sollten in Zukunft weitere Funktionen dazu kommen, und der AVR evtl zu lahm werden, nehme ich dann einen richtigen Quarz.
Noch was anderes: Gibt es eine Möglichkeit in Bascom den HW UART Puffer höher als 255byte einzustellen ?
nico_2010 schrieb: > With 20MHz ceramic resonator try to use 2400 baud to see if data > communication is OK. If it is, check with 19200 baud (error+0.2%). > Anyway, you will not get 38400 baud with this resonator frequency due to > great error (-1.4%). That's nonsense. Refer ATMega 328 data sheet page 193. Using U2X0=1 and UBRR0L=64 you'll get an systematic error of 0.2% only. This accuracy is much more than sufficient to establish a working connection.
Das ist ja das Schöne an BASCOM! Auch wenn es murks ist was man programmiert, es funktioniert am ende und das ist entscheidend xD
Michael L. schrieb: > Gibt es eine Möglichkeit in Bascom den HW UART Puffer höher als 255byte > einzustellen ? Du brauchst als Puffer mehr als 255 Bytes??? Uff…also ich glaub mein größter UART-Puffer, den ich je benutzt habe, war 20 Zeichen lang…
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.
