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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 18:40


    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: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    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: 1170
    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: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    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: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    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: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 12 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO