Ich versuche schon längere Zeit (einige nächtliche Stunden) das ich das PPM Signal von einem Modelbau-Empfänger(35Mhz) auf den Mega8 bringe, nur es will nicht funktionieren.
So ein s....
Zur zeit hab ichs direkt auf den "int0" (Interrupt) Eingang des Atmels versucht.
Ich habe zwar den Port auf "input"
gestellt. Aber er erkennt nichts, weder im interrupt Modus wo ein timer zurückgesetzt werden sollte sobald eine fallende Flanke kommt.
Noch wenn ich den Port per stinknormalen Abfrage in einer Schleife abfrage.
Das Oszi aber sagt mir das die Pausen je nach Steuerknüppelstellung 1-2 Millisekunden dauern. Also das Signal vom Empfänger ist da.
Dann dachte ich der mega8 kommt mit dem Pegel nicht klar. Und ich habe das Signal mit einem Transistor Invertiert.
... Leider fehlanzeige ist funktioniert nicht.
Folgenden Code habe ich mir dafür zusammengestöpselt. -->
Habt ihr ne Ahnung was ich da falsch mache ? Ich weis nicht mehr weiter
Code:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 '====================================================== 'Declarations '====================================================== Dim Rc_value As Word '====================================================== 'Configurations '====================================================== 'I/O-Ports Config Portd = Input 'Interrup 0 Config Int0 = Falling 'timing of pulses on negative flank 'Configuration of timer 1 (16 bit) Config Timer1 = Timer , Prescale = 8 'Interrupt-Service-Routines On Timer1 Signal_down 'overflow of timer occurs when the signal is down On Int0 Read_signal 'On int0 timing of the signal pulses '====================================================== 'Initialisations '====================================================== 'Timer-release Enable Timer1 'Release of interrupts Enable Int0 Enable Interrupts 'Variables Rc_value = 0 '====================================================== 'Main program '====================================================== Dim I As Integer Do Print Rc_value Waitms 120 Loop End '****************************************************** 'Interrupt Service Routines '****************************************************** Read_signal: Rc_value = Timer1 'First thing: store the timer value in an intermediate variable. Timer1 = 0 'Then reset the timer Print Rc_value 'set the signal up flag Return Signal_down: 'if no signal is detected for 65 ms Print " Signal Down" 'reset number of syncpulses passed Return
Lesezeichen