- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 9 von 9

Thema: Timingproblem mit 2 Seriellen Schnittstellen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    Hi, danke schon mal für deine Ideen. Ich hab aber noch ein paar Fragen dazu.
    was passiert wenn das Interrupt einer UART aktiv ist während die zweite auch ein Byte empfängt? Geht dieses dann nicht verloren?
    aktuell prüfe ich ja auch ob die Länge des Frames korrekt ist. Langt es zu prüfen ob der ankommende Frame zu kurz ist? Kann es überhaupt sein das er aufgrund eines Fehlers mehr Bytes enthält als gesendet wurden? Ist dieser Fehler in der Übertragung überhaupt möglich? also zu viele Bytes?
    zu deinem Punkt 2. Das müsste ich ganz oben in der Variablendeklaration machen oder? Aber würde er dann nicht immer sofort wenn das Array neu beschrieben wurde den wert an die variable übergeben? Ich muss doch vorher prüfen ob die checksumme der eingetroffenen Daten korrekt ist. Ist dies nicht der Fall sind die empfangenen Daten ungültig und werden einfach wieder überschrieben.
    Oder versteh ich dich gerade falsch?

    Gruß

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von demmy Beitrag anzeigen
    was passiert wenn das Interrupt einer UART aktiv ist während die zweite auch ein Byte empfängt? Geht dieses dann nicht verloren?
    Nein. Die beiden HW UARTs haben getrennte Eingangspuffer. Nur sollte deine ISR wie immer möglichst kurz sein.

    Zitat Zitat von demmy Beitrag anzeigen
    aktuell prüfe ich ja auch ob die Länge des Frames korrekt ist. Langt es zu prüfen ob der ankommende Frame zu kurz ist? Kann es überhaupt sein das er aufgrund eines Fehlers mehr Bytes enthält als gesendet wurden? Ist dieser Fehler in der Übertragung überhaupt möglich? also zu viele Bytes?
    Würde ich zunächst mal nicht ausschließen. Peaks auf der Leitung könnten schon zusätzliche Bits darstellen.

    Zitat Zitat von demmy Beitrag anzeigen
    zu deinem Punkt 2. Das müsste ich ganz oben in der Variablendeklaration machen oder? Aber würde er dann nicht immer sofort wenn das Array neu beschrieben wurde den wert an die variable übergeben? Ich muss doch vorher prüfen ob die checksumme der eingetroffenen Daten korrekt ist. Ist dies nicht der Fall sind die empfangenen Daten ungültig und werden einfach wieder überschrieben.
    Oder versteh ich dich gerade falsch?
    Wäre es denn in deinem Code schlimm, wenn die empfangenen Zeichen direkt in die Variablen übernommen würden? In der Regel werden die Daten doch korrekt übertragen, oder ist die Verbindung so schlecht?
    Der Check auf Gültigkeit kann dann am Ende immer noch erfolgen.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    mhh ja das wäre insofern schlimm, da die zweite UART ja quasie die Schnittstelle zu einem Sekundärbus ist, auf dessen Teilnehmer die Daten verteilt werden. Diese könnten dann unter Umständen ungültige Daten erhalten, die evtl. Fehlerhaft sind, was dann wiederum zu Fehlverhalten der Teilnehmer führen kann. Deshalb lese ich erst den gesammten Frame ein, Prüfe die Checksumme und wenn diese dann gültig ist, verteile ich die Daten auf die einzelnen Speicherbereiche, von wo sie dann über die 2. UART weiter verteilt werden. Die "An" und "Von" Variablen sind sozusagen nur Zwischenspeicher die von der einen UART gelesen und von der anderen beschrieben werden. Was auch zyklisch passiert aber eben nicht synchron zueinander. Ich hoffe ihr versteht was ich meine?

    Was passiert denn wenn jetzt durch "Peaks" auf der Leitung zusätzliche Bits eingestreut werden!? Müsste das dann nicht zu einem Framing Error führen? Da die Bytes nicht mehr dem vorgegebenen Format entsprechen? Die UART würde diese Bytes ignorieren oder?

Ähnliche Themen

  1. Timingproblem !? mit Tiny13
    Von Desastro im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 10.10.2008, 16:54
  2. Antworten: 27
    Letzter Beitrag: 29.07.2008, 13:35
  3. Timingproblem
    Von Rev0luTio im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 05.04.2007, 20:02
  4. Interrupt mit 2 Seriellen Schnittstellen?
    Von wanderer im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 02.01.2007, 12:20
  5. Wie beide seriellen Schnittstellen des Mega 128 nutzen?
    Von annosjokey im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 06.09.2004, 19:04

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress