Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 mar 2024, o 08:10


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 19 lut 2012, o 13:41 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Witam.
Chcąc ustawić przerwania dla mojego procesora (ATM.644p) aby móc "zapanować" nad wyświetlaczem LED natrafiłem na kłopot ponieważ mój procesor (jak się dowiedziałem z postu niżej i czytając notę pdf) jest nieco rozbudowany (posiada timer0A i B) i jego funkcje są podzielone.
Zaglądając do linku, który podał autor postu pode mną zastosowałem się do rad zastosowanych w tamtym wątku jednak w moim kodzie jest gdzieś błąd ponieważ generuje mi się error związanyz d_led_init.
Proszę o pomoc w rozwiązaniu tego problemu.




d_led_.c

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 19 lut 2012, o 15:32 przez infa08, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 14:20 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Po pierwsze to bardzo proszę o to aby nie umieszczać kodów źródłowych całych bibliotek z książki / z płyty DVD

Pytanie powinno być bardziej skonkretyzowane że tak brzydko powiem a nie - wklejone całe kody i co ? oczekiwanie, że ktoś przerobi to tutaj pod m644p i udostępni ? Oj - nieładnie.

Pewnie, że m644p ma inne nazwy rejestrów oraz także nazwy bitów w tych rejestrach. Z czego to wynika ? Z tego panie kolego, że tu każdy Timer sprzętowy (zresztą nie tylko timer) ma o wiele więcej opcji niż w m32 a co za tym idzie producent nie zmieściłby się z bitami odpowiadającymi za te wszystkie dodatkowe opcje w tych kilku rejestrach jakie ma m38.

Stąd wprowadzono dodatkowe rejestry. Ale co za problem otworzyć sobie dwie noty PDF czyli od m32 i obok od m644p

wtedy wystarczy wykonywać z pełnym zrozumieniem ćwiczenie i porównywać gdzie znajdują się jakie rejestry. Np chcemy ustawić preskaler dla Timer0 - zaglądamy do PDF od m32 i widzimy, że bity preskalera CS02, CS01, CS00 znajdują się w rejestrze TCCR0A - więc jeśli mamy ustawić preskaler = 8 to wpisujemy dla m32 taką linię:

Kod:
TCCR0A |= (1<<CS01);


a teraz to samo czyli preskaler =8 chcemy ustawić a tu ? - O!!! zaglądamy do noty PDF a tam nie ma tych bitów w rejestrze TCCR0A - no to co mamy się poddać ? - dlaczego - patrzymy na kolejny rejestr O! teraz jest dodatkowo TCCR0B a w nim!!!! nasze ukochane bity CS02, CS01 oraz CS00 ... więc co za problem żeby wg tego co też pisałem w książce ustawić teraz preskaler dla tego procka tak:

Kod:
TCCR0B |= (1<<CS01);


Taka duża różnica ?

I analogicznie działamy z innymi bitami mając na uwadze to, że procku m32 gdy wybieraliśmy tryb to bity WGMxx którymi to robiliśmy były tylko w TCCR0A a w procku m644p są ale rozrzucone po dwóch rejestrach TCCR0A i TCCR01 więc co za problem w razie czego ustawić daną kombinację bitów w jednym albo w dwóch rejestrach ?

Podobnie z rejestrem przerwań, w m32 był tylko jeden TIMSK w którym były tak na prawdę opisane wszystkie przerwania wszystkich timerów a że większy procek m644p ma więcej opcji to by się nie zmieściły więc został utworzony dla każdego timera oddzielny rejestr TIMSKx, np TIMSK0 - tylko trzeba jeszcze zwrócić uwagę czy przypadkiem o jedną literkę nie zmieniły się nazwy samych bitów.....

to nie jest trudne, warto to robić i trenować - bo różnice programowania pomiędzy prockami polegają głównie na tym i tylko na tym. Więc chwila treningu i po kłopocie

No a jak nie możemy sobie poradzić nadal z jakąś drobnostką to proszę bardzo można tu zapytać ale o konkretny szczegół ? komunikat błędu ? o konkretne ustawienie? o konkretny rejestr ?

a nie wklejanie całych bibliotek OK ?

Nie wspomnę już o tym, że czasem warto przeszukać to może jeszcze niewielkie forum ale okazuje się, że już takie pytania dokładnie były - więc odpowiedź można było już znaleźć...

http://forum.atnel.pl/topic19.html

