(26-01-2012 23:16)SQ6ADE napisał(a): Sorry - ale bez przeczytania dokumentacji do elementów elektronicznych sterowanych programem (uP i peryferia) - może być lipa.
Przepraszam - już się nie wtrącam.
Ja o tym wiem, ale ludzie korzystający z tego kursu nie są najlepsi w tym temacie - podejrzewam że niektórzy na tyle słabo znają komputerowe sprawy, że nie znajdą właściwych pomocy w internecie ... nie wpominając już o czytaniu chociażby noty aplikacyjnej AD9951 w języku angielskim (ze zrozumieniem).
Mówisz o przypadku gdy wszyscy już umieją pewne rzeczy. Tutaj jest totalna "zerówka" jak pewnie sam zauważyłeś po pytaniach lursantów kierowanych do mnie. Nie chciałem Cię obrazić (jesli tak sie stało to przeprawszam), tylko wyjasnić, że ten sposób edukacji, tutaj nie zda egzaminu ( jak na tą chwilę ). Oczywiscie potem gdy załapią bakcyla sam ich pognam batem do tego aby sami szukali wiadomości i sami siebie rozwijali.
(26-01-2012 23:54)SP5IWI napisał(a): Przy kompilowaniu moich wypocin(dołożyłem plik "makefile") a także lekcji 9 mam taki sam komunikat:
Build started 26.1.2012 at 22:44:51
make: *** Brak reguł do zrobienia obiektu `../NOWY.c', wymaganego przez `NOWY.o'. Stop.
Build failed with 1 errors and 0 warnings...
Przerabiałem kilka razy i zawsze mam taki wynik,jakieś sugestie?
Janku, czy potrafisz skompresować katalog z zawartością tego niedziałającego projektu i przesłać tu, na forum jako załącznik ? Tak jak ja to robię z lekcjami, wtedy będę mógł sprawdzić to u siebie i być może znajdę błąd.
(26-01-2012 20:57)SQ9RFC napisał(a): ...
int main(void)
{
DDRA = 255;
DDRB = 0x00; // ustawiasz wszystkie piny portu B jako wejścia
PORTB= 0x01; // tu nie kapuje: wpisujesz do portu B wartość, po co ? skoro ten port wcześniej ustawiasz do odczytu.
PORTA= 0b01010101;
while(1)
...
Lekcja3 się kłania, oto jej fragment :
...
DDRB = 0b00000000; // właczyłem do zabawy port B
PORTB= 0b00000111; // "1" oznacza podciągnięcie wejścia do napięcia zasilania Atmegi poprzez wewnętrzny rezystor
// możecie sprawdzić miernikiem że wyprowadzenia B0, B1 i B2 mają jakieś napięcie w przeciwieństwie do B3, B4 .... B7
...
Tłumaczę teraz przypadek z twojego pytania (czyli lekcji 5):
ten zabieg podciąga ( PB0 ) do napiecia zasilania - inaczej mówiąc do stanu wysokiego. Dzieje się to za sprawą dołączanego wewnątrz atmegi rezystora pomiędzy zasilaniem a tym wyprowadzeniem.
Tam jest podpięty przycisk ( a drugim biegunem do masy). Żeby Atmega wiedziała o tym że przyciskasz, stosuje się zabieg polegający na "podciągnięciu" tego wyprowadzenia ( czyli PB0 ) do stanu wysokiego. Naciskając przycisk robimy zwarcie pomiędzy masą a wyprowadzeiniem PB0 uzyskując w ten sposób zmianę stanu wysokiego na stan niski na tym wyprowadzeniu ( czyli zmianę z 1 na 0 ) Przy puszczeniu przycisku stan logiczny tego wyprowadzenia z powrotem wraca do "jedynki logicznej" za sprawą rezystora podciągającego.