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



Teraz jest 24 lut 2025, o 09:38


Strefa czasowa: UTC + 1





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

Dołączył(a): 25 mar 2017
Posty: 27
Pomógł: 0

Witam.
mikrokontroler prawidłowo wyświetla temperaturę, jednak problem polega na odświeżaniu wyświetlacza. Mam podłączony jeden czujnik T1 na którym jest odpowiednia temperatura wyświetlana, na T2 jest error, bo nie mam go podłączonego. Błędy znajdują się w
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

te błędy to:
Obrazek

a consola wygląda następująco:

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: 20 maja 2017, o 20:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 cze 2014
Posty: 820
Lokalizacja: Tam gdzie PYRY są
Pomógł: 64

jaki procek używasz?? kompilator krzyczy, że nie może odnaleźć odpowiednich rejestrów, których chcesz użyć. Wg mnie albo użyłeś rejestrów dla złego procesora albo nie wybrałeś własciwie we włwściwościach projektu. Albo brakuje includa


wg konsoli używasz atmega 8 a on w TCCR0 nie ma rejestrów do których się odwołujesz
Obrazek

podobnie z TIMSK

_________________
IntegraMETEO
WordCLOCK
IntegraTOUCH



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

Dołączył(a): 25 mar 2017
Posty: 27
Pomógł: 0

Czy jest możliwość zaprogramowania tego na atmega8?



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

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Cześć. Jasne, że tak.
Otwórz notę pdf dla atmegi8 i pozmieniaj nazwy rejestrów dla timera. A w programie, w którym piszesz kod zmień we właściwościach projektu mikrokontroler na atmega8 i sprawdź taktowanie. No i nie zapomnij zainkludować biblioteki przerwań.



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

Dołączył(a): 25 mar 2017
Posty: 27
Pomógł: 0

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

Niestety nie wiem co zrobic z wierszem trzecim OCR0 =107;, jak w atmega8 zastąpić ten wers?

------------------------ [ Dodano po: 7 minutach ]

"Aby odblokować przerwanie od przepełnienia się timera countera należy ustawić bit TOIE0 w rejestrze TIMSK na jedynkę "1" oraz pamiętać o tym że aby były generowane przerwania musimy odblokować również zezwolenie ogólne na przerwania w mikroprocesorze mikrokontrolerze."

Gdzie mogę odblokować zezwolenie na przerwania w mikro?

Pierwszy wiersz jest prawdopodobnie też źle, CS01 nie odnosi się do trybu CTC, a do prekalera



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

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Musisz zdecydować czy używasz przerwaniaod przepełnienia czy od porównania (COMPARE lub OVERFLOW) Ty masz najpierw usatwiony tryb CTC a później próbujesz odblokować przerwanie od OVF.. Jak chcesz ustawić przerwania od porónania, poszukaj w TIMSK bitu odpowiadającego za przerwania COMPARE MATCH a nie OVERFLOW. Ty masz TOIE0 (Timer Overflow Inrerrupt Enable).

A jeżeli chcesz zwykły tryb od przepełnienia to nie ustawiaj trybu ctc i nie używaj OCR0. Tryb NORMAL jest ustawiony domyślnie. Ustawiasz tylko wartość timera (np. TCNT0 = 100) od której timer będzie liczył aż do przepełnienia. Przeczytaj jeszcze raz notę.



Ostatnio edytowano 20 maja 2017, o 22:20 przez sp2ews, łącznie edytowano 2 razy

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

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

Witam,
ATmega8 timer0 - niestety tryb normal

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

aby uzyskać podział przez 107 należy wystartować z wartością 255-107=148; w (TCNT0)
będzie zliczał licznik od 148 do 255 i nastąpi przerwanie od przepełnienia w którym trzeba wpisać :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

oczywiście nie zapomnieć o globalnym zeawoleniu na przerwania ' sei();' przed while(1){}.

------------------------ [ Dodano po: 8 minutach ]

chyba do wartości TCNT0 trzeba dodać 1. = 149.



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

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Daro69 napisał(a):
Witam,
ATmega8 timer0 - niestety tryb normal

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

aby uzyskać podział przez 107 należy wystartować z wartością 255-107=148; w (TCNT0)
będzie zliczał licznik od 148 do 255 i nastąpi przerwanie od przepełnienia w którym trzeba wpisać :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

oczywiście nie zapomnieć o globalnym zeawoleniu na przerwania ' sei();' przed while(1){}.

------------------------ [ Dodano po: 8 minutach ]

chyba do wartości TCNT0 trzeba dodać 1. = 149.


I nie można mieszać różnych trybów - albo CTC albo NORMAL...



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

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

sp2ews napisał(a):
I nie można mieszać różnych trybów - albo CTC albo NORMAL...

:D
Nawet się nie da, jak widać. :)
Atmega8 w timerze_0 nie ma trybu CTC. ;)
kolego @ getbigpayout, jeżeli zależy Tobie na trybie CTC w Atmega8 to uruchom timer_2.(też 8 bit i ma CTC).
zerknij do noty, wszystko podobnie . :)



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

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Daro69 napisał(a):
Atmega8 w timerze_0 nie ma trybu CTC.

No to już pomijam, nie mam przed sobą noty. To tak tylko na przyszłość, żeby nie mieszać jednego z drugim bo nigdy nie będzie działało.



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

Dołączył(a): 25 mar 2017
Posty: 27
Pomógł: 0

Wszystko działa, tylko teraz pojawił się problem z miganiem temperatury, i cięzkim do ustawienia kontrastem. Da się zwiększyć prędkość odświeżania, żeby nie było widoczne dla oka?



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

Dołączył(a): 21 sie 2014
Posty: 90
Pomógł: 0

Jeśli chodzi o miganie, nie napisałeś jak to wyświetlasz - na lcd44780? I skąd masz bibliotekę do obsługi tego wyświetlacza. Napisz może coś więcej.
Ja np. na stykówce, do ustawiania kontrastu używam rezystora 2,2k zwartego do masy. Ciężko cokolwiek pisać jeśli nie wiemy co tam właściwie masz...



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

Dołączył(a): 25 mar 2017
Posty: 27
Pomógł: 0

Tak LCD44780, ustawienie kontrastu potecjometrem W.L 10k



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

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

zrozumiałem że to miganie to pwm podświetlania LCD;ka.
w którym miejscu kodu obsługujesz PWM?
sprzętowo czy programowo ?

------------------------ [ Dodano po: 3 minutach ]

jeżeli mryga wartość temperatury to spowolnij wyświetlanie np, co 1s.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 maja 2017, o 12:27 
Offline
Użytkownik

Dołączył(a): 25 mar 2017
Posty: 27
Pomógł: 0

rozwiązałem problem, był w kodzie ISR, poprawione. Dzięki za pomoc.



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

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