hallo!
könte es sein, dass du vergessen hast die GND-Pegel anzugleichen? also die GND leitungen von empfänger und AVR kurzschließen.
MfG
Schoko
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
hallo!
könte es sein, dass du vergessen hast die GND-Pegel anzugleichen? also die GND leitungen von empfänger und AVR kurzschließen.
MfG
Schoko
Warum bekommen Vegetarier immer eine Extrawurst?
Das hätt ich schon gemacht, da der Empfänger die notw. 5V von meinem ATmega Board bekommt.
hmm.. ganz ehrlich: da fällt mir dann nix mehr ein...
hast du mal nen anderen pin probiert (egal ob interrupt oder nicht, geht hier mal drum obs funktioniert). evtl. ist ja der Pin, bzw. der ganze port aus irgendeinem grund kaputt.
oder evtl. haarrisse in der platine? schonmal direkt am AVR pin gemessen ob dort das signal noch ankommt??
MfG
Schoko
Warum bekommen Vegetarier immer eine Extrawurst?
okay gute idee !
Ich werde versuchen einen anderen Port zu verwenden.
Ich melde mich dann wieder
So jetzt habe ich folgendes Probiert -->
$regfile = "m8def.dat"
$crystal = 8000000
'================================================= =====
'Configurations
'================================================= =====
'I/O-Ports
Config Portb.4 = Input
Config Portb.3 = Output
Do
Portb.4 = Portb.3
Loop
End
Das sollte ja theoretisch das Signal 1:1 am PIN B.3 ausgeben.
Tut es aber nich
Weder wenn ich das Eingangssignal (PPM Signal vom Empfänger)
normal noch invertiert anlege.
Was tu ich jetzt ? Kann man vielleicht was mit den Fuses des µControllers machen ?
....Modelbau-Empfänger(35Mhz)....
so einfach geht es nicht.
hier gab es so etwas schon einmal :
http://www.mikrocontroller.net/
suchen!
Mal davon abgesehen, das ein als Eingang konfiguriertes Bein am Mikrocontroller als PIN angesprochen wird sag ich ma nix dazu ...Zitat von nightflyer50
Grüße,
Hanni
Grundregeln des Forenpostings:
1. Nutze niemals die Suchfunktion!
2. Überprüfe niemals die Topics nach Ähnlichkeiten!
3. Schreibe alles in hellgelb!
Zeigt Bascom bei sowas keinen Fehler an oder hast du den ignoriert ?
MfG Christopher \/
Sollte heissen:
Mach keinen "Print" in einer interrupt routineCode:Config Pinb.4 = Input Config Pinb.3 = Output Do Portb.4 = Pinb.3 Loop
bei 9600 Baud braucht er für jedes zeichen ~1 mS
das ist für ein Servo Signal etwas zu lang
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen