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



Teraz jest 13 gru 2024, o 05:50


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
 Tytuł: Timer 16 bitowy
PostNapisane: 1 kwi 2019, o 20:48 
Offline
Użytkownik

Dołączył(a): 21 sty 2019
Posty: 34
Pomógł: 0

Witam, chciałbym aby timer atmegi32 zwiększał zmienną t co jedną sekundę. Niestety timer nie działa, a ja nie wiem gdzie zrobiłem błąd.

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


Będę wdzięczny za pomoc!



Ostatnio edytowano 12 kwi 2019, o 10:43 przez ShanSong, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 kwi 2019, o 20:54 
Offline
Użytkownik

Dołączył(a): 21 sty 2019
Posty: 34
Pomógł: 0

sei racja, a pętla jest już w main.c :p

------------------------ [ Dodano po: 4 minutach ]

dzięki za to sei(), teraz działa ale nie zlicza co sekundę



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 kwi 2019, o 21:04 
Offline
Użytkownik

Dołączył(a): 21 sty 2019
Posty: 34
Pomógł: 0

taktuje 8mhz jeżeli o to chodzi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2019, o 05:28 
Offline
Użytkownik

Dołączył(a): 31 lip 2016
Posty: 154
Pomógł: 4

A zmienna t to jakiego jest typu?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2019, o 07:12 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

ShanSong napisał(a):
teraz działa ale nie zlicza co sekundę


Wartość TOP dla wybranego przez Ciebie trybu CTC powinna być wpisana do rejestru OCR1A, a nie OCR1BH. W ogóle rejestr OCR1BH to rejestr 8-bitowy i próby wpisania do niego wartości większej od 255 nie mają sensu. W celu wpisania wartości 16-bitowej np. do 16-bitowego rejestru OCR1A w przypadku języka C nie trzeba rozbijać jej na bajty OCR1AH i OCR1AL. Wystarczy OCR1A = 31250 - 1;

Dla porządku lepiej byłoby zmienić też bit zezwolenia na przerwanie na OCIE1A, oraz nazwę wektora przerwania na TIMER1_COMPA_vect

No i zwróć uwagę na pytanie kolegi zorro. Chciał Ci przypomnieć, że w przypadku zmiennych używanych zarówno w procedurze obsługi przerwania jak i w pętli głównej programu powinny posiadać kwalifikator volatile.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2019, o 21:53 
Offline
Użytkownik

Dołączył(a): 21 sty 2019
Posty: 34
Pomógł: 0

Dzięki andrews, timer działa :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2019, o 07:42 
Offline
Moderator
Avatar użytkownika

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

ShanSong -> jesteś nowy na forum, więc bez żadnego warna i na spokojnie zwracam ci uwagę jak formatuje się kod źródłowy na forum, masz instrukcję: topic7402.html

proszę więc edytować swój pierwszy post i poprawić jak się należy ok?

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

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