-         

Ergebnis 1 bis 7 von 7

Thema: Frage zum Serial Buffer

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177

    Frage zum Serial Buffer

    Anzeige

    Hallo,

    Wenn man eine Buffer-Länge spezifiziert hat, werden dann, z.B. bei einkommenden Daten, die einkommenden Daten direkt in den Buffer geschrieben, wo man sie später auslesen kann, und das Programm läuft parallel weiter?

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ist das eine Hrdwarefrage ? - eher nicht

    Trotzdem eine kurze Antwort: so sollte ein Buffer arbeiten. Eine andere Funtion verdient den Namennicht. Beim Hardwarepuffer hat man nur 1-2 Bytes und die Länge ist fest vorgegeben.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Das heißt, kommen serielle Daten an (wenn ein Buffer in der entsprechenden Programmiersprache gesetzt ist), dann stoppt das bisherige Programm, und schreibt erstmal die Werte in den Buffer.

    Ist das ein Hardware oder ein Software (dauerndes abfragen) Interrupt, also muss immer geschaut werden ob was da ist, oder meldet sich der 1-2 Byte Hardware Buffer beim Programm das es jetzt bitte übernommen werden möchte?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.398
    du hast nur ein datenregister bei einem AVR für die USART schnittstelle, wenn ein byte übertragen wurde, wird das RXC bit im UCSRA Register gesetzt, die software muss entweder abfragen ob das flag gesetzt ist und dann das UDR register auslesen und das byte in ein array schreiben, von wo aus es verarbeitet wird oder direkt verarbeitet werden ...

    oder über interrupot, wenn der interrupt eingeschalten ist, wird mit dem RXC flag das hauptprogramm unterbrocjhen und der interrupt ausgeführt, in dem wiederum das byte ausgelesen werden muss und verarbeitet oder zwischengespeichert ....

    so, das war unter der annahme dass du einen blanken atmega controller verwendest und selber programmieren möchtest

    ist dem nicht so und du verwendest irgend einen anderen controller oder meinst eine bibliothek die einen Buffer bereitstellt, dann sag das bitte und schreib ein wenig code dazu, weil deine frage sehr ungenau ist

    ich hoffe ich konnte helfen

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Und wenn dann über Interrupt (mit dem RXC Flag), geht da dann irgendein Interrupt drauf den man dann nicht mehr verwenden kann (extern/intern)?

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Um einen Puffer zu programmieren wird man am besten den RX complete interrupt nehmen, zumindest wenn man die Hardware UART nimmt. Den Interrupt kann man dann auch noch für etwas anderes Verwenden, wenn man unbedingt will (z.B. um die Daten als Echo zurück zu schicken). Einen anderen Interrupt oder Pin blockiert man dadurch nicht. Man hat nur gelegentlich etwas Verzögerung bis der UART Interrupt abgearbeitet ist.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.398
    es gibt für jede interruptfähige hardware einen entsprechenden interruptvektor, es ist nicht so das du pauschal 16 vektoren hast und einen dafür verwenden musst oder wenn du ihn nciht benutzt für etwas anderes verwenden könntest !!!

    also NEIN da geht kein interrupt drauf, weil du ihn sowieso nicht für irgendwas anderes verwenden könntest

Berechtigungen

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