Attiny 2313 - Problem mit USIPF

Gast #973945
Lesenswert?

Hi Leute,

ich habe einen Attiny 2313 als Schnittstelle zwischen PC und einem I2C 
Bus. Eine LED soll dabei eine Datenübertragung anzeigen. Die geht auch 
an - aber nie wieder aus. Woran könnte das liegen? Hier mal der Code:

//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////


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



//////////////////////////////////////////////////////////////////
// MAIN //////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////

int main(){

  // Initialisierung ///////////////////////////////////////////

  cli();      // Interrupts für Initialisierung AUS

  // Ausgänge setzen
  DDRA  = 0b00000011;  // PortA0 und PortA1 Ausgang
  DDRB  = 0b01000000;  // LED(PB6) Ausgang
  DDRD  = 0b00000000;  // PortD alle Eingang
  PORTA = 0b00000000;  //
  PORTB = 0b01000000;  // LED HIGH(aus)
  PORTD = 0b00000000;     //

  USICR = 0b10100000; // Bit7 Start Condition InterruptEnable
          // Bit5 Two-wire mode ohne Overflow

  sei();        // Interrupts AN

  // Initialisierung beendet ///////////////////////////////////

  // Hauptschleife /////////////////////////////////////////////

  while(1){
    PORTA = PIND;
    if(USISR & (1<<USIPF)){
      PORTB |= 0b01000000; // LED aus
      USISR |= 0b00100000; // Stop flag reset
    }
  }
  return 0;
}


//////////////////////////////////////////////////////////////////
// INTERRUPT-Routinen ////////////////////////////////////////////
//////////////////////////////////////////////////////////////////


ISR(USI_START_vect){

  PORTB &=0b10111111;  // LED an

}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren