Mam dziwny problem z Atmegą. W układzie dwie linie są wykorzystywane do sterowania kluczami CD4066. Makrodefinicje włączające i wyłączające klucz wyglądają standardowo:
#define ON1 PORTC |= _BV(2) #define OFF1 PORTC &= ~_BV(2) #define ON2 |= _BV(7) #define OFF2 PORTD &= ~_BV(7)
Jeśli na początku programu ustawię którąś z linii w konkretnym stanie - wszystko jest ok. Napięcie na porcie się pojawia, albo nie. Sygnał jest puszczany, albo nie.
Dziwna rzecz zaczyna się dziać, gdy w nieskończonej pętli próbuję zrobić cykliczne włączanie i wyłączanie klucza:
int main (void) { while(1) { ON1; _delay_ms(1000); OFF1; } }
Program z uporem maniaka trzyma się stanu ustawionego na początku i za nic nie chce go zmienić...
Jaką przyczynę typujecie? Błąd w programie, uszkodzony port Atmegi, a może CD4066 coś miesza?