-
-
Neuer Benutzer
Öfters hier
Wie gesagt funktioniert die Frequenzmessung einzeln korrekt. Die Overflow-Variable wird gelegentlich auf 1 gesetzt, wenn zwischen der ersten Messung und der zweiten Messung die 65535 des Timers auf 0 springen.
Ich hatte auch schon vermutet, dass die I2C-Routine irgendwelche Interrupts nutzt, die meine Frequenz verfälschen. Aber im Quellcode sind nur Registerabfragen und wait-Befehle. Mal abgesehen davon, wäre Interrupts auch garnicht schlimm, da eine Interrupt-Routine nie mittendrin verlassen werden kann, sondern immer erst am Ende.
Wenn ich vor den I2C-Befehlen ein cli() schreibe, dürften ja keine Interrupts ausgeführt werden? Da I2C dann noch funktioniert, gehe ich davon aus, dass die Bibliotheken keine Interrupts enthalten.
Edit:
Könnte folgender Code aus meiner TWI-Bibliothek meinen INT0 beeinflussen?
/*
** Wait until transmission completed
*/
while (!(TWCR & (1<<TWINT)));
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen