Implementacja algorytmu czasowego AVR...

Witam!

Chcialem zrobic sobie zegarek ale mam problem gdyz aktulanie pracuje z

-Atmega8 z zegarem 8MHz

i aby uzyskac w przerwaniach jedna sekunde mam usawienia:

TCNT0=6; TCCR0=2; Licznik = 4000; //licznik dopelniajacy przerwanie

A dowiedzialem sie ze mozna urzyc kwarcu RTC: // tez aby otrzymac jedna sek

pleskaler = 1024 Licznik = 32

I moje pytanie co lepiej uzyc? Bo niektorzy mi mowia zebym uzyl opcji drugiej gdyz po co licznik ma wynosci az 4000 natomiast jak uzyje kwarcu 32,768 to w innych przerwaniach w programie bede musial poznieniac parametry aby wszytko sie zgadzalo...(bo juz jestem w trakcje pisania proramu).A wiec co radzicie?

Jestem poczatkujacy wiec pytam jak sobie radza w takich sytuacjach profesjonalisci ;)

Pozrawiam!

Rafal k.

Reply to
ToR
Loading thread data ...

ToR napisał(a):

[...]

Pracuj z normalnym kwarcem (szybkim) a _dodatkowo_ dolacz zegarkowy

32768 Hz tak aby taktowal timer 2 asynchronicznie (patrz PDF strona 102). Wtedy caly procek chodzi szybko jak dotad a sekundy zliczasz timerem 2. Pomysl co sie stanie przy padzie zasilania, moze warto doczepic maly dedykowany scalak RTC (z magistrala I2C albo SPI) ciagnacy z baterii litowej 1 uA?
Reply to
Adam Dybkowski

Ok dzienx za cynka! Ale podarzajac lektora przeczytalem ze kwarc 32.768 musze podladczyc do wejsc TOSC1 i TOSC2 a w mojej Atmedze8 mam tam podpiety kwarc

8MHz (bo w tym procku XTAL jest w ten samej nodze co TOSC)...A wiec moje pytanie gdzie mam wpiac ten kwarc zeby pracowac z oba naraz?

Co do braku zasilania to chcialem zrobic jakies zabespieczenie z ksiazki "Projektowanie syst. Mikroprocesorowych". Ale zaciekawil mnie pomysl z tym scalakiem a wiec czy mozesz troche powiedziec cos wiecej na ten temat badz podac jakies linki?

Pozdarwiam!

Rafal k.

Reply to
ToR

Gdy czas masz odmierzany kwarcem 32768 to procesor może już spokojnie chodzić na wewnętrznym oscylatorze RC. Ustaw fusami wewnętrzny clock

8MHz i gotowe.

TP.

Reply to
Tomasz Piasecki

Czyli jako ze w Atmedze wejscie TOSC jest tozsame z wejsciem XTAL to mam wylutowac kwarc 8MHz i na jego miejsc wlutowac 32KHz a nastepnie w ustawieniach zmienic na wewnetrzny kwarc 8MHz? Pytam czy dobrze zrozumialem,bo z tego co wiem moja atmega ma wewnwtrzny kwarc 1MHz a wiec czy da sie go ustawic na 8MHz?

PS:A jesli chodzi o ustawienie tego internal RC to bedzie 0100? w CLSEL0..3? ale gdzie sie je ustawia?

Pozdrawiam!

Rafal k.

Reply to
ToR

Według mnie tak. Nie robiłem takiej kombinacji w praktyce, ale wg. datasheet to chyba tak ma być.

BTW, wewnętrzny oscylator NIE jest oscylatorem kwarcowym, tylko kalibrowanym RC.

Fabrycznie ma ustawiony 1MHz. Można ustawić 8.

W fuse bitach. (strona 219 i dalej). Już je przecież przestawiałeś zmieniając taktowanie procka na zewnętrzny kwarc.

TP.

Reply to
Tomasz Piasecki

Dnia 19 Feb 2006 14:29:03 +0100, ToR napisał(a):

Następnym twoim postem będzie: "uwaliłem ATMegę - czy _morzna_ ją jakoś odblokować" ;)

Strona 28 manuala potwierdza, że masz rację (tylko CKSEL, nie CLSEL). Fuse bity ustawia się za pomocą programatora, ale nie w normalnym cyklu programowania pamięci programu. W zależności od posiadanego przez ciebie sprzętu i oprogramowania robi się to różnie. Uważaj na zależność "bit programmed = 0" i nie poprzestawiaj innych bitów, niż te, które są ci potrzebne (najpierw odczytaj istniejącą wartość).

Powodzenia.

Marcin Stanisz

Reply to
Marcin Stanisz

Ano czlowiek uczy sie na bledach -ale obiecuje ze takieg postu z mojej strony nie bedzie :P.

różnie.

Hmm na stronie 28 jest przekierowanie na 220 ;),gdzie pisza o tych Fuse Low Byte, jednak niec gdzie to sie to programuje.Posiadam programator STK200/300 a programuje w WinAVR za pomoca programu Adama Dybkowskiego, ktory byl uprzejmy wypowiedziec sie w moim poscie ;) (za co bardzo dziekuje).

Troche nie rozumiem o co chodzi -tzn bit 0 oznacza "nie zaprogramowanie" a

1 "zaprogramowanie"..?

Pozdarwiam Rafal k.

Reply to
ToR

A no tak racja ;)

A wiec można powiedziec ze powinienem zrobic tak:

Aby otrzymac wewnetrzny zegar 8MHz ustawic nastepujace Fus Bity:

1) CLSEL3..0 ustawic na -> ‘0100’ 2) CKOPT ustawic na -> ‘UNPROGRAMED’czyli ->‘1’ ??

Bo w dokumentacji pisza, ze jak się stosuje ta opcje zegara to trzeba dac na unprogramed ale jak się to z kolei ma do tego ze ja będę musial podpiac pod nogi TOSC kwarc zegarowy -nie ma to znaczenia? bo jak ustawie AS2 w ASSR to te nogi beda automatycznie zarezerwowane przez RTC?

3) I odpowiednio ustawic bity SUT1..0 – Start-Up-Time ->nie kumam ich idei czy może mi ktros wyjasnic? Czy chodzi o "wstawienie" procka po resecie?

Pozdarwiam

Rafa k.

Reply to
ToR

Strasznie nakrzaczyłeś... w każdym razie CLSEL ma być 0100 a CKOPT unprogrammed czyli 1.

Patrz opis ASSR na stronie 117.

Tak, chodzi o szybkość wstawania po pusczeniu reseta. Zdaje się, że fabrycznie ustawiona jest najmniejsza, można tego nie ruszać jeśli szybkość wstawania procka nie jest jakimś istotnym czynnikiem w projekcie.

TP.

Reply to
Tomasz Piasecki

ToR napisał(a):

Bez wazeliny proszę...

Reply to
Adam Dybkowski

ToR napisał(a):

Nie.

  1. Najpierw przestaw taktowanie na wewnętrzny generator (to nie kwarc tylko generator RC)
  2. Potem wylutuj kwarc 8 MHz i sprawdź, czy wszystko wciąż dobrze działa (już taktowane z wewn. generatora)
  3. Wlutuj kwarc zegarkowy 32768 Hz i użyj go do taktowania timera 2.
Reply to
Adam Dybkowski

Eee tam zaraz wazeliny ;). Po prostu mam dobre zdanie o kims kto napisal srodowisko obslugujace programator ktory uzywam.

Pozdarwiam Rafal k.

Reply to
ToR

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.