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??
[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

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