Zaczynam przygodę z AVR i już na początku natknąłem się na problem
Wymyśliłem sobie układ, który w uproszczeniu ma działać w ten sposób:
uC Atmega8 z wewnętrznym oscylatorem 1MHz - na PC0 podłączony jest LED przez opornik do masy. Dioda ma się świecić, gdy na PB4 pojawi się napięcie 5V załączane włącznikiem z obwodu zasilania uC.
napisałem taki kod w C:
Niestety układ mój i programik nie działa tak jak tego oczekuję, gdyż dioda mimo braku napięcia na PC4 świeci się powiedzmy połową swojej jasności a powinna być zgaszona. Po podaniu napięcia na PC4 rozświetla się do pełnej jasności
W symulatorze program działa prawidłowo.
Nie wiem gdzie popełniłem błąd
Przy ustawieniu wejścia z podciągnięciem napięcia i zwieraniu PC4 do masy układ zachowuje się książkowo.
Czy może mi ktoś wyjaśnić dlaczego tak się dzieje?
Jak rozwiązać ten problem?
Pozdrawiam
SMolar
Poprawiłem tytuł.
[zumek]
Wymyśliłem sobie układ, który w uproszczeniu ma działać w ten sposób:
uC Atmega8 z wewnętrznym oscylatorem 1MHz - na PC0 podłączony jest LED przez opornik do masy. Dioda ma się świecić, gdy na PB4 pojawi się napięcie 5V załączane włącznikiem z obwodu zasilania uC.
napisałem taki kod w C:
#include <avr/io.h>
int main ()
{
DDRC|=((1<<0)); //PC0 jako wyjście - LED
DDRC&=~(1<<4); //PC4 jako wejście bez podciagnięcia
PORTC&=~(1<<4); //
while(1)
{
if (PINC & (1<<4))
{
PORTC|=((1<<0)); //jeśli na PC4 podane jest 5V to LED zapalony
}
else
{
PORTC&=~((1<<0)); //jeśli na PC4 nie ma 5V to LED zgaszony
}
} //end while
} //end main
Niestety układ mój i programik nie działa tak jak tego oczekuję, gdyż dioda mimo braku napięcia na PC4 świeci się powiedzmy połową swojej jasności a powinna być zgaszona. Po podaniu napięcia na PC4 rozświetla się do pełnej jasności
W symulatorze program działa prawidłowo.
Nie wiem gdzie popełniłem błąd
Przy ustawieniu wejścia z podciągnięciem napięcia i zwieraniu PC4 do masy układ zachowuje się książkowo.
Czy może mi ktoś wyjaśnić dlaczego tak się dzieje?
Jak rozwiązać ten problem?
Pozdrawiam
SMolar
Poprawiłem tytuł.
[zumek]