ATNEL tech-forum https://forum.atnel.pl/ |
|
Timer z Atmegi 32 Do attiny 2313 https://forum.atnel.pl/topic18421.html |
Strona 1 z 1 |
Autor: | Manianass [ 16 maja 2017, o 19:21 ] |
Tytuł: | Timer z Atmegi 32 Do attiny 2313 |
Mam Książkę "MIKROKONTROLERY AVR JĘZYK C - PODSTAWY PROGRAMOWANIA" i Tam jest opisane na przykładzie Atmegi 32 a ja chce przerobić kod do mojej płytki z AtTiny 2313 chodzi dokładnie o ustawienia TIMER0 Kod: // ustawienie TIMER0 TCCR0A |= (1<<WGM01); // tryb CTC TCCR0A |= (1<<CS02)|(1<<CS00); // preskaler = 1024 OCR0 = 38; // dodatkowy podział przez 39 (rej. przepełnienia) TIMSK |= (1<<OCIE0); // zezwolenie na przerwanie CompareMatch to jest kawałek kodu z książki i w 1,3 i 4 linijce jest błąd a nie wiem jak przerobić , mam note pdf z AtTiny ale nie daje rady. |
Autor: | Manianass [ 16 maja 2017, o 19:52 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Porównywałem to do BlueBooka ale jakoś nie wiem co mam poustawiać pozmieniać żeby zadziałało . |
Autor: | Makowka [ 16 maja 2017, o 20:10 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
No tam gdzie jest 1 w tabelce masz ustawić bit na stan wysoki w danym rejestrze. Wszystko masz w nocie. Na pewno czytałeś niebieską książkę? Czy tylko porównujesz kod? Pozdr. |
Autor: | Manianass [ 16 maja 2017, o 20:49 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Przerobiłem to na Kod: // ustawienie TIMER0 TCCR0A |= (1<<WGM01); // tryb CTC TCCR0A |= (1<<CS02)|(1<<CS00); // preskaler = 1024 OCR0A = 38; // dodatkowy podział przez 39 (rej. przepełnienia) TIMSK |= (1<<OCIE0B); // zezwolenie na przerwanie CompareMatch kompilacja przeszła ale jeszcze nie działa wiec szukam dalej . A książkę czytałem i czytam nadal |
Autor: | Daro69 [ 16 maja 2017, o 21:26 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Witam, a sygnał zbierasz z PB3 czy z PB4 ? |
Autor: | Manianass [ 17 maja 2017, o 05:14 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Zadnych sygnałow nie zbieram wyświetlacz led mam podłączony do portu B0 - B7 i D3 - D6 |
Autor: | Daro69 [ 17 maja 2017, o 06:35 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
? |
Autor: | mirekk36 [ 17 maja 2017, o 07:38 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Manianass napisał(a): TCCR0A |= (1<<CS02)|(1<<CS00); // preskaler = 1024 typowy błąd, powtarzany wciąż przez początkująych, którym wydaje się, że skoro korzystają z kanału A to znaczy że wszystkie bity są w rejestrze z literką A na końcu. Warto jednak zajrzeć do noty PDF na rozpiskę bitów w rejestrach a nie na czuja robić |
Autor: | Manianass [ 17 maja 2017, o 15:40 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Ale Nic mi nie daje patrzenie w pdf nie wiem co wstawić. Nie kumam tego dlatego licze na waszą pomoc a w książce jest opisane ale jak dla Mnie to jakoś ... i nie mogę tego przeskoczyć |
Autor: | mirekk36 [ 17 maja 2017, o 16:48 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Manianass napisał(a): Ale Nic mi nie daje patrzenie w pdf To może opisz co widzisz i rozumiesz z tego PDF'a jeśli chodzi o rejestry a czego nie rozumiesz - łatwiej będzie podpowiedzieć ------------------------ [ Dodano po: 1 minucie ] Manianass napisał(a): Nie kumam tego No ale czego nie kumasz ? ------------------------ [ Dodano po: 2 minutach ] Manianass napisał(a): dlatego licze na waszą pomoc Czyli na jaką ? Jak sam widzisz, żeby uzyskać dobrą pomoc warto CHOCIAŻ ODROBINĘ się wysilić , odrobinę i porządnie opisać problem - a tobie nawet tego nie chce się zrobić? ... ja po twoim opisie to nawet nie wiem czego ty nie kumasz |
Autor: | Manianass [ 17 maja 2017, o 16:59 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
P. Mirku Che przenieść program z Atmegi32 na Attiny2313 czyli z książce jest przykład opisany na Atmege a ja jej fizycznie nie posiadam. A problem jest w tych 4 linijkach kodu kompilator wyświetla błędy. Nie wiem jak skonfigurowac TIMER0 do pracy w trybie CTC z podziałem 1024 i zezwolić na przerwanie typu Compare Match. |
Autor: | xentis [ 17 maja 2017, o 17:12 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Tu masz notę http://www.atmel.com/images/doc8246.pdf Na stronie 84 masz tabelkę z rozpiską trybów pracy timera0. Tryb CTC to mode 2 czyli trzeba ustawić WGM01 w rejestrze TCCR0A. Na stronie 86 tej samej noty masz kolejną tabelkę z rozpiską preskalera: dla podziału 1024 widać że trzeba ustawić CS00 i CS02 w rejestrze TCCR0B Rejestr porównania nazywa się tak samo więc dodatkowy podział przez 38 wygląda tak samo. Przy aktywacji przerwania bit odpowiedzialny za przerwanie Compare Match A nazywa się OCIE0A i należy go ustawić w rejestrze TIMSK o czym możesz przeczytać na stronie 87. Mam nadzieję że powyższe posłuży Ci nie tylko do przeklepania wartości do kodu programu, ale również do przeanalizowania w nocie pdf co za co jest odpowiedzialne. Na prawdę nie jest to trudne trzeba tylko na spokojnie pochylić się nad notą... |
Autor: | Manianass [ 17 maja 2017, o 17:25 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Ustawiłem tak kompilujue sie ale wyswietla ostrzezenia że cos nie tak oto kod Cytuj: TCCR0A |= (1<<WGM01); // tryb CTC TCCR0B|= (1<<CS02)|(1<<CS00); // preskaler = 1024 OCR0A = 38; // dodatkowy podział przez 39 (rej. przepełnienia) TIMSK |= (1<<OCIE0B); |
Autor: | xentis [ 17 maja 2017, o 17:35 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Dla czego w TIMSK ustawiasz OCIE0B? Manianass napisał(a): wyswietla ostrzezenia że cos nie tak Kolego ale ostrzeżenia nie wyświetlają się "że coś nie tak". Musisz podać co konkretnie i przy czym nie podoba się kompilatorowi bo obecnie kawy nie piję więc nie mogę powróżyć z fusów... taki żarcik - tylko bez obrazy |
Autor: | Manianass [ 17 maja 2017, o 18:20 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Takie ostrzeżenie ./d_led.c:58:5: warning: 'TIMER0_COMP_vect' appears to be a misspelled signal handler [enabled by default] ISR(TIMER0_COMP_vect) A kod w tej linijce wygląda tak. Cytuj: ISR(TIMER0_COMP_vect)
|
Autor: | xentis [ 17 maja 2017, o 18:25 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Nazwa wektora przerwania jest inna |
Autor: | Daro69 [ 17 maja 2017, o 19:18 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
witam, @Manianass . Czy pracujesz w środowisku ECLIPSE ? (polecam) W ECLIPSE jest fajny skrót klawiszowy "Ctrl + spacja". Po ustawieniu właściwego uc, pomaga błyskawicznie odnaleźć istniejący rejestr. Pozdrawiam. |
Autor: | Manianass [ 17 maja 2017, o 20:25 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Tak korzystam z Eclipsa. Chyba jestem za słaby do C-AVR Avr programuje w Bascomie jakoś programowanie tam mi idzie lepiej. Normalnie pisze proste Aplikacje w Builder C++ |
Autor: | xentis [ 17 maja 2017, o 20:50 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Oj tam zaraz za słaby. Jak siedziałeś w innym języku programowania może po prostu musisz się przestawić... No i musisz się starać analizować to co do Ciebie mówi kompilator. Na pierwszy rzut oka może trochę straszą te warningi ale tak na prawdę nawet jak nie jesteś biegły w angielskim to zawsze możesz skorzystać z dobrodziejstw wujka https://translate.google.pl może nie działa to idealnie ale zazwyczaj naprowadzi na właściwą ścieżkę A prawda jest taka że "Nie od razu Rzym zbudowano", każdy się kiedyś uczył od zera, ba nawet ciągle się uczy (i jak to mówią głupi umiera hehe). A grunt to się nie poddawać i starać się na różne sposoby pozyskiwać wiedzę. Czasem spojrzenie z innej perspektywy, czy inny przykład w danym zagadnieniu powoduje olśnienie i wszystko staje się jasne... |
Autor: | Daro69 [ 17 maja 2017, o 21:02 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Manianass napisał(a): Chyba jestem za słaby do C-AVR No nieeee.... Zapomnij o tym zdaniu. A ja nie programuje w Bascomie. bo "za słaby jestem" No właśnie...... kiedyś może się pouczę. (na razie niestety brak trochę czasu i zapotrzebowania z mojej strony) |
Autor: | Manianass [ 17 maja 2017, o 21:38 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
W baskomie skonfigurowanie 2 Timerów wygląda tak z podziałem przez 64 Kod: Config Timer0 = Timer , Prescale = 64 : Config Timer1 = Timer , Prescale = 64 odblokowanie przerwań Kod: Enable Interrupts : Enable Timer0 : Enable Timer1 I na deser obsługa co ma się wykonać w danym przerwaniu nazwane Kod: On Timer0 Wykonaj_Co4ms: On Timer1 Wykonaj_Co1s Szkoda ze nie udaje mi się na razie w C tego zrobić ale z czasem możne mi się uda ! A na razie poszukam czegoś łatwiejszego do zrobienia Sterownik do 3 rolet miało być przez Wifi (moduł atb ) ale jak nie umiem włączyć Taimerka to co dopiero UDP. Ale postaram się zrealizować plan Kiedyś jak się na uczę |
Autor: | Daro69 [ 17 maja 2017, o 22:15 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Manianass napisał(a): W baskomie skonfigurowanie 2 Timerów wygląda tak A w C dla ATtiny_2313 ustawienie jednego Timera_0 wygląda tak np. - jeżeli się sie machnąłem tak na biegu język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
|
Autor: | Makowka [ 18 maja 2017, o 10:10 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
To na prawdę nie jest trudne. Zachęcam cię, przeczytaj rozdział o multipleksowaniu - wyświetlacz LED. Tam masz od początku omówione wyczytanie z noty i ustawienie tego w uC. Pare stron i problem z głowy. Pozdr. |
Autor: | Manianass [ 18 maja 2017, o 16:45 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Wpisałem tak jak Daro69 podpowiedział zmieniłem tylko OCR0 na OCR0A i działa, ale zawsze jest cos co początkujący nie kuma A wiec problem jest taki ze wyświetla tylko jeden z 4 wyświetlaczy bo w Atmedze32 wyświetlacze są podłączone do Portu C do 4 młodych bitów i zrobiona jest maska na nie a ja na mojej płytce (nie stykówce) mam podłączone do portu D a dokładnie do PD3,PD4,PD5 i PD6 i dlatego działa tylko jeden wyświetlacz PD3 bo zalicza się do młodszej części bitu. Kod: #define CA1 (1<<PD3) // CA1 oznacza bit nr.0 portu C #define CA2 (1<<PD4) // CA2 oznacza bit nr.1 portu C #define CA3 (1<<PD5) // CA3 oznacza bit nr.2 portu C #define CA4 (1<<PD6) // CA4 oznacza bit nr.3 portu C jak podłączyłem kabelkami młode piny do wyjśc na płytce to działa wysmienicie tylko ze mam wolny tylko 1 pin z całej atiny w takiej konfiguracjii. |
Autor: | Daro69 [ 18 maja 2017, o 17:28 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
witam, wypatrzyłeś OCR0. ja przegapiłem. Manianass napisał(a): A wiec problem jest taki ...... jest i na to sposób, ale proponuję założyć nowy wątek i nadać mu tytuł związany z anodami. ------------------------ [ Dodano po: 13 minutach ] albo pomyszkować np. tu : topic16164-30.html może coś się przyda. |
Autor: | Manianass [ 18 maja 2017, o 18:17 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
ładny tasiemiec tam powstał tylko ze ja już mam działający program tylko maskowanie żeby zmienić, bo tamten kod to raczej do testów jak ktoś ma potrzebę. Załoze nowy temat a jak sie nie uda tego przerobić to w układzie jak bede budował kiedyś to podłącze Cyferblaty do PD0-PD3 |
Autor: | Makowka [ 18 maja 2017, o 20:48 ] |
Tytuł: | Re: Timer z Atmegi 32 Do attiny 2313 |
Manianass napisał(a): a jak sie nie uda tego przerobić to w układzie jak bede budował kiedyś to podłącze Cyferblaty do PD0-PD3 Moim zdaniem to nie jest dobre podejście do próby radzenia sobie z problemami. Masz jeszcze braki z bluebooka i będzie ci ciężko się ruszyć dalej bez opanowania podstaw. Ja absolutnie nie uważam się za żadnego specjalistę, też jestem początkujący. Na twoim miejscu spróbowałbym powoli, na spokojnie wraz z książką po kolei wykonywać zadania (po przeczytaniu części teoretycznej). Wtedy większość problemów zniknie. Ale to już twoja decyzja. Pozdr. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |