Re: Asm. Funderingar hos en nybörjare.
Postat: 19 mars 2010, 12:51:56
1 HZ är en frekvens, ingen tid (vilket ju en delay bör mätas i).
Men vi antar att du menar 1 sekund...
Pretar vi om ungefär 1 sek eller så noggrant som kristallen klarar av ?
OK, 4 Mhz, då är signalen in till prescalern 1 Mhz.
Om du sätter prescaler till 1:64 så får du ca 61.03
"varv" (255->0) på timer0 varje sekund. Ett litet fel som
jag inte vet om det är OK. Om du räknar 61 varv på timer0
så har du 0,9994 sekund, om jag inte räknar fel. Att hamna
exakt på 1 sekund är lite trickigare...
EDIT:
Det är enklast om du tittar på en lösning där du inte behöver
"ladda om" TMR0 varje varvj. Det blir lite struligare och du behöver
ta hänsyn till tiden det tar att ladda om registret o.s.v. Det är
mycket enklare att lämna timern "free-running".
Genom att välja en annan kristall (som är enklare att dela ner
jämt med potensen av 2) så är det mycket enklare att fixa rutiner
med bättre noggranhet i tiderna. T.ex 4.194304 MHz...
EDIT2:
På den här sidan http://www.search.com/reference/Crystal_oscillator
finns lite olika frekvenser och där kan du se vilka som är enkla att dela ner
till (t.ex) jämna sekunder.
Men vi antar att du menar 1 sekund...
Pretar vi om ungefär 1 sek eller så noggrant som kristallen klarar av ?
OK, 4 Mhz, då är signalen in till prescalern 1 Mhz.
Om du sätter prescaler till 1:64 så får du ca 61.03
"varv" (255->0) på timer0 varje sekund. Ett litet fel som
jag inte vet om det är OK. Om du räknar 61 varv på timer0
så har du 0,9994 sekund, om jag inte räknar fel. Att hamna
exakt på 1 sekund är lite trickigare...
EDIT:
Det är enklast om du tittar på en lösning där du inte behöver
"ladda om" TMR0 varje varvj. Det blir lite struligare och du behöver
ta hänsyn till tiden det tar att ladda om registret o.s.v. Det är
mycket enklare att lämna timern "free-running".
Genom att välja en annan kristall (som är enklare att dela ner
jämt med potensen av 2) så är det mycket enklare att fixa rutiner
med bättre noggranhet i tiderna. T.ex 4.194304 MHz...
EDIT2:
På den här sidan http://www.search.com/reference/Crystal_oscillator
finns lite olika frekvenser och där kan du se vilka som är enkla att dela ner
till (t.ex) jämna sekunder.