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



Teraz jest 22 sie 2017, o 10:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 28 ] 
Autor Wiadomość
PostNapisane: 16 maja 2017, o 19:21 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2017, o 19:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 150
Lokalizacja: Warszawa
Pomógł: 4

Przecież w bluebooku masz do doskonale wyjaśnione.
Poniżej masz kilka screenów z noty - informacje podane na tacy: :)

TRYB PRACY:

Obrazek

PRESKALER + REJESTR PRZEPEŁNIENIA:

Obrazek

Zezwolenie na przerwanie znajdziesz stronę niżej (87 str.).
Przeczytaj koniecznie ten rozdział o timerach w bluebooku (przy okazji multipleksowania).

Pozdr.

_________________
Każdy wiek jest dobry na elektronikę :)



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

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

Porównywałem to do BlueBooka ale jakoś nie wiem co mam poustawiać pozmieniać żeby zadziałało .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2017, o 20:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 150
Lokalizacja: Warszawa
Pomógł: 4

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ę? 8-)
Czy tylko porównujesz kod?

Pozdr.

_________________
Każdy wiek jest dobry na elektronikę :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2017, o 20:49 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 maja 2017, o 21:26 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1113
Lokalizacja: okolice Warszawa
Pomógł: 104

Witam,
a sygnał zbierasz z PB3 czy z PB4 ?
Obrazek



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

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

Zadnych sygnałow nie zbieram wyświetlacz led mam podłączony do portu B0 - B7 i D3 - D6



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2017, o 06:35 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1113
Lokalizacja: okolice Warszawa
Pomógł: 104

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: 17 maja 2017, o 07:38 
Offline
Moderator
Avatar użytkownika

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

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ć

_________________
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: 17 maja 2017, o 15:40 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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ć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2017, o 16:48 
Offline
Moderator
Avatar użytkownika

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

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

_________________
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: 17 maja 2017, o 16:59 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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.



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

Dołączył(a): 23 paź 2014
Posty: 371
Lokalizacja: Trójmiasto
Pomógł: 53

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ą...



Ostatnio edytowano 17 maja 2017, o 17:30 przez xentis, łącznie edytowano 1 raz

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

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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);



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

Dołączył(a): 23 paź 2014
Posty: 371
Lokalizacja: Trójmiasto
Pomógł: 53

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 ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2017, o 18:20 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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)



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

Dołączył(a): 23 paź 2014
Posty: 371
Lokalizacja: Trójmiasto
Pomógł: 53

Nazwa wektora przerwania jest inna
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: 17 maja 2017, o 19:18 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1113
Lokalizacja: okolice Warszawa
Pomógł: 104

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2017, o 20:25 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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++



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

Dołączył(a): 23 paź 2014
Posty: 371
Lokalizacja: Trójmiasto
Pomógł: 53

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...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2017, o 21:02 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1113
Lokalizacja: okolice Warszawa
Pomógł: 104

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" :lol:
No właśnie...... kiedyś może się pouczę. ;)
(na razie niestety brak trochę czasu i zapotrzebowania z mojej strony) :?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2017, o 21:38 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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ę :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 maja 2017, o 22:15 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1113
Lokalizacja: okolice Warszawa
Pomógł: 104

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 :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

:)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2017, o 10:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 150
Lokalizacja: Warszawa
Pomógł: 4

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.

_________________
Każdy wiek jest dobry na elektronikę :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2017, o 16:45 
Offline
Użytkownik

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2017, o 17:28 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1113
Lokalizacja: okolice Warszawa
Pomógł: 104

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. :)



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

Dołączył(a): 22 cze 2015
Posty: 27
Pomógł: 0

ł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 :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 maja 2017, o 20:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 150
Lokalizacja: Warszawa
Pomógł: 4

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. :D
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.

_________________
Każdy wiek jest dobry na elektronikę :)



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

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