Hallo,
das nachfolgende Programm sendet mit etwa 1000Hz Messwerte des AD-Wandlers eines Mega8 an den PC. Hierbei gibt es auch noch keine Probleme. Jetzt würde ich aber gerne die Abtastfrequenz während des Programmlaufs durch Übermittlung eines Bytes ändern, was leider nicht funktioniert. Die Interruptroutine wird auf jeden Fall aufgerufen, aber der neue Wert wird scheinbar nicht übernommen, d.h. Value scheint immer gleich zu bleiben. Kann mir jemand helfen?
Code:$regfile = "m8def.dat" $crystal = 3686411 $baud = 115200 '9600 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc '3,686400MHz/8 = 460,8kHz -> 2,1701us Config Timer1 = Timer , Prescale = 8 On Timer1 Ontimer: Enable Timer1 Config Pinb.0 = Output On Urxc Onrts: Enable Urxc Enable Interrupts Dim Messwert As Word , Lbyte(2) As Byte At Messwert Overlay , L As Word Dim B As Byte , Value As Word , I As Word Value = 65000 'Timer-Interrupt Ontimer: Timer1 = Value Messwert = Getadc(0) Printbin Lbyte(1) ; Lbyte(2) 'Messwert an den PC senden Return 'Interrupt für den Zeichenempfang Onrts: B = Udr L = B * 100 'max 255*100 = 25500 Value = 65000 - L '65000-25500 = 39500 For I = 1 To 500 Printbin B ; 0 'Wert eine Sekunde lang zurücksenden Waitms 2 Next I Return End







Zitieren

Lesezeichen