Ale proszę zobaczyć jak było w ogóle pytanie zadane itd

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 15:17 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Zmodyfikowałem mój post i pozmieniałem linijki kodu dotyczące rejestrów jednak nadal kompilacja programu jest nie możliwa. Myślę, że chodzi o ten fragment programu ponieważ wyświetla mi się komunikat o błędzie "main.c: undefined reference to 'd_led_init'



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 15:31 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

A zaraz zaraz - zapytam - czy korzystasz z Eclipse i przykładów z płyty DVD ? bo przecież tu w tym zakresie nic cię nie ogranicza

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 15:33 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Tak korzystam z Eclipse i mam przykłady z DVD na DVD ponieważ nie kopiowałem je do mojego projektu (mam na PC twoje środowisko "workspace" oraz moje, w którym piszę samemu kody korzystając z książki)



Ostatnio edytowano 19 lut 2012, o 15:38 przez infa08, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 15:38 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

No to:

""main.c: undefined reference to 'd_led_init'"

oznacza, że kompilator nie widzi definicji funkcji d_led_init

I jeśli odpaliłeś kod z DVD to niemożliwe żeby się taki błąd pojawiał - bo on może wystąpić:

1. albo jeśli nie masz pliku *.c z tą definicją funkcji w ramach projektu
2. albo nie masz zainkludowanego pliku *.h

a te dwa pliki jak widzisz w projekcie na DVD leżą obok main.c i stanową taką jakby mini bibliotekę

więc coś tu pomieszałeś - tylko nie mam pojęcia co.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 15:44 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Teraz otworzyłem workspace i zauważyłem, że kody są bardziej rozbudowane. Dopiszę do mojego kodu to czego nie mam i napiszę jaki wyszedł rezultat.



Ostatnio edytowano 19 lut 2012, o 16:03 przez infa08, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 15:53 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Dlatego wspominałem nie raz w książce chyba, że kody które omawiam na łamach książki przedstawione są tylko w sposób ułatwiający dydaktykę czyli lepsze wyjaśnienia i opisy. Zamiast przepisywać je z książki, lepiej zawsze sprawdzać jak to jest we wzorcach na DVD bo tam musiałem zadać sobie o wiele więcej trudu żeby wszystko ładnie i dobrze działało i działa.... No tylko, że do niektórych trzeba sobie pobrać uaktualnienia - a są one na forum - zrobiłeś to ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 16:03 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Uzupełniłem program, jego struktura jest praktycznie tak sama jak pierwowzór z workspace, "drzewko programu" jest również podobne z tym, że ja po kompilacji programu nie posiadam gałęzi "Binaries" i nadal mam błąd z d_led_init



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 16:05 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

A posiadasz gałąź RELEASE ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 16:07 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Tak ale bez pliku z rozszerzeniem .hex, .elf, .eep, .lss



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 16:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Wiesz co ? spakuj mi ten projekt do ZIP'a i podeślij na maila - aż z ciekawości chciałbym zobaczyć co ty tam wyprawiasz ? ;) biuro@atnel.pl

czy lekcje VIDEO na DVD też oglądałeś ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 16:21 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

Tak pozwoliły mi zaznajomić się ze środowiskiem Eclipse



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 16:35 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Dobra - posłuchaj - już widzę błąd .... no ale na prawdę tego się nie spodziewałem.

Najlepiej będzie jak ci nie powiem gdzie jest błąd (ale spokojnie nie po złości) ..... tylko dla ciebie lepiej będzie jeśli sam go znajdziesz bo sam jesteś jego stwórcą - chociaż to już i tak za duża podpowiedź.

A błąd jest tak banalny, że aż strach .... no i wynika jak zwykle z tego, że piszesz że coś robisz (tu na forum) a tak na prawdę czegoś nie robisz .... wiem że to brzmi enigmatycznie no ale już i tak za dużo ci podpowiedziałem....

Popróbuj więc sam go znaleźć bo nie wiąże się on z niczym o czym ty byś jeszcze nie wiedział. Nie wynika też z tego że zobaczyć go może tylko osoba, która ma doświadczenie ......

no okropny błąd ;)

....... pogłówkuj sam .... do czego cię bardzo zachęcam, bo rozwiązanie we własnym zakresie da tobie dużą praktykę na przyszłość

a jeśli sobie nie dasz rady to napisz - udzielę wskazówki OK ? ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2012, o 16:49 
Offline
Użytkownik

Dołączył(a): 18 lut 2012
Posty: 50
Pomógł: 0

OK! biorę się do szukania

ZNALAZŁEM! i nauczyłem się żeby uważnie przepisywać nazwy funkcji - już wiem na co mam uważać pisząc kolejny program
DZIĘKI za pomoc



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO