Gast
#1582520
Hallo ich hab ein kleines Problem mit dem setzen eines Timerflags. Hier erstmal das Programm: ######################################################################## #### $regfile = "m16def.dat" $crystal = 8000000 $baud = 38400 Config Portb.2 = Output Config Timer1 = Timer , Prescale = 256 Timer1 = 34285 'Vorladewert 8mhz / 256 = 31250 Der Zähler Würde Normal Von 0 Bis 65535 Zählen 'Wenn Er Jedoch Bei 34285 Beginnt Läuft Er Jede Sek über Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Dim Ad_w(25) As Word '25 Variablen als Word dimensioniert Dim Wert As Word 'Variable als Word Variable als Word dimensioniert Dim I As Byte 'Variable als Byte dimensioniert Dim Puffer As Single 'Variable als Single dimensioniert Dim Float As Single 'Variable als Single dimensioniert Float = 3.48 Dim Flag As Byte Enable Interrupts Enable Timer1 On Timer1 Isr_timer1 Do If Flag.1 = 1 Then Flag.1 = 0 For I = 0 To 24 'Beginn For-Schleife mit Zählen bis 24 Ad_w(i) = Getadc(0) 'Messen AD-Wert an Pin A0 Waitms 5 '5ms warten Next 'weiter wenn For-Schleife abgearbeitet ist For I = 0 To 24 'Beginn For-Schleife mit Zählen bis 24 Wert = Wert + Ad_w(i) 'addiere Wert mit dem AD-Wert der Variabele Ad_w entsprechend I Next 'weiter wenn For-Schleife abgearbeitet ist Wert = Wert / 25 'Bilden des Mittelwert durch division mit 25 Puffer = Wert 'Inhalt Variable Wert wird in Variable Puffer geschrieben Puffer = Puffer - 425 'Vom Puffer wird der 0 °C Offset abgezogen Puffer = Puffer / Float 'Berechung der Temperatur (5.3125 = Bit pro °C Änderung) Print "Temp " ; "; " ; Puffer ; " ; " ; " AD_Wert" ; "; " ; Wert 'Ausgabe der Variablen Puffer und Wert im Terminalprogramm Waitms 875 '875ms warten um Programmlaufzeit von 1s zu erreichen Wert = 0 End If Loop Isr_timer1: Flag.1 = 1 Timer1 = 34285 Return #################################################################### Das Problem liegt darin das der Timer nur einmal beim EInschalten oder Reset aufgerufen wird. Wenn ich das Programm ohne jede Berechnung ausführe sondern nur beim Flag den Adc ausgebe funktioniert es. Könnt ihr mir einen Tip geben?