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 19:26


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
    Autor Wiadomość
    PostNapisane: 22 mar 2013, o 16:06 
    Offline
    Użytkownik

    Dołączył(a): 22 mar 2013
    Posty: 32
    Pomógł: 0

    Witam.
    Męczę się z tym i nie mogę sobie poradzić. Chciałem migać diodą LED co 1 s, ale za pomocą przerwania CTC. Oto co napisałem:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Kod nie działa. Chciałem się spytać co jest nie tak w tym kodzie. Dodam tylko, że jak na razie zakup książki jest dla mnie za dużym wydatkiem, a wszystkie informację biorę z internetu. Procek to Atmega8 taktowana wewnętrznym oscylatorem 1MHz.
    Pozdrawiam.


    Kod wstawiamy przy pomocy [syntax=c] - Zielony J.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 16:14 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 31 lip 2012
    Posty: 157
    Pomógł: 8

    WGM21 a nie WGM12, TO SAMO: TCCR2 |= (1<<CS10) | (1<<CS12); i napisz jeszcze jakim zegarem to masz taktowane


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 16:19 
    Offline
    Użytkownik

    Dołączył(a): 22 mar 2013
    Posty: 32
    Pomógł: 0

    Czyli to:
    Kod:
    TCCR2 |= (1<<CS10) | (1<<CS12);

    Mam zmienić na to:
    Kod:
     TCCR2 |= (1<<CS20) | (1<<CS22);
    ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 16:40 
    Offline
    Użytkownik

    Dołączył(a): 05 lut 2013
    Posty: 302
    Pomógł: 19

    To oprocz przejrzystosci niewiele zmieni, ja bym bardziej sie skupil na:
    TIMSK |= (1<<OCIE1A) | (1<<OCIE1B);
    i poczytal o rejestrze TIMSK w dokumentacji.
    Dla podpowiedzi powiem ze OCIE1A i OCIE1B sa od timera1.

    ------------------------ [ Dodano po: 10 minutach ]

    Spojrzalem jeszcze raz, zastanow sie jeszcze nad komenda:
    ISR(TIMER0_COMP_vect) {


    Podsumowujac, inicjujesz timer 2 bitami z timera1 (to jeszcze nie jest az taki blad), nastepnie ustawiasz przerwania timera1, a kod obslugi przerwan piszesz dla timera0.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 17:53 
    Offline
    Użytkownik

    Dołączył(a): 22 mar 2013
    Posty: 32
    Pomógł: 0

    Ok.
    Pooglądałem notę, kilka zmian i wyszło coś takiego:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Działa. Dziękuję i pozdrawiam.



    Co ja pisałem w pierwszym poście?? Zielony J.
    EDIT: Przepraszam. Poprawię.
    Mam jeszcze jedno pytanie, czy w Timer0 istnieje możliwość ustawienia trybu CTC? Bo w nocie nie widzę za bardzo.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 20:33 
    Offline
    Użytkownik

    Dołączył(a): 22 mar 2013
    Posty: 32
    Pomógł: 0

    Dzięki. Takiej odpowiedzi oczekiwałem :) Jeżeli chodzi o Timer2, to patrz wyżej :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 21:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 13 paź 2011
    Posty: 581
    Pomógł: 17

    Jakim kwarcem napędzasz procesor?
    1sek to dosyć długi okres czasu..


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 22:27 
    Offline
    Użytkownik

    Dołączył(a): 05 lut 2013
    Posty: 302
    Pomógł: 19

    faktem autentycznym :? jest, ze zalozyciel watku napedza wewnetrzym oscylatorem 1Mhz


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 mar 2013, o 22:27 
    Offline
    Użytkownik

    Dołączył(a): 22 mar 2013
    Posty: 32
    Pomógł: 0

    Wewnętrznym oscylatorem 1MHz.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 mar 2015, o 22:23 
    Offline
    Nowy

    Dołączył(a): 25 cze 2014
    Posty: 9
    Pomógł: 0

    Dołączę się do tematu jako że nie warto zakładać nowego do takiego samego problemu.

    Tak więc: Jako że multipleksowanie wyświetlaczy 7-segmentowych jakoś mi się nie udaje to postanowiłem cofnąć się do prostego migania diodą LED za pomocą przerwań CTC w odstępie 1 sec (przybliżony czas)

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


    BB już przekopany wraz z forum i blogiem ale błędu nie widzę. Z góry dziękuję za pomoc :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 mar 2015, o 23:04 
    Offline
    Nowy

    Dołączył(a): 25 cze 2014
    Posty: 9
    Pomógł: 0

    Zasadę działania tego typu przerwania zrozumiałem z BB i poradników. Błąd głupszy niż mogłem sobie wyobrazić:

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


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


    W każdym bądź razie dziękuje :)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 mar 2015, o 23:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 16 lut 2014
    Posty: 96
    Lokalizacja: Łódź
    Pomógł: 6

    A ja z kolei polecam zapoznanie się z trybem OVF Timera0, bo czasem do prostych zastosowań warto takiego niezaopatrzonego w CTC tykacza zaprzęgnąć do czarnej roboty, a Timery1 i 2 trzymać na czarną godzinę ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2015, o 12:25 
    Offline
    Nowy

    Dołączył(a): 25 cze 2014
    Posty: 9
    Pomógł: 0

    Na początek zgodnie z instrukcjami Mirka w BB postanowiłem zapoznać się z trybem CTC, jak znajdę znów czas to zajmę się innymi trybami :)



    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: 13 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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