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



Teraz jest 13 mar 2026, o 05:31


Strefa czasowa: UTC + 1





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

Dołączył(a): 11 kwi 2014
Posty: 196
Lokalizacja: Sandomierz
Pomógł: 0

Mam problem z wartością początkową T0 w atmedze8, na wstępie ustawiam sygnał zegarowy licznika na źródło zewnętrzne (T0), potem zeruję licznik aby mieć pewność że nie znajdą się w nim jakieś śmieci. Wartość licznika T0 w przerwaniu generowanym przez T1 co ok 1s przepisuję na wyświetlacz LCD. Dodatkowo każde przerwanie zmienia stan portu PD2 - do którego jest podpięta dioda - na przeciwny.

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


Problem w tym przy braku sygnału na wejściu T0 wyświetlacz wyświetla wartości rożne od 0, czasem przy restarcie drugie przerwanie zwiększa lub zmniejsza tą wartość o 1, podanie jakiegokolwiek impulsu na wejście T0 w ogóle nie zmienia stanu licznika.
W momencie kiedy do licznikT0 podstawię bezpośrednio wartość liczbową, np
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To wyświetlacz wyświetla tą wartość. Również gdy przed przypisaniem do zmiennej licznikT0 wartości TCNT0 piszę do TCNT0 0 (TCNT0 = 0x00;) to wyświetla prawidłową wartość czyli 0.

Co robię nie tak że wyświetlacz podaje wartość w TCNT0 inną niż 0 w przypadku kiedy na wejściu T0 brak impulsów zegarowych ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2015, o 20:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Tak na szybko przejrzane
podciągnij (pullUp) wejście PD4/T0 do VCC wewnętrznym rezystorem
żeby ustawić stabilny stan wysoki.
Do zliczania zwieraj PD4/T0 z masą



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2015, o 21:37 
Offline
Użytkownik

Dołączył(a): 11 kwi 2014
Posty: 196
Lokalizacja: Sandomierz
Pomógł: 0

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


Ale niewiele to zmieniło, w zasadzie nic, uP wyświetla jakąś wartość na LCD, nie wiem co to jest, na impulsy na wejściu T0 nie reaguje. Zwieram do masy T0 ale wartość z zasadzie bez zmian. Teraz po tej modyfikacji przy każdym przerwaniu zmienia się cyklicznie wartość +/-1. Zwarcie do masy nic nie zmienia, liczba oscyluje +/1.

Dla sprawdzenia przeniosłem zerowanie TCNT1 pod koniec obsługi przerwania i zmieniłem przypisanie zmiennej licznikT0 na TCNT1. Tu pokazuje 3907, można przypuszczać że to będzie faktyczna wartość TCNT1. Licznik ten po osiągnięciu wartości 3906 generuje przerwanie w którym zatrzymuje się T0.

Zmieniłem procesor na atmega328P z wymaganymi korektami w programie - bez zmian.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2015, o 21:55 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

a czy ta linia kodu jest aby na pewno prawidłowa?:
TCCR0 |= ((1<CS00) | (1<CS01) | (1<CS02));



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2015, o 22:14 
Offline
Użytkownik

Dołączył(a): 11 kwi 2014
Posty: 196
Lokalizacja: Sandomierz
Pomógł: 0

krish napisał(a):
a czy ta linia kodu jest aby na pewno prawidłowa?:
TCCR0 |= ((1<CS00) | (1<CS01) | (1<CS02));

Tak, tu był błąd. Powinno być TCCR0 |= (1<<CS00) | (1<<CS01) | (1<<CS02);

A tyle czasu zmarnowałem.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO