I ett program som använder TMR0 till att mäta en pulslängd stämmer inte verklighet och teori överens, eller så har jag missat något...
Använder INTOSC satt till 8 MHz och TMR0 prescaler satt till /8. Förväntade mig då 8 / 4 / 8 MHz in till timern = 4µs per steg. Det verkliga resultatet blir att denna tid istället är 4.5µs... Programmet skriver aldrig till timern, den läses endast.
Kan det vara så att prescalern tappar 1 klocka för varje "varv"? Resultatet blir ju exakt som om den delade med 9 istället för 8. Någon här som vet?
Har givetvis senaste datablad och errata samt försökt googla detta, men inget resultat...
PIC 12F683 TMR0 prescaler tappar 1 klocka?
Re: PIC 12F683 TMR0 prescaler tappar 1 klocka?
Behöver man ladda in kalibrering för INTOSC. Mata ut intosc direkt ioch mät...
Re: PIC 12F683 TMR0 prescaler tappar 1 klocka?
Två chip ger identiskt resultat, så jag tvivlar starkt på att det är INTOSC som är fel. Det skulle dessutom krävas ett stort fel från 8 til 7.1111... MHz för att förklara felet. Kommer det ingen lösning innan så får jag flytta skopet dit den här saken finns i morgon och kontrollera INTOSC för att vara helt säker.
Har ett svagt minne av att något liknande varit uppe till diskussion här tidigare, men kan dessvärre inte hitta den tråden nu.
Har ett svagt minne av att något liknande varit uppe till diskussion här tidigare, men kan dessvärre inte hitta den tråden nu.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: PIC 12F683 TMR0 prescaler tappar 1 klocka?
Hur mäter du pulslängden? Varför misstänker du timern?
Re: PIC 12F683 TMR0 prescaler tappar 1 klocka?
Problemet är löst nu, jag hade stoppat in blaj i OSCCON
Klippte initieringen från en tidigare kod som fungerade helt OK, givetvis utan att vara tillräckligt uppmärksam. Satte configword till 8MHz utan att tänka på OSCCON som satte den till 4MHz. När en liten ändring sedan skall mätas med en räknare som är tänkt att gå flera varv på en måtning är det lätt att dra fel slutsats när grundvärdet stämde med just 8+1 pulsers prescaler. Märkte sedan att inget alls stämde, läste igenom hela init och upptäckte misstaget...
Ber om ursäkt för detta. Jag börjar bli gammal och tappar skärpan. Snart dags att sluta programmera och börja sy korsstygn istället...



Klippte initieringen från en tidigare kod som fungerade helt OK, givetvis utan att vara tillräckligt uppmärksam. Satte configword till 8MHz utan att tänka på OSCCON som satte den till 4MHz. När en liten ändring sedan skall mätas med en räknare som är tänkt att gå flera varv på en måtning är det lätt att dra fel slutsats när grundvärdet stämde med just 8+1 pulsers prescaler. Märkte sedan att inget alls stämde, läste igenom hela init och upptäckte misstaget...
Ber om ursäkt för detta. Jag börjar bli gammal och tappar skärpan. Snart dags att sluta programmera och börja sy korsstygn istället...
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: PIC 12F683 TMR0 prescaler tappar 1 klocka?
Liknande har nog hänt alla som har skrivit icketriviala program. 
