Skocz do zawartości

Komunikacja ATMEGA8 po SPI a licznik 1


Mlotek

Pomocna odpowiedź

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) 
{

}
*/
Link do komentarza
Share on other sites

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!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.