Ich möchte gerne Daten zwischen 2 AVRs übertragen und die UART verwenden, auch ohne Pegelwandler, einfach RX mit TX verbinden. Nun die Frage: an beiden ist keine Quarz - der Takt kann also leicht abweichen. Hilft es mir, eine langsame Baudrate zu verwenden, oder wandert der Fehler mit? Was kann ich alternativ tun? UART deswegen, weil ich mich durch den Eingangspuffer während der Übertragung softwareseitig nicht darum kümmern muss..
schalt schrieb: > Hilft es mir, eine langsame Baudrate zu verwenden, oder > wandert der Fehler mit? Der Fehler wandert mit. schalt schrieb: > Was kann ich alternativ tun? Wenn Dein Taktgenerator zu instabil ist, kannst Du z.B. beide µCs mit einem gemeinsamen Takt versorgen.
Für den Fehler ist die Baudrate egal. Eine Taktdifferenz bis 1.5%, ev. auch 2% toleriert der Uart. Je nach AVR wird das sehr knapp. Theoretisch ist es möglich, die AVRs zu synchronisieren (über die Zeitmesung eines definierten UART-Signals), aber nicht ganz untrivial. Gruß, Stefan
Du kannst Takt und Daten synchron übertragen. Dann holt sich der Empfänger den Takt aus der Schnittstelle. Eine asynchrone Übertragung (RS-232 über UART z.B.) setzt einfach eine Stabilität des Taktsignals auf beiden Seiten voraus.
Fietz schrieb: > Wenn Dein Taktgenerator zu instabil ist, kannst Du z.B. beide µCs mit > einem gemeinsamen Takt versorgen. Ja, geht theoretisch, aber den muss ich dann immer laufen lassen. Ist eher eine Lösung, wo 3 verschiedene AVRs einem vierten (Empfänger) etwas sagen sollen, ohne dass der Empfänger dauernd abfragt. Ich würde einfach mehrmals senden, und im Empfänger vergleichen, ob mehrmals das Gleiche angekommen ist, falls sich die Sender überschneiden (unwahrscheinlich). Evtl. ist SPI sogar besser geeignet, dann brauche ich auch eine Leitung mehr, aber es gehen nur bei Aktivität Daten über die Leitung.
schalt schrieb: > Evtl. ist SPI sogar besser geeignet, dann brauche ich auch eine Leitung > mehr, aber es gehen nur bei Aktivität Daten über die Leitung. SPI / synchroner UART vermeiden durch die Übertragung des Takts v.a. Probleme mit ungenauen Systemtakten.
schalt schrieb: > Ich würde einfach mehrmals senden, und im Empfänger vergleichen, ob > mehrmals das Gleiche angekommen ist, falls sich die Sender überschneiden > (unwahrscheinlich). Das sollte gut funktionieren. Deine UART muss dann aber mit Verletzungen des Übertragungsrahmens klarkommen. Der gemeinsame Takt kann ja auch von Deinem Empfänger kommen, der vielleicht immer läuft.
Gab hier mal Peter Daneggers one-wire-Bus, finde es gerade nicht. Benötigt nur einen Timer und einen beliebigen Pin.
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.