PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Attinity2313 und Baud 115200



lolrene
27.12.2009, 21:46
Abend zusammen,

ich habe ein Problem bezüglich der Kommunikation zwischen Attinity2313 und der RS232 Schnittstelle.

Ich möchte gerne das mein Board (Pollin RFID Board) mit einem GSM Modem kommuniziert.

Doch das Board ist mit einer Baudrate von 9600 und das GSM Modem mit einer Baudrate von 115200 versehen.

Nun weiß ich nicht wie ich das Problem lösen kann und hoffe auf eure Hilfe .

Netten Gruß

stefan_Z
27.12.2009, 21:55
Du kannst die Baudrate im Tiny während der Laufzeit ändern.

$Baud = 9600
Codeteil A
$Baud = 115200
Codeteil B
oder so ähnlich.
Solltest aber dafür sorgen, dass die zwei Teile nicht unbedingt gleichzeitig lauschen, denn sonst empfängt der eine nur Müll!

Wirklich viel kannst du da aber im Tiny nicht puffern, fürn RFID reichts ggfs.

Direkt wirst du sie nicht plaudern lassen können, da der eine Teilnehmer ja viel schneller ist.

lolrene
27.12.2009, 22:14
Gibt es keine andere möglichkeit eine kommunikation zwischen Board und GSM Modem über RS232 zu ermöglichen ?

Sonst wäre das teures rausgeschmissenes Geld für mich :S

Gruss

Besserwessi
27.12.2009, 23:46
Die hohe Baudrate kann man bei passendem Quarz mit der Hardware UART hinkriegen. Der 8 MHz Quarz geht allerdings dafür nicht richtig. Passenend wären z.B. 11.0592 MHz, es gehen aber auch noch andere Frequenzen.
Die Baudrate kann man dann im Baisc Programm einstellen. Die 9600 Baud sind so wie ich das sehe nur die Einstellung im Beispielprogramm, das kann man relativ leicht ändern.

oberallgeier
28.12.2009, 10:17
Hallo,

auf einen entsprechenden Hinweis von Besserwessi hatte ich mal eine Tabelle gerechnet (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=438494#438494) für theoretisch erreichbare Baudraten in Abhängigkeit des UART-Parameters UBRR. Meine Tabelle ist für 20 MHz und für den mega168 - zeigt aber sehr gut das Problem: bei hohen Baudraten wird UBRR recht klein und daher wird der Sprung von einer (theoretisch erreichbaren) Baudrate zur nächsten groß: Beispiel: beim 20 MHz-Quarz brauche ich für 115 kBaud rund UBRR = 10. Damit liegt das Ergebnis zwei Prozent unter der angepeilten Baudrate - nimmt man UBRR = 9 so liegt man 8 % drüber (klar - die Differenz ist der prozentuale Unterschied von 10 auf 9). Die Abweichung ist so hoch, dass der Fehler üblicherweise von einer Schnittstelle nicht mehr toleriert wird. Bei kleineren Quarzfrequenzen wird diese Schwankung bzw. der Fehler natürlich noch grösser. Das Problem liegt in der Ganzzahligkeit des Baudratenparameters. Daher entsteht - gerade bei hohen Baudraten - die Notwendigkeit, den Quarztakt anzupassen.

Besserwessi
28.12.2009, 11:05
Tabellen mit den Teilerwerten und Quarzfrequenzen findet man in fast jedem Datenbaltt zu den AVRs mit UART.

Bei der Programmierung in BASCOM sieht man davon nichts, aber intern muß der Compiler ja auch einen passenden Teiler finden können, und wenn es nicht paßt geht es halt nicht (wenn man Glück hat kommt eine Warnung).

lolrene
28.12.2009, 11:13
Vielen Dank für eure Hilfe, dann weiß ich ja was zu tun ist.

lolrene
28.12.2009, 13:00
Konnte zum Glück die Baudrate vom GSM runtersetzten.
Jetzt "funken" beide auf 9600 .

Muss ich noch etwas ausser die Baudrate beachtendamit beiden problemlos kommunizieren ?

Netten Gruss

stefan_Z
28.12.2009, 15:59
Protokolle halt beachten, schauen obs ggfs. Timeouts gibt, sowas eben.
Würde ich auf jeden Fall mal ein paar Tage laufen lassen um zu sehen wie das Lastverhalten ist...