Witam, zacząłem właśnie nauke C na AVR z kursu EDW prowadzonego przez Radosława Koppel. Nie wiem co źle robie ale w cz.3 ww. kursu program kompiluje się poprawnie jednak na wyswietlaczach nic nie widać. Sprzet mam podłączony dobrze gdyż w pętli programowej wyświetlał. Po przeprowadzeniu sumulacji w AVR Studio program zatrzymuje się przed pętlą for i dalej nic. Robie to na procesorze amega8. Podaje KOD i prosze o pomoc Pozdrawiam.
#include <avr\io.h>
#include <inttypes.h>
#include <avr\interrupt.h>
#include <avr\signal.h>
#define LED_A 0
#define LED_B 1
#define LED_C 2
#define LED_D 3
#define LED_E 4
#define LED_F 5
#define LED_G 6
#define LED_DP 7
#define LEDPORT PORTB
#define LEDDDR DDRB
#define COM1 6
#define COM2 5
#define COM3 4
#define COM4 3
#define COMPORT PORTD
#define COMDDR DDRD
uint8_t g_AktWyswietlacz = 0;
uint8_t g_DaneWyswietlacza[4];
uint8_t g_DaneCom[4] = { (1<<COM1), (1<<COM2), (1<<COM3), (1<<COM4) };
int main(void)
{
//////////////////////////////////
// inicjalizacja
LEDDDR = 0xff;
COMDDR = 1<<COM1 | 1<<COM2 | 1<<COM3 | 1<<COM4;
//Timer0
TCCR0 = 1<<CS01 | 1<<CS01;
TIMSK = 1<<TOIE;
//KONIEC INICJALIZACJI
//////////////////////////
//GLOBALNE ZEZWOLENIE NA PRZERWANIE
sei();
//koniec inicjalizacji
/////////////////////////////////////////////
//Wpisanie do tablicy próbnych wartosci
g_DaneWyswietlacza[0] = ~(1<<LED_B | 1<<LED_C);
g_DaneWyswietlacza[1] = ~(1<<LED_A | 1<<LED_B | 1<<LED_D |
1<<LED_E | 1<<LED_G);
g_DaneWyswietlacza[2] = ~(1<<LED_A | 1<<LED_B | 1<<LED_C |
1<<LED_D | 1<<LED_G);
g_DaneWyswietlacza[3] = ~(1<<LED_B | 1<<LED_C | 1<<LED_F |
1<<LED_G);
for(;;)
{
}
return 0;
}
//Obsluga przerwan
SIGNAL(SIG_OVERFLOW0)
{
//Wygaszanie wyswietlaczy
COMPORT = ~(1<<COM1 | 1<<COM2 | 1<<COM3 | 1<<COM4);
//wYSYLANIE ODPOWIEDNIEJ DANEJ
LEDPORT = g_DaneWyswietlacza[g_AktWyswietlacz];
//Wlaczenie odpowiedniego wyswietlacza
COMPORT &= g_DaneCom[g_AktWyswietlacz];
// Zwiekszenie stanu zmiennej wskazujacej na obslugiwany wyswietlacz
++g_AktWyswietlacz;
if(g_AktWyswietlacz > 3)
g_AktWyswietlacz = 0;
}