RTV forum PL | NewsGroups PL

Jak skonfigurować timer0 w ATmega8 do wywoływania kodu co 10 ms i zmiana częstotliwości kwarcu?

atmega8

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonfigurować timer0 w ATmega8 do wywoływania kodu co 10 ms i zmiana częstotliwości kwarcu?

sikurasaka
Guest

Sun Jan 08, 2006 2:34 pm   



Mam kilka pytanek...

Mam sobie atmege8 taktowaną kwarcem wewnetrznym 1Mhz.

1. Jak ustawic timer0 zeby sie wypelnial co 10ms?
Jak poustawiac TCCR0, TCNT0, TIMSK i inne??

Potrzebuje po prostu wywolywac kod co 10ms - jak to szybko i bezbolesnie
zrobic??Wink
[waitms itp odpada...]

2. Jak zmienic czestotliwosc kwarca wewnetrznego (podobno mozna ja ustawic
nawet na 8Mhz)



Paweł

Krzysiek Kubicki
Guest

Sun Jan 08, 2006 3:26 pm   



Cześć

Ad 1
datasheet strona 70, wywoływanie kodu w przerwaniu

Ad 2
datasheet strona 28

--
Pozdrawiam
Krzysztof Kubicki
http://www.kubi.rox.pl

sikurasaka
Guest

Sun Jan 08, 2006 4:24 pm   



Użytkownik "Krzysiek Kubicki" napisał w wiadomości

Quote:
Cześć

Ad 1
datasheet strona 70, wywoływanie kodu w przerwaniu

Ad 2
datasheet strona 28


