-
-
Erfahrener Benutzer
Robotik Einstein
Ich kann leider dein Prog nicht austesten weil ich nicht mit Win AVR arbeite.
Wie ist das ?
Wird ein gesetztes Byte durch die Anweisung beim MCUCR Register zurückgesetzt ?
Wenn das nicht so ist müsstest Du das Register mit & und einem Wert der alle Bits auf 1 setzt, bis auf das zu löschende Bit z.B. 0b11111110 .
Dieser Befehl müsste das Letzte Bit eines Wertes löschen.
Im MCUCR sind doch das ISC01 und das ISC00 Bit gesetzt
Wenn Du also das ISC01 mit dem Inhalt des MCUCR veroderst, bleibt doch das ISC00 gesetzt, und der Controller reagiert wieder auf die steigende Flanke ?
Wie wärs, wenn du Assembler Befehle zum setzen und löschen der Bytes verwenden würdest
#asm
sbi MCUCR,ISC01; ASSEMBLER Befehl zum setzen eines Bits in einem I/O Register
sbi MCUCR,ISC00
#endasm
bzw.
#asm
cbi MCUCR,ISC00; ASSEMBLER Befehl zum löschen eines Bits in einem I/O Register
sbi MCUCR,ISC01
#endasm
Die ASM Einbindung geht bei CodeVision so, wie es bei Win AVR geht weiß ich nicht.
if (flanke == 1)
{
start = TCNT1;
Diese Zeile in Deinem Quellcode meine ich ->MCUCR |= (1<<ISC01); //INT0 auf fallende Flanke stellen
flanke = 0;
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen