mám problél s ATMEGA88 která běží na 20MHz s napětím 5V. Stavím řízení předstihu zapalování na motorku a na pinu INT0 zachytávám imlulzy od kliky. Vyskytl se mi problém v tom že občas INT0 nezareaguje, nespustí interrupt a to tak jednou za cca 20 pulzů.
Hodil jsem jí tedy na bastlící destičku a zapojil tak že na INT0 mám tlačítko a pullup rezistor 4k7. + mám připojenou na PC3 diodu aby bylo jasně vidět jak se to chová. Interrupt je nastaven tak aby reagoval jak na náběžnou tak sestupnou hranu.
Kód: Vybrat vše
ISR (INT0_vect)
{
PORTC=!PORTC;
}
int MAIN (void)
{
while(1)
{
;
}
}
Stimhle kódem by to mělo teoreticky při stisku tlačítka rozsvítit a při puštění zhasnout. Problém je v tom, že mačkám a funguje, jenomže jednou za pár stisknutí to na jednu hranu nezareaguje, interupt se nespustí a celé se to otočí. Při zmáčknutí dioda zhasne, při puštění se rozsvítí. A zase furt do kola... Prostě jednou za čas to na nějakou hranu nezareaguje. Setkal už se s tím někdo?
Díky za jakoukoli radu.