Berry
A PIC-based MP3 player: www.apic-bmp.nl.tt | Intresse in techniek? www.djoamersfoort.nl
Hoi,
Ik kom hier ff niet uit. Ik heb een interrupt op mijn PIC 16F628 op Timer0. Zonder prescaler. Ik wil hem elke seconde iets laten doen. Dus ik doe 1000000(4MHz)/256 = 3906 Ik verhoog dus telkens een timer tot deze 3900 is en dan komt de rest van de code. Maar het gaat veel te snel. Doe ik wat fout?
void interrupt interrupt_handler()
{
DI();
if(T0IF)
{
timer++;
if(timer == 3900) // seconde
{
timer = 0;
Seconds++;
if(Seconds == 60)
{
Seconds = 0;
Minutes++;
}
if(Minutes == 60)
{
Minutes = 0;
Hours++;
}
if(Hours == 24)
Hours = 0;
send_time(Hours, Minutes, Seconds);
}
}
EI();
}MGP
LDmicro user.
Wat onmiddelijk opvalt is dat er een functie (send_time) aangeroepen wordt in een ISR, meestal lopen die ISR'en dan in het honderd.
Werden die variabelen goed gedefinieerd en op NUL gezet bij de start.
Maar over de PIC registers kan ik niet meepraten
Berry
A PIC-based MP3 player: www.apic-bmp.nl.tt | Intresse in techniek? www.djoamersfoort.nl
Op 30 december 2004 17:33:04 schreef MGP:
Wat onmiddelijk opvalt is dat er een functie (send_time) aangeroepen wordt in een ISR, meestal lopen die ISR'en dan in het honderd.Werden die variabelen goed gedefinieerd en op NUL gezet bij de start.
Maar over de PIC registers kan ik niet meepraten
Een tijdje terug werkte het nog, maar toen heb ik de snelheid aangepast vanwege een test, maar ik kan de oude waarde niet meer terug vinden... De variabele timer is een integer (16 bits). Op nul zetten lijkt mij niet nodig, want zodra hij een keer 3900 is geworden zet de ISR hem op 0.
k.p.meinesz
Een schizofreen is nooit alleen!
Berry
A PIC-based MP3 player: www.apic-bmp.nl.tt | Intresse in techniek? www.djoamersfoort.nl
Op 30 december 2004 19:14:56 schreef k.p.meinesz:
1seconde duurt bij hem 0,9984 seconde
1uS*256*3900=0,9984sec
als dat nou zo was, vond ik het niet erg. Dit met die interrupts is gewoon voorlopig als test, ik ga met de 50Hz van het net werken. Het is zo erg dat als ik naar de 10-tal secondes kijk, deze iets sneller gaan als secondes! Bij de secondes (die van 0 tot 9 gaan) gaat het dus zo snel dat ik de digits nog een beetje zie flikkeren. Dat terwijl hij het eerst wel heeft gedaan....
hmm als je nu zorgt dat je op 1 of andere manier een normaal deelbaar getal krijgt
dus bijv 10 ms ofzow of 25 of iets in die grote
dan kun je in je interrupt een teller laten meelopen
Berry
A PIC-based MP3 player: www.apic-bmp.nl.tt | Intresse in techniek? www.djoamersfoort.nl
Op 30 december 2004 19:53:37 schreef High met Henk:
hmm als je nu zorgt dat je op 1 of andere manier een normaal deelbaar getal krijgt
dus bijv 10 ms ofzow of 25 of iets in die grote
dan kun je in je interrupt een teller laten meelopen
Huh? Ik vat dit even niet
De fout moet toch ergens zitten, want eerst deed hij het gewoon...
sorry, je hebt iets wat dus al gewerkt heeft, ik d8 dat je niet op 60 minuten eheel uitkwam, mijn blunder sorry, weinig ervaring met PIC's en interrupts 
Fuzzbass
Mijn echte naam: Joris | Mijn elektronica website: Fuzzcraft.com
Ik kan het mis hebben, maar volgens mij reset je de interrupt vlag van de timer niet, met als gevolg dat hij blijft interrupten.
Berry
A PIC-based MP3 player: www.apic-bmp.nl.tt | Intresse in techniek? www.djoamersfoort.nl
Op 30 december 2004 21:28:43 schreef Fuzzbass:
Ik kan het mis hebben, maar volgens mij reset je de interrupt vlag van de timer niet, met als gevolg dat hij blijft interrupten.
Das een hele sterke
Bedankt! Ga kijken of het helpt