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 19 maja 2025, o 07:09


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 26 ] 
    Autor Wiadomość
    PostNapisane: 14 maja 2014, o 15:40 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 15:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Napisz co to za procesor. Poza tym, nie wiem jak to jest w arduino, ale w C funkcja cli(); właśnie wyłącza przerwanie. Zamiast cli(); napisz sei(); i zobacz, czy wtedy przerwanie się wykona.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:03 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    To procesor z arduino leonardo. Cli(); wyłącza wiem. Jeste na początku dany. Przed vectorem timera jest sei();.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Wyrzuć to cli(); to po pierwsze. Po drugie napisz z którego timera korzystasz, bo inicjujesz timer1 a procedurę obsługi przerwania masz dla timer2. Rozumiem, że procesor, to atmega32?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:09 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    ATmega32u4 - taki procesor.
    cli(); wyłączyłem.

    timer1 jest załączony jak widać. timer2 to tylko tekst na niego podstawie miał być napisany ten kod - to część kodu z innego procesora



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:15 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Takie pytanko. Jak ma działać timer2 jak nie jest zainicjowany? :shock:

    Spróbuj wpisać to jako incjalizacja:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:22 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    error: 'TCCR2B' was not declared in this scope

    jak to chce zainicjalizować to wyskakuje brak deklaracji xd



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:23 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Nie dziwię się, bo takiego rejestru nie ma w tym µC. Wpisz to co ja Ci podałem.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:27 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    wpisałem ten kod co dałes i dalej to samo brak deklaracji



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Pokaż cały kod i to co Ci wyskakuje.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:34 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    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:
    sketch_may14a.ino: In function 'void setup()':
    sketch_may14a:41: error: 'OCR2' was not declared in this scope
    sketch_may14a:42: error: 'TCCR2' was not declared in this scope
    sketch_may14a:42: error: 'WGM21' was not declared in this scope
    sketch_may14a:43: error: 'CS21' was not declared in this scope
    sketch_may14a:43: error: 'CS22' was not declared in this scope
    sketch_may14a:44: error: 'TIMSK' was not declared in this scope
    sketch_may14a:44: error: 'OCIE2' was not declared in this scope



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Zmyliło mnie Twoje wywoływanie obsługi przerwania. Zagłębiłem się bardziej w notkę i wygląda na to, że Atmega32u4 nie posiada timer2. Wybierz sonie jakiś inny.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:46 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    Już znalazłem w nocie timer0, timer1, timer3 oraz timer4 - wybieram timer1

    Jak to ustawić teraz?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 16:59 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Timer0, Timer1, Timer3, Timer4.

    Wpisz to i zobacz.

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



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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 17:05 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    Błąd kompilacji:

    Servo\Servo.cpp.o: In function `__vector_17':
    C:\Program Files (x86)\Arduino\libraries\Servo/Servo.cpp:103: multiple definition of `__vector_17'
    sketch_may14a.cpp.o:C:\Program Files (x86)\Arduino/sketch_may14a.ino:63: first defined here

    Teraz takie coś wyskakuje.

    Tak jakby ten vector był zajęty przez serwo tak? może timer3 ? chyba że się mylę z tym



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 17:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Jeszcze jedno na jakim timerze masz zrealizowane PWM?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 17:11 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    Po zmienieniu COMPA tego vectora na OVF kompiluje.
    Może na COMPB zmienić ? musi być COMP ? na COMPB też kompiluje.

    dservo jest podpięte do pinu13 w arduino.



    Ostatnio edytowano 14 maja 2014, o 17:14 przez daniel89, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 17:14 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Cytuj:
    musi być COMP ?


    Nie musi. Przecież Ty o tym decydujesz w jakim trybie ma działać timer. Jeżeli kompiluje to podłącz układ i zobacz, czy przerwanie działa.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 maja 2014, o 17:17 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    do obsługi pwm w tym pojeździe jest użyty mostek h - l293dne i z niego wyjścia enable czyli pwm są podpięte pod pin 6 oraz 11 w Arduino.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 maja 2014, o 23:16 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    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.


    Czemu mi nie działa tak jak powinno przerwanie . Ustawiam na przeróżne wartości w OCR1B i ciągle jest to samo miga co 3 sekundy na 3 sekundy. Gdy wyrzucę zerowanie TCCR1A = 0; to miga co 0,1 sekundy i też mimo modyfikacji w OCR1B dalej jest to samo.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 maja 2014, o 20:17 
    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

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

    W trybie CTC Timerx liczy do OCRxA.

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 maja 2014, o 23:24 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    Nic to nie dało dalej jest co 3 sekundy na 3 sekundy. Ustawiłem OCRxB nie A gdyż A było zajęte przez vector__17 z biblioteki servo.h. Zmieniałem wartość OCR1A na dowolnie inną , liczyłem z drugiego wzoru tj. (Mhz/prescaler *2/ 2) - 1 ; gdzie 2 to Wartość 1Hz, czyli 1 sekunda i tak było dalej co 3 sekundy na 3 sekundy - nic nie daje zmiana tej wartości.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 maja 2014, o 14:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Taktowanie, to wewnętrzny oscylator, czy zewnętrzny rezonator? Jeżeli to drugie, to czy zmieniałeś fusebity?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 maja 2014, o 18:35 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    Taktowanie to zewnętrzny rezonator kwarcowy ustawiony na 16MHz. To jest płytka gotowa startowa Arduino z wgranym bootloaderem. Żadnych fusbitów nie zmieniałem . Tutaj masz ustawienia :
    Kod:
    leonardo.name=Arduino Leonardo
    leonardo.upload.protocol=avr109
    leonardo.upload.maximum_size=28672
    leonardo.upload.speed=57600
    leonardo.upload.disable_flushing=true
    leonardo.bootloader.low_fuses=0xff
    leonardo.bootloader.high_fuses=0xd8
    leonardo.bootloader.extended_fuses=0xcb
    leonardo.bootloader.path=caterina
    leonardo.bootloader.file=Caterina-Leonardo.hex
    leonardo.bootloader.unlock_bits=0x3F
    leonardo.bootloader.lock_bits=0x2F
    leonardo.build.mcu=atmega32u4
    leonardo.build.f_cpu=16000000L
    leonardo.build.vid=0x2341
    leonardo.build.pid=0x8036
    leonardo.build.core=arduino
    leonardo.build.variant=leonardo




    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 maja 2014, o 19:03 
    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

    Podsumowując:
    - nie możesz używać przerwania TIMER1_COMPA_vect, czyli vector__17, bo jest zajęte przez bibliotekę obsługującą serwomechanizmy i tym samym nie możesz używać trybu CTC dla Timera 1
    - Timera 2 nie ma

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

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 19 maja 2014, o 19:52 
    Offline
    Użytkownik

    Dołączył(a): 13 maja 2014
    Posty: 27
    Pomógł: 0

    Co do timer 1 - compA było zajęte przez vector__17 ale compB można było ustawić. Zmieniłem na timer 3 compA i dalej mimo modyfikacji dioda miga co 3 sekundy na 3 sekundy



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

    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