A mozna jakis przykladzik kodu (c) - bo tam nie ma przykladu...;(


Paweł

AdelA
Guest

Sun Jan 08, 2006 5:12 pm   



Quote:
A mozna jakis przykladzik kodu (c) - bo tam nie ma przykladu...;(

Tego kodem nie robisz tylko zmieniasz programatorem.

--
AdelA
Mail PRIV na mojej WWW
www.adela.pl

sikurasaka
Guest

Sun Jan 08, 2006 5:26 pm   



Uzytkownik "AdelA" <a@b.c> napisal w wiadomosci

Quote:
A mozna jakis przykladzik kodu (c) - bo tam nie ma przykladu...;(

Tego kodem nie robisz tylko zmieniasz programatorem.

A da sie to jakos pakietem winavr zrobic (averdude?)??



A co do pkt 1...?
na prawde przydal by sie kawalek kodu bo nie kumam tego do konca ;)


Pawel

AdelA
Guest

Sun Jan 08, 2006 5:37 pm   



Użytkownik sikurasaka napisał:

Quote:
Uzytkownik "AdelA" <a@b.c> napisal w wiadomosci


A mozna jakis przykladzik kodu (c) - bo tam nie ma przykladu...;(

Tego kodem nie robisz tylko zmieniasz programatorem.


A da sie to jakos pakietem winavr zrobic (averdude?)??


A co do pkt 1...?
na prawde przydal by sie kawalek kodu bo nie kumam tego do konca ;)


Pawel


A dataszit nie wystarcza? przecież tam jest wszystko opisane. Musisz

ustawić odpowiedni podział timera przy odpowiednim zegarze i to
wszystko. to nie jest nawet kawałek kodu. Przy odpowiednim zegarze
musisz wpisać odpowiednią cyfrę w odpowiedni rejestr timera. i koniec.
Włączasz przerwanie i je obsługujesz. Zwróć tylko uwagę, żeby przerwanie
nie trwało dłużej niż częstotliwość jego wywołania.

--
AdelA
Mail PRIV na mojej WWW
www.adela.pl

Filip Ozimek
Guest

Sun Jan 08, 2006 6:19 pm   



AdelA wrote:

Quote:
Włączasz przerwanie i je obsługujesz. Zwróć tylko uwagę, żeby przerwanie
nie trwało dłużej niż częstotliwość jego wywołania.

Właśnie, a co się stanie, jeśli tak będzie? Czy przerwanie w momencie
obsługi przerwania spowoduje przerwanie tej obsługi i kolejne
rozpoczęcie jego obsługi?


--
Filip.

T.M.F.
Guest

Sun Jan 08, 2006 7:21 pm   



Quote:
Włączasz przerwanie i je obsługujesz. Zwróć tylko uwagę, żeby
przerwanie nie trwało dłużej niż częstotliwość jego wywołania.

Właśnie, a co się stanie, jeśli tak będzie? Czy przerwanie w
momencie obsługi przerwania spowoduje przerwanie tej obsługi i kolejne
rozpoczęcie jego obsługi?


Nic sie nie stanie, przerwania nie przerwiesz, natomiast zostanie ono
zgloszone po zakonczeniu obslugi bierzacego przerwania. Ale z czasem
opoznienie bedzie narastac, az co ktores przerwanie wypadnie.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

AdelA
Guest

Sun Jan 08, 2006 8:18 pm   



Quote:
Nic sie nie stanie, przerwania nie przerwiesz, natomiast zostanie ono
zgloszone po zakonczeniu obslugi bierzacego przerwania. Ale z czasem
opoznienie bedzie narastac, az co ktores przerwanie wypadnie.


Do tego należy dodać, że program główny nie będzie miał zbyt wielkiego

polotu Smile.

--
AdelA
Mail PRIV na mojej WWW
www.adela.pl

Grzegorz Kurczyk
Guest

Sun Jan 08, 2006 11:16 pm   



Użytkownik T.M.F. napisał:
Quote:
Nic sie nie stanie, przerwania nie przerwiesz, natomiast zostanie ono
zgloszone po zakonczeniu obslugi bierzacego przerwania. Ale z czasem
opoznienie bedzie narastac, az co ktores przerwanie wypadnie.

No chyba, że na początku obsługu przerwania będzie rozkaz sei

Pozdrawiam
Grzegorz

T.M.F.
Guest

Sun Jan 08, 2006 11:23 pm   



Quote:
Nic sie nie stanie, przerwania nie przerwiesz, natomiast zostanie ono
zgloszone po zakonczeniu obslugi bierzacego przerwania. Ale z czasem
opoznienie bedzie narastac, az co ktores przerwanie wypadnie.

No chyba, że na początku obsługu przerwania będzie rozkaz sei


No ale wtedy grozi przepelnienie stosu.


--
Inteligentny dom - http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.

sikurasaka
Guest

Sun Jan 08, 2006 11:26 pm   



Użytkownik "sikurasaka" napisał w wiadomości

Quote:
Mam kilka pytanek...


A mam jeszcze jedno pytanie...

Napisalem program i windows podaje ze HEX ma 20KB.
Odpalam averdude i tam mi podaje ze to tylko 6KB...

O co chodzi?Wink
[Rozmiar hexa to rozmiar normalny, a nie zajmowane miejsce na dysku...]


Paweł

Adam Dybkowski
Guest

Mon Jan 09, 2006 12:00 am   



sikurasaka wrote:

Quote:
A mam jeszcze jedno pytanie...

Napisalem program i windows podaje ze HEX ma 20KB.
Odpalam averdude i tam mi podaje ze to tylko 6KB...

O co chodzi?Wink
[Rozmiar hexa to rozmiar normalny, a nie zajmowane miejsce na dysku...]

Windows widzi tylko rozmiar pliku. 6KB danych daje się zapisać w 384
liniach tekstu po 16 bajtów po 2 znaki hex na bajt plus 12 znaków plus
CRLF na linię = 17664 bajty plus linia końcowa. Jeżeli w danych w pliku
hex są nieciągłości, plik jest jeszcze dłuższy. Stąd te 20KB pliku może
odpowiadać 6 KB danych. Popatrz w specyfikację formatu pliku Intel Hex
to ci się wszystko rozjaśni.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.

Grzegorz Kurczyk
Guest

Mon Jan 09, 2006 7:25 am   



Użytkownik T.M.F. napisał:
Quote:
Nic sie nie stanie, przerwania nie przerwiesz, natomiast zostanie ono
zgloszone po zakonczeniu obslugi bierzacego przerwania. Ale z czasem
opoznienie bedzie narastac, az co ktores przerwanie wypadnie.


No chyba, że na początku obsługu przerwania będzie rozkaz sei


No ale wtedy grozi przepelnienie stosu.


Jak w każdym systemie z przerwaniami wielopoziomowymi
i podczas stosowania procedur rekurencyjnych ;-)

ATmega8 trochę tego stosu ma. Gorzej z np ATtiny15 gdzie jest miejsce na
tylko cztery adresy powrotu.

Jeśli system jest dobrze zaprojektowany i nie dopuszczamy do sytuacji,
że przerwania są zgłaszane częściej niż czas ich obsługi to wszystko
będzie dobrze. W przeciwnym razie nawet jeśli stos się nie przepełni, to
program główny nie bedzie miał okazji się wykonać :-)

Pozdrawiam
Grzegorz

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonfigurować timer0 w ATmega8 do wywoływania kodu co 10 ms i zmiana częstotliwości kwarcu?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map