-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: Mega8 verwertet PPM Signal nicht :-(

  1. #1

    Mega8 verwertet PPM Signal nicht :-(

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    29
    Beiträge
    270
    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?

  3. #3
    Das hätt ich schon gemacht, da der Empfänger die notw. 5V von meinem ATmega Board bekommt.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    29
    Beiträge
    270
    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?

  5. #5
    okay gute idee !
    Ich werde versuchen einen anderen Port zu verwenden.

    Ich melde mich dann wieder

  6. #6
    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 ?

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    ....Modelbau-Empfänger(35Mhz)....

    so einfach geht es nicht.

    hier gab es so etwas schon einmal :

    http://www.mikrocontroller.net/

    suchen!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Zitat Zitat von nightflyer50
    Portb.4 = Portb.3
    Mal davon abgesehen, das ein als Eingang konfiguriertes Bein am Mikrocontroller als PIN angesprochen wird sag ich ma nix dazu ...

    Grüße,
    Hanni
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    18.12.2006
    Ort
    Oderberg
    Alter
    25
    Beiträge
    870
    Zeigt Bascom bei sowas keinen Fehler an oder hast du den ignoriert ?
    MfG Christopher \/


  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Sollte heissen:
    Code:
    Config Pinb.4 = Input 
    Config Pinb.3 = Output 
    
    Do 
    Portb.4 = Pinb.3 
    Loop
    Mach keinen "Print" in einer interrupt routine
    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.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •