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



Teraz jest 13 lis 2024, o 12:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 19 wrz 2023, o 16:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Cześć wszystkim.
Dawno się nie bawiłem timerami i teraz mam problem, zawsze wszystko szło dobrze.
Chciałem skonfigurować Timer0 na czas 1ms, przy taktowaniu procka 20MHz.
Poniżej na obrazkach pokazuję zrzuty ekranu z eclipse-a.
Nie potrafię zrozumieć błędu, na który wskazuje mi kompilator.
Nie wiem, chyba jakieś chwilowe moje zaćmienie, dlatego proszę Was o pomoc i wskazówki co zrobiłem źle.

Obrazek
Obrazek
Obrazek

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2023, o 18:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 368
Lokalizacja: Gliwice
Pomógł: 34

Standardowo pogrzebałbym w dodatku AVR do Eclipse.
Zmienił w ustawieniach projektu procka na jakiś inny, zaakceptował, a potem spróbował ustawić na ten właściwy.
Ten plugin zawsze miała takie kłopoty, że potrafił się pogubić podczas przełączania plików nagłówkowych, szczególnie gdy projekty były kopiowane w workspace.

Oprócz tego należy się upewnić czy faktycznie Timer0 jest akurat w tym procku, np Atmega328 czy Atmego8 albo ATtiny85, już nie pamiętam nie mają tych samych timerów



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2023, o 18:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1164
Lokalizacja: Kraków
Pomógł: 93

A dodałeś #include <avr/interrupt.h>?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 wrz 2023, o 21:50 
Offline
Moderator
Avatar użytkownika

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

toż ten kod - to błąd na błędzie a nie żadne tam że eclipse źle działa itp ... skąd takie pomysły ... jak się działa na eclipse dla avr tak jak pokazuję w poradnikach to wszystko jest ok.

Tymczasem przechodząc do kodu,

1. autor pisze o rejestrze porównawczym a zamiast niego wpisuje w kodzie TCNT0! ... to jest rejestr porównawczy
2. autor sądząc po dalszych błędach chce używać przerwania od PRZEPEŁNIENIA a w kodzie chyba używa (choć już tego nie pokazuje) TIMER0-OVF_vect - to jest wektor przerwania od przepełnienia ?
3. Dlaczego autor nie stosuje przejrzystego zapisu do wyliczania rejestru porównania (tylko trzeba jego dobrą nazwę wpisać) przejrzystego wzoru typu: = (F_CPU/prescaler/freq)-1
4. Jakim cudem autor chce osiągnąć przerwanie co 1ms przy tak dużym taktowaniu 20MHz i tak małym preskalerze = 64 ???

Oczywiście błędy w konsoli mogą wynikać z kolejnych mega błędów w kodzie, ale jak można coś pomóc nie widząc tego kodu, po błędach można tylko się domyślać i zgadywać że definicja przerwania jest powielona ?

------------------------ [ Dodano po: 1 minucie ]

Marhef napisał(a):
A dodałeś #include <avr/interrupt.h>?

To już może być dobry hint - ale znowu to zgaduj zgadule jeśli nie widać całego kodu

_________________
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: 20 wrz 2023, o 02:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

Marhef napisał(a):
A dodałeś #include <avr/interrupt.h>?

Oczywiście.
mirekk36 napisał(a):
Tymczasem przechodząc do kodu,

1. autor pisze o rejestrze porównawczym a zamiast niego wpisuje w kodzie TCNT0! ... to jest rejestr porównawczy
2. autor sądząc po dalszych błędach chce używać przerwania od PRZEPEŁNIENIA a w kodzie chyba używa (choć już tego nie pokazuje) TIMER0-OVF_vect - to jest wektor przerwania od przepełnienia ?
3. Dlaczego autor nie stosuje przejrzystego zapisu do wyliczania rejestru porównania (tylko trzeba jego dobrą nazwę wpisać) przejrzystego wzoru typu: = (F_CPU/prescaler/freq)-1
4. Jakim cudem autor chce osiągnąć przerwanie co 1ms przy tak dużym taktowaniu 20MHz i tak małym preskalerze = 64 ???


1. Tu faktycznie namieszałem, pozostałość przy zmianie kodu
2. Tak jest to na screenie choć powinno być wstawione tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a o ile wiem to wektor TIMER0_OVF_vect jest od przepełnienia jak wszystkie wektory , które zawierają w nazwie _OVF
3. Wyliczenie jest wg. tego wzoru, który napisałeś
4. Sory, preskaler ustawiony na 1024, tylko w komentarzu nie poprawiłem a TCNT0 = 18

Dzięki wszystkim za podpowiedzi. Błędem jednak był brak jednego nawiasu klamrowego gdzieś w kodzie, dlatego też to przeoczyłem. Kompilator już nie krzyczy.
Muszę jednak popracować jeszcze nad timerem, żeby nie mylić rejestrów, które są od przepełnienia a które od porównania.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2023, o 13:22 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
a o ile wiem to wektor TIMER0_OVF_vect jest od przepełnienia jak wszystkie wektory , które zawierają w nazwie _OVF

tak to jest od przepełnienia ale ty ustawiasz tryb CTC i w opisie masz rejestr porównania - więc to nie to przerwanie albo nie ten tryb pracy - o to mi chodziło

_________________
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: 20 wrz 2023, o 18:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 315
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

mirekk36 napisał(a):
Cytuj:
a o ile wiem to wektor TIMER0_OVF_vect jest od przepełnienia jak wszystkie wektory , które zawierają w nazwie _OVF

tak to jest od przepełnienia ale ty ustawiasz tryb CTC i w opisie masz rejestr porównania - więc to nie to przerwanie albo nie ten tryb pracy - o to mi chodziło

Ok Mirku, tylko tak dawno się nie bawiłem timerami, że wszystko mi się miesza. Muszę powtórzyć materiał z BB.
Pozdrawiam.

_________________
http://www.avrboss.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2023, o 19:56 
Offline
Moderator
Avatar użytkownika

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

mario2015 napisał(a):
Ok Mirku, tylko tak dawno się nie bawiłem timerami, że wszystko mi się miesza

A no to teraz wszystko jasne ;) ale spokojnie - ja sam jak nieraz długo siedzę albo tylko w Delphi albo tylko w kodowaniu ESP to też jak sięgam do AVR to mam czarne dziury w pamięci ;) co zrobić

_________________
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: 8 ] 

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