-         

Ergebnis 1 bis 6 von 6

Thema: putchar, getchar per Interrupt oder gepollt?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.11.2005
    Beiträge
    25

    putchar, getchar per Interrupt oder gepollt?

    Anzeige

    Hallo,
    ich habe gelesen, das man bei Atmegas sagen kann, dass die USART per Interrupt oder gepollt funktionieren kann.

    Ich sende mit meinem Programm eine definierte Anzahl an char-Bytes mit putchar, anschließend lese ich mit getchar ein paar Char-Werte wieder zurück.

    Wenn mein Sensor die Char-Werte nicht ausgibt, wartet mein Programm endlos darauf und hängt sich somit auf. (hier möchte ich noch ein Timeout dazu programmieren)

    Es macht doch für mich praktisch keinen Unterschied, ob ich die UART per Interrupt oder gepollt initialisiere?
    Oder was ist besser?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Was ist besser....ist immer so eine Frage.
    Ich persönlich würde zu Usart per Interrupt tendieren. Dann solltest du schon mal kein Problem damit haben, dass sich dein Programm aufhängt wenn dein Sensor nicht antwortet.

    mfg shedepe

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Es macht schon einen Unterschied, da bei der Initialisierung mit Interrupt dieser gleich mit aktiviert wird.
    Für Polling braucht man z.B. TXEN oder RCEN oder wie die Bits heissen nicht setzen.

    Ich verwend beim UART nur Interrupt-gesteuertes senden/empfangen. Dabei schreibt mir der Interrupt die empfangenen Daten in nen FIFO, den ich dann irgendwann, wenn ich im Programm mal Zeit hab, abrufen kann. Da hängt dann auch nix.
    #ifndef MfG
    #define MfG

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    03.11.2005
    Beiträge
    25
    Hallo,
    ich habe es nun mal mit der "Poll-Methode" und einem Atmega128 realisiert.

    Ich übergebe 10 "Char-s" über die UART an einen Sensor.
    Dieser Antwortet mir, doch erhalte ich bei der Ausgabe mit getchar immer 3-Char-Werte der alten Antwort und dann erst die neue.

    Der Sensor müsste eigentlich richtig funktionieren, darum meine Frage:
    Kann es sein, dass ich erst noch den Emfpangspuffer löschen muss?

    Wenn ja, wie macht man das?

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Du bist hier im Hardwarebereich. Im Bereich der Programmiersprache wird Dir bestimmt besser geholfen. Im Bascom Bereich habe ich eine passende Antwort im RS232 Problem - Thread.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    03.11.2005
    Beiträge
    25
    Ist klar, danke.
    Ich nutze den Codevision-Compiler.

    Kann den Beitrag wer verschieben, oder so ich es nochmal neu schreiben?!

Berechtigungen

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