Mam w swoim projekcie w WinAVR dwa pliki: main.c i a.c. W funkcji main wywoluje funkcje void A_Init(void). plik main.c: #include <avr/io.h>
#include "a.h"
void main (void){ A_Init(); // inicjalizacja; ... // dalsza czesc programu }
plik a.c: #include <avr/io.h>
void A_Init(void){ UCSR1C = (3<<UCSZ0)|(2<<UPM0); UCSR1B = 1<<TXEN;
... // dalsze linie funkcji }
plik a.h void A_Init(void);
Funkcja A_Init zawiera kilka linii ustawiajacych stany w rejestrach mikrokontrolera Atmega128. Problem polega na tym, ze jesli nie zaremuje wszystkich takich linii w tej funkcji (odwolujacych sie do rejestrow mikrokontrolera) program nie opuszcza funkcji i nie wraca do main(). Po zaremowaniu ich, wpisalem w tej funkcji linie inkrementacji wewnetrznej zmiennej ... program dzialal prawidlowo. Oczywiscie oba pliki *.c sa zadeklarowane w pliku makefile, tam tez ustawiony jest typ mikrokontrolera... . Moze wiecie co sie dzieje? Mikrokontrolery w jezyku C programuje od wielu lat ale to jest moj pierwszy program w WinAVR i nie wiem juz co robic. Z gory dziekuje za pomoc Jacek