-
        

Ergebnis 1 bis 5 von 5

Thema: Frage zu UART Sende/Empfangs-puffer und Timing

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    21.02.2015
    Beiträge
    65

    Frage Frage zu UART Sende/Empfangs-puffer und Timing

    Anzeige

    Hallo,
    ich Plane zwei Atmega 2560 per UART zu verbinden die dann untereinander Daten austauschen sollen.

    Auf µC1 (IC1) soll ein Hauptprogrammlaufen und auf µC2 (IC2) ein nebenprogramm.
    Anbei ist mal ein Entwurf vom Programm.

    Meine Frage:
    Der IC2 wird vermutlich seine Schleife schneller durchlaufen als IC1. somit ggfls. auch mehr als einmal die Daten an IC1 senden, bevor dieser einmal sein Programm durchlaufen hat.
    1. Wenn ich von IC2 werte an IC1 sende stehen die doch im Puffer oder?
    2. Wie groß ist Puffer und wo kann ich das genau nachlesen im Datenblatt?
    3. Oder sind die Werte gelöscht, sobald ich neue Werte per UART sende
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Program.jpg  

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Hey,
    ja der Usart hat einen Puffer. Die Größe solltest du im Datenblatt finden wenn du nach "usart buffer" suchst. Ich rate einfach mal: 1-2 bytes.
    Verlust von Daten kannst du allerdings komplett verhindern, wenn du den Empfang in einen Interrupt verlagerst.
    Daher meine Empfehlung: Verwende Interrupts für den Usart und dann musst du dir eigentlich keine Gedanken mehr drüber machen. (Außer du hast sehr viele, langlaufende Interrupts)

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Hi,
    der Uart-Receive-Buffer fasst nur 2 Werte (siehe Seite 218 im Datenblatt).
    Wenn Du sichergehen möchtest, dass Du beim Empfangen keine Daten verlierst, solltest Du das per Interrupt machen.

    Gruß,
    askazo
    - Das Leben ist zu kurz, um in C zu programmieren -

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    21.02.2015
    Beiträge
    65
    Danke.
    So habe ich es mir schon fast gedacht.
    Habe jetzt eine andere Lösung, so das die UART verbindung entfällt und ich nur einen µC benötige.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von xrzr Beitrag anzeigen
    So habe ich es mir schon fast gedacht.
    Habe jetzt eine andere Lösung, so das die UART verbindung entfällt und ich nur einen µC benötige.
    So wild ist das eigentlich gar nicht, zudem gibt es dazu Bibliotheken.

    Im einfachsten Fall, wird in der ISR jedes Zeichen in einen Puffer geschrieben. Das Hauptprogramm liest dann aus diesem Puffer.
    Mit etwas mehr Komfort, macht die ISR dann noch XOFF/XON, stoppt den also Sender bevor der Puffer überläuft.

    Komplexere Protokolle packe ich meistens als zustandsgesteuerten Automaten direkt in die ISR.
    Der Rechenaufwand in der ISR ist recht klein, da mit jedem Zeichen nur eine einzelne Zustandsänderung berechnet werden muss. Der Vorteil liegt darin, dass sofort auf Fehler reagiert werden kann und das mit dem letzten Empfangenen Zeichen aus das Protokoll abgearbeitet ist, die Reaktionszeit auf eine Meldung wird dadurch kürzer. Die ausgewerteten Daten werden dann an das Hauptprogramm weitergegeben, entweder über globale Variablen und Flags oder einen Puffer.

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

Ähnliche Themen

  1. Wie sende ich Word Variable über UART/RS232
    Von corado im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 30.03.2009, 23:08
  2. Frage zum Timing
    Von Duesentrieb im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 15.07.2008, 17:16
  3. GPS-Empfangs-Probleme
    Von holzi im Forum Sensoren / Sensorik
    Antworten: 11
    Letzter Beitrag: 22.10.2007, 20:13
  4. anzeige UART Puffer leer
    Von emulein im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 08.10.2005, 09:13
  5. funk sende/empfangs modul
    Von srem im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 01.02.2005, 13:43

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •