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



Teraz jest 25 wrz 2024, o 18:15


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 30 gru 2012, o 17:34 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Witam wszystkich,
przerabiam wlasnie przyklady z ksiazki i napotkalem na problem z ktorym caly dzien nie potrafie sobie poradzic.
Platforma to plytka stykowa z atmega 16 taktowana wew 8 MHz bez jtaga, zasilanie zrobione wedlug zalecen z ksiazki.
Przyklad ze sprzetowym timerem bez timera2 dziala jak powinien (dioda na pb3 zapala sie po czym gasnie)

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


lecz gdy usune zakomentowania mikrokontroler prawdopodobnie z jakiegos powodu sie zawiesza ( na pb3 dioda caly czas sie swieci) a na pozostaly 'zadeklarowanych' portach panuje stan wysoki.
Jakies sugestie ?

Pozdrawiam



Ostatnio edytowano 30 gru 2012, o 18:25 przez gomes, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 17:54 
Offline
Moderator
Avatar użytkownika

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

Witamy na forum ale:

1. używaj znaczników [ syntax = c ] - wyedytuj swój post wyżej i sprawdź jak to przerobiłem ok ?

poza tym jakie linie odkomentujesz - napisz precyzyjniej ??? i zobacz jak to będzie w znacznikach syntax to nawet numery linii się pojawią do których będziesz się mógł odwołać.....

_________________
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: 30 gru 2012, o 18:34 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Poprawilem zgodnie z zaleceniami.
Dorobilem sobie debugera w postaci diody podlaczone do pb0 i problem powstaje (uc sie zawiesza) jak odkomentuje linie 38-44 w ktorych ustawiam timer2. Sprawdzilem w nocie i wszystkie bity rejestrow sie zgadzaja, 3 razy przeczytalem dzial w ksiazce i dalej nie moge zlapac dlaczego to nie dziala.
Jak mozesz prosze potwierdz, czy dobrze rozumiem dzialanie tego przykladu:
taktowanie 8000000/1(preskaler)/200(ocr2)= 40khz, co taki okres inkrementowane jest cnt oraz porownywane z pwmx. Dziala to w przerwaniu wiec ma priorytet tylko zastanawiam sie z jaka predkonscia bedzie w petli glownej inkrementowane pwmx wchodzace do petli for - jak sie maja te czasy oraz wartosci do siebie ? (inaczej, dlaczego w przerwaniu sprawdzamy czy cnt jest wieksze lub rowne pwmx)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 19:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 gru 2012
Posty: 530
Lokalizacja: Bydgoszcz
Pomógł: 8

Powiem Ci, że też parę chwil poświęciłem na to, aby skumać tą zasadę i ją skumałem, ale wybacz - nie potrafię Ci tego wytłumaczyć... :-)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 gru 2012, o 22:43 
Offline
Moderator
Avatar użytkownika

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

gomes napisał(a):
Poprawilem zgodnie z zaleceniami.
Dorobilem sobie debugera w postaci diody podlaczone do pb0 i problem powstaje (uc sie zawiesza) jak odkomentuje linie 38-44 w ktorych ustawiam timer2. Sprawdzilem w nocie i wszystkie bity rejestrow sie zgadzaja, 3 razy przeczytalem dzial w ksiazce i dalej nie moge zlapac dlaczego to nie dziala.
Jak mozesz prosze potwierdz, czy dobrze rozumiem dzialanie tego przykladu:
taktowanie 8000000/1(preskaler)/200(ocr2)= 40khz, co taki okres inkrementowane jest cnt oraz porownywane z pwmx. Dziala to w przerwaniu wiec ma priorytet tylko zastanawiam sie z jaka predkonscia bedzie w petli glownej inkrementowane pwmx wchodzace do petli for - jak sie maja te czasy oraz wartosci do siebie ? (inaczej, dlaczego w przerwaniu sprawdzamy czy cnt jest wieksze lub rowne pwmx)


Ja bym ci z chęcią pomógł ale tak nagmatwałeś w tym pytaniu że niestety mało rozumiem :(

przede wszystkim - masz w książce dobrze opisany programowy PWM i dlaczego w przerwaniu działa cnt - może zacznij jeszcze raz od przeczytania tego w książce ok ? strona 229 - popatrz tam bo chyba przeoczyłeś

jeśli chodzi o wyliczenia to też są w książce zobacz od ostatniego akapitu na dole strony 228 ...

40kHz to tylko taktowany jest Timer, ale trzeba to podzielić jeszcze przez 256 kroków PWM'a programowego

_________________
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: 31 gru 2012, o 09:25 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Kwestie dokladnego zrozumienia jak to dziala zostawmy na pozniej :)
W chwili obecnej prosze o podpowiedz jak sprawdzic dlaczego po 'puszczeniu' timera2 uc sie zawiesza i ani dioda do debugowania nie zmienia stanu (pb0- chcialem sprawdzic jaki czas zajmuje przejscie calej petli while) oraz dioda rozjasniajaca i pozniej gasnaca podlaczona do pb3 (timer sprzetowy, dziala jak powinno gdy zakomentowana jest deklaracja timera2).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2012, o 13:20 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

GwynBleidD napisał(a):
Pokaż w jaki sposób puszczasz ten timer2 i czy włączasz do jego obsługi jakieś przerwania? Masz makra ISR do tych przerwań w kodzie? Bo jeśli nie, to właśnie tu masz przyczynę zawieszania procka :)
linie od 125 do 138 powyzej zamieszczonego kodu

Caly kod jaki kompiluje (bez bledow) zamiescilem w pierwszym poscie. Pochodzi on z plyty DVD do niebieskiej ksiazki.
Sprawdzalem na stronie glownej i do tego kodu nie bylo zadnych aktualizacji wiec uznalem, ze kod jest aktualny.

Jedyne co jest inne to uC > zamiast atmegi32 jest atmega16 (podobno wszystkie rejestry sa tak samo adresowane tylko jest mniej dostepnej pamieci) oraz taktowanie ( u mnie 8 MHz, w przykladach na DVD ~11 MHz). Timer2 ma tryb CTC czyli nie trzeba wpisywac pozycji od ktorej przy ponownej petli ma zaczynac co by sie zgadzalo z kodem z 1 postu.

A jednak cos jest nie tak i program po wgraniu nie dziala jak powinien.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2012, o 13:33 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Kod jest dobry moim zdaniem.
Może kolega pokaże jak to się kompiluje. Najpierw clean potem build.
Takie coś mnie interesuje:
Kod:
'Building file: ../main.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega644p -DF_CPU=20000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2012, o 16:23 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Dzieki kolego -strzal w 10 :)
We wlasciwosciach projektu >avr> target hardware mam atmega16 oraz 8 mhz a przy kompilacji jakims cudem zaczytuje wartosci ktore byly domyslnie na dvd -mmcu=atmega32 -DF_CPU=11059200UL
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



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


tyle czasu nad tym siedzialem, pare razy 'czyscilem' projekt ale na zle zaczytywanie przez eclipse nie zwrocilem uwagi.
Dzieki i dosiego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2012, o 16:48 
Offline
Moderator
Avatar użytkownika

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

Antystatyczny napisał(a):
Jeśli importowałes projekt z Mirkowego workspace'a, to wcale nie jest dziwne, że masz ustawiony procek M32 i F_CPU 11059200 :) Po prostu dokonałeś importu wraz z ustawieniami ;)


Dokładnie i dlatego nie można mówić,

gomes napisał(a):
... ale na zle zaczytywanie przez eclipse nie zwrocilem uwagi.


bo CLEAN projektu nie zapewni wejścia w jego właściwości i zmiany procesora plus wartości jego taktowania. To nie wina Eclipse ;)

_________________
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: 31 gru 2012, o 16:59 
Offline
Użytkownik

Dołączył(a): 30 gru 2012
Posty: 68
Pomógł: 0

Panowie,
obecnie nie mam juz czasu aby przedstawic printscr ale jak pisalem wczesniej oczywiscie te utawienia zostaly zmienione w projekt> properties>avr > target hardware i tam jak wspomnialem atmega16 oraz 8 mhz, apply, ok.

inne projekty w tym te z lcd tak zmienialem i ladnie te zmiany zaczytywalo i sie odpowiednio kompilowalo.
Czy sa jeszcze jakies inne opcje ktore trzeba zmienic jak korzysta sie z workspace od Mirka ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 gru 2012, o 17:07 
Offline
Moderator
Avatar użytkownika

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

gomes napisał(a):
inne projekty w tym te z lcd tak zmienialem i ladnie te zmiany zaczytywalo i sie odpowiednio kompilowalo.
Czy sa jeszcze jakies inne opcje ktore trzeba zmienic jak korzysta sie z workspace od Mirka ?


Aaaaa chyba wiem o czym mówisz ;) ... fakt też się z tym spotkałem że gdy w swoim workspace próbowałem zmieniać procka w propertiesach i dawało radę to zrobić to po kompilacji właśnie w konsoli wciąż była kompilacja dla starego procka czyli ATmega32 - tak jakby się coś zacięło ;) .... normalnie szok

ale jak zwykle na szczęście w Eclipse jest zawsze na to jedna dobra sprawdzona rada. Jak coś dziwnego się dzieje w workspace np takie efekty albo inne, to tworzę nowy workspace i albo importuję tylko ten jeden interesujący mnie projekt albo wszystkie (ładnie to przechodzi) i nagle kłopoty się kończą ...

więc rzeczywiście czasem takie małe odchyłki się dzieją - fakt - ale jak piszę można sobie z tym poradzić ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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