Mlotek Napisano Marzec 28, 2015 Udostępnij Napisano Marzec 28, 2015 Witam,Program wykorzystujący interfejs SPI może być oglądany na debugerze AVR Studio 4 tylko wtedy, gdy nie jest aktywna obsługa przerwania przepełnienia licznika 1. Jednak po wystąpieniu przepełnienia licznika 1 wszystkie zmienne zerują się. Jeżeli w programie jest aktywna obsługa przerwania od przepełnienia licznika 1, to brak sygnału zegara interfejsu SPI na PB5 (SCK) i interfejs nie działa. Poniższy program nic nie robi, to tylko przykład na którym można to zaobserwować. #include <avr/io.h> #include <avr/interrupt.h> volatile uint8_t data1,data0; volatile uint8_t m,n,x=1; int main (void) { TCCR1B |= (1 << WGM12); // Set to CTC Mode TIMSK |= (1 << OCIE1A); //Set interrupt on compare match TCCR1B |= (1 << CS10); // set prescaler to 1 and starts PWM OCR1A=500; SPCR|=(1<<SPIE); //-włączenie obsługi przerwania dla SPI, SPCR |= (1<<MSTR); // Set as Master SPCR |= (1<<SPR0); // divided clock SPCR |= (1<<SPE); // Enable SPI DDRB |=(1<<0)|(1<<1) |(1<<2)|(1<<3)|(1<<5); // SCK-PB5, MOSI-PB3 and SS-PB2,PB1,PB0 as outputs sei(); while(x==1) { SPDR=0xFF; while(!(SPSR & (1<<SPIF))==1) ; cli(); } } ISR (SPI_STC_vect) { data0=SPDR; } /* ISR (TIMER1_COMPA_vect) { } */ Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!