Laik Napisano Wrzesień 10, 2009 Udostępnij Napisano Wrzesień 10, 2009 mam taki oto kod: /* "led.c" - programik do testowania środowiska WinAVR */ /* układ ATmega 1MHz */ /* PB0,PB1 - diody LED; PD0 - przycisk */ #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { DDRC = 0xFF; // wszystkie piny portu c jako wyjscia DDRB = 0x00; PORTB = 0x03; while (1) { PORTC = 0xFF; /* 0xaa binarnie 1010 1010 */ /* opóźnienie 0.33 sek. */ _delay_ms(100); PORTC = 0x00; /* 0x55 binarnie 0101 0101 */ /* opóźnienie 0.33 sek. */ _delay_ms(100); if(!(PIND & 0x01)) PORTC = 0xFF; } } do takiego schematu : Dlaczego przycisk mi nie zapala diód ? tak jakby wgl nie dzialal
Bobby Wrzesień 10, 2009 Udostępnij Wrzesień 10, 2009 Nie znam C, więc nie wiem czy włączyłeś pullupy, ale jeśli nie, to brakuje ich na zewnątrz.
Elvis Wrzesień 10, 2009 Udostępnij Wrzesień 10, 2009 if(!(PIND & 0x01)) PORTC = 0xFF; Pomyliłeś porty, podłączone jest do PB nie PD (tak przynajmniej jest na schemacie). Natomiast jeśli jest tak jak w opisie, to trzeba włączyć pullup: PORTD |= 0x01; i sterować portem B zamiast C (w komentarzu jest opis, że ledy są podpięte do PB) [ Dodano: 11 Wrz 09 08:34 ] I jeszcze jedno. Zaraz po instrukcji warunkowej i tak wykonujesz PORTC = 0xFF;, więc program nie ma szans dawać widocznych rezultatów. [ Dodano: 11 Wrz 09 08:39 ] Jeśli masz podłączenie jak na schemacie, proponuję taki kod: int main(void) { DDRC = 0xFF; // wszystkie piny portu c jako wyjscia DDRB = 0x00; PORTB = 0x0F; while (1) { if ((PINB & 0x01)==0) PORTC = 0xFF; else PORTC = 0; } }
Le_Cheque Wrzesień 11, 2009 Udostępnij Wrzesień 11, 2009 Kolego Laik, a jaki masz programator? Jeśli USBasp to musisz jedną ze zewrzeć zworkę Slow SCK, która służy do programowania mikrokontrolerów taktowanych z częstotliwością 1MHz i poniżej 1MHz.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »