-         

Ergebnis 1 bis 10 von 10

Thema: ISR-Problem!

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44

    ISR-Problem!

    Anzeige

    hallo! kann mir vielleicht jemand weiterhelfen mit folgendem problem: sobald ich eine Taste auf der Tastatur drücke, sollte eigentlich die statusLED rot leuchten, tut sie aber nicht! was ist falsch oder was fehlt?!


    #include <avr/io.h>
    #include <avr/interrupt.h>

    void Init(void);

    ISR(USART_RXC_vect){
    StatusLED(RED); // diese Funktion funktioniert ansonsten einwandfrei! wenn sie denn einmal aufgerufen würde....
    UCSRA&=~(1<<RXC);
    }

    // Hauptprogramm
    int main(void) {
    Init();
    StatusLED(GREEN);
    UCSRB|=(1<<RXCIE);
    UCSRB |= 0x10; // enable receiver
    while(1);
    return 0;
    }

    void Init (void)
    {
    // prepare RS232
    UCSRA = 0x00;
    UCSRB = 0x00;
    UCSRC = 0x86; // No Parity | 1 Stop Bit | 8 Data Bit
    UBRRL = 0xCF; // 2400bps @ 8.00MHz
    sei();
    }

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44
    hey guys! kommt schon lasst mich bitte nicht im Stich!!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    12.04.2007
    Ort
    Rot am See, Heroldhausen
    Alter
    24
    Beiträge
    14
    Heißt das einmal funktionierts dan nicht mehr?

    Bei manchen ISR steht im datenblatt das man sie durch das schreiben einer 1 in das entsprechende Register "zurücksetzen" muss

    konte aber eigendlich nichts falsches erkennen bin abber auch nicht der beste was Register angeht

    MFG
    maexlich

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Funktioniert denn das UART, wenn du es pollst?

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44
    das USART funktioniert sonst einwandfrei!!!! das problem liegt vielmehr darin dass der Interrupt aus irgendeinem Grund nie ausgelöst wird! keine Ahnung wieso!!!!

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.12.2004
    Alter
    33
    Beiträge
    165

    Re: ISR-Problem!

    [quote="taylor22"]
    Code:
    ISR(USART_RXC_vect){
    StatusLED(RED);  // diese Funktion funktioniert ansonsten einwandfrei! wenn sie denn einmal aufgerufen würde....
    UCSRA&=~(1<<RXC);
    }
    Zitat Zitat von Datenblatt Mega32
    When interrupt-driven data reception is used, the
    receive complete routine must read the received data from UDR in order to clear the RXC Flag
    aender das mal testweise. RXC ist naemlich read only.

    und schieb das sei(); mal direkt vor das while


    vielleicht aendert das was.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44
    hab das jetzt mal ausprobiert, doch es funktioniert immer nocht nicht! übrigens: im AVR studio funktioniert das UCSRA&=~(1<<RXC); !!!
    bin um jeden weiteren Typ froh!!!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    Gibts bei dir denn das define USART_RXC_vect? Bei meinem WinAVR gibts das nicht, kann aber auch eine ältere Version sein.
    Bist du dir sicher, dass die Verkabelung in Ordnung ist und du auch wirklich Zeichen vom PC aus sendest?

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    45
    Beiträge
    2.236
    Hallo,
    Du solltest auch den empfangenen Byte aus dem UDR holen,
    mach mal uint8_t a = UDR; in Deiner ISR rein auch wenn Du den Wert nicht brauchst.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    25.02.2007
    Beiträge
    44
    jungs, danke! hat sich jetzt erledigt und funktioniert endlich

Berechtigungen

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