Skowron93 Napisano Luty 21, 2012 Udostępnij Napisano Luty 21, 2012 Witam. Dziś w końcu przyszły części mojego małego programowalnego układziku, poskładałem idealnie według poniższego schematu: Zaprogramowałem kodem: #include <avr/io.h> #include <util/delay.h> #define B(x) (1<<x) void Zapal( int p1, int p2, int p3 ) { if( p1 == 1 ) PORTB |= B(0); else PORTB &= ~B(0); if( p2 == 1 ) PORTB |= B(1); else PORTB &= ~B(1); if( p3 == 1 ) PORTB |= B(2); else PORTB &= ~B(2); _delay_ms(1000); } int main(void) { DDRB = 0b111; while(1) { Zapal(1,0,0); Zapal(1,1,0); Zapal(1,0,1); Zapal(0,1,0); Zapal(0,1,1); Zapal(0,0,1); Zapal(1,1,1); Zapal(0,0,0); } } I 0 reakcji :/ Wszystko sprawdzałem z milion razy i nic ;/ Może coś nie tak ze schematem? Zrobiłem tak: -Poskładałem układ -podłączyłem programator -Make All -Make Program i chyba powinno działać? Mój programator: allegro.pl/programator-usbasp-avr-atmel-isp-tasma-win7x64-pl-i2120160069.html __________ Komentarz dodany przez: Treker
ps19 Luty 21, 2012 Udostępnij Luty 21, 2012 Zobacz czy w ogóle komputer wykrywa układ.Zalecam wejść w avrdude i wpisać avrdude -p m8 -c usbasp Jak wykrywa to zalecam twój kod jest dla mnie trochę za długi jak na migonie diodami: #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> int main (void) { DDRD = 0xFF; PORTB |= _BV(PB0); PORTB |= _BV(PB1); PORTB |= _BV(PB2); } Jak nie wykrywa to sprawdź czy nie pomyliłeś MOSI z MISO i czy masz reszte sygnałów dobrze podłączone. Te rezystory 1KΩ powinny być chyba za diodami a nie przed i nie 1K a coś koło 300Ω Wejście w avr dude: 1.Robisz ikone avrdude.exe na pulpit. 2.Wchodzi w właściwości i w element docelowy z przodu dopisujesz cmd np.cmd H:\AVRDUDE\avrdude.exe
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 1 raz programator nie był podłączony, 2gi raz był razem z układem a 3 raz sam programator bez układu.
ps19 Luty 21, 2012 Udostępnij Luty 21, 2012 Czyli ci wykrywa spróbuj ten kod co ja napisałem. Masz skonfigurowany WinAVR ?
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 Sprawdziłem, wszystko jest podłączone na 100% dobrze. PORTC |= _BV(PB0) | _BV(PB1) | _BV(PB2) Po wpisaniu tego Wyskakuje "Nazwa PORTC nie jest rozpoznawana jako polecenie wew. ani zew. Program wykonalny lub plik wsadowy." :/ [ Dodano: 21-02-2012, 17:46 ] Masz skonfigurowany WinAVR ? To znaczy?
ps19 Luty 21, 2012 Udostępnij Luty 21, 2012 Zalecam przeczytać: http://www.forbot.pl/forum/topics20/szybki-start-z-winavr-vt513.htm Taki kod tam cos namieszałem: #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> int main (void) { DDRD = 0xFF; PORTB |= _BV(PB0); PORTB |= _BV(PB1); PORTB |= _BV(PB2); }
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 Czyli dobrze się wgrało tak? AVR mam dobrze ustawione :| Dioda nawet nie mrugnęła, nic nie śmierdzi( na szczęści ) ani nic. Po prostu 0 reakcji :/
ps19 Luty 21, 2012 Udostępnij Luty 21, 2012 Wykorzystaj kod ode mnie i napisz wtedy czym prościej tym lepiej.Nie ma co tak tego komplikować.
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 Wykorzystaj kod ode mnie i napisz wtedy czym prościej tym lepiej.Nie ma co tak tego komplikować. Twój kod oczywiście też wrzucałem. 0 reakcji ze strony układu
ps19 Luty 21, 2012 Udostępnij Luty 21, 2012 Weź miernik i zobacz jakie masz napięci za rezystorami (przed diodą)
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 Sprawdzam wszystko po kolei i widzę schemat diody RGB: Tę najdłuższą podłączam do minusa a resztę do plusa nie? Bo już głupieje... [ Dodano: 21-02-2012, 18:18 ] Weź miernik i zobacz jakie masz napięci za rezystorami (przed diodą) Nie zaopatrzyłem się w miernik :| Wiem, podstawa, ale niestety nie mam ;/
ps19 Luty 21, 2012 Udostępnij Luty 21, 2012 Na odwrót najdłuższa plus najkrótsza minus. Ja dałbym opornik 300Ω za diodą bo 1K to zbyt dużo. Przynajmniej u mnie tak działa. 1
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 Na odwrót najdłuższa plus najkrótsza minus. Ja dałbym opornik 300Ω za diodą bo 1K to zbyt dużo. Przynajmniej u mnie tak działa. O kurr...de, działa Świeci się na czerwono ;D DZIĘKI!!! [ Dodano: 21-02-2012, 18:36 ] Ale chwilka... mam tak: 1noga( krótka ) do masy 2( najdłuższa ), 3 i 4 przez rezystory podłączone do portów B 0, 1, 2. Świeci mi się tylko pod portem 1, na czerwono. Mam źle podłączone?
ps19 Luty 21, 2012 Udostępnij Luty 21, 2012 Podłączone dobrze tylko musisz zmieniać stany.Nie mam diody RGB żeby to sprawdzić ale na 3 osobnych diodach działa. #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> int main (void) { DDRD = 0xFF; PORTB |= _BV(PB0); _delay_ms(100); PORTB ^= _BV(PB0); PORTB |= _BV(PB1); _delay_ms(100); PORTB ^= _BV(PB1); PORTB |= _BV(PB2); _delay_ms(100); PORTB ^= _BV(PB2); }
Skowron93 Luty 21, 2012 Autor tematu Udostępnij Luty 21, 2012 Mam tak podłączone, chyba źle. Jeśli zamiast nóżki 1, podłączę nóżkę 2 lub 3 to pali się na niebiesko lub zielono. Może tylko ta najdłuższa nóżka jest plusem, a reszta to minusy?
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ę »