-
        

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

Thema: Empfängersignal auswerten. (Modellbauempfänger PWM )

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391

    Empfängersignal auswerten. (Modellbauempfänger PWM )

    Anzeige

    Hallo geschätzte fachleute,
    Ich bin gerade mal wieder am verzweifeln. Ich wollte eine kleine Schaltung aufbauen, womit ich das PWm signal eines Modellbauempfängers auswerte.
    Nun habe ich ein Problem. ER zeigt mir immer den gleichen wert von 43570 an. Wiso? Ich habs am Oszi überprüft, das signal verändert sich, aber nich der Timer Wert.
    Code:
    $regfile "m8def.dat"
    $crystal = 8000000
    
    
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    
    Config Timer1 = Timer , Prescale = 1
    
    Config Int0 = Low Level
    
    Enable Interrupts
    Enable Int0
    On Int0 Sprung:
    
    Config Portd.1 = Output
    Config Portd.7 = Output
    Config Portd.6 = Output
    Config Portd.5 = Output
    Config Portd.4 = Output
    Config Portd.2 = Input
    
    
    
    
    Start Timer1
    Cls
    Do
    Loop
    
    
    
    Sprung:
    Cls
    
    
    Lcd Timer1
    Waitms 100
    Timer1 = 0
    
    Return
    Ich hatte es auch schon einmal versucht, dies über den AD Wandler zu machen, nur leider is der zu ungenau und gibt mir nur den Wert von 38 und 39 aus.

    Könntet ihr mir vielleicht helfen.
    mhunni

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Hi! Also waitms im interrupt halte ich für sehr sehr "unkonventionell".... Mach das doch lieber so:
    Code:
    'hauptprogramm
    do
    lcd wert
    waitms 100
    loop
    end
    
    Sprung:
    Wert=Timer1
    Timer1=0
    return
    Viele Grüße, William
    -> http://william.thielicke.org/

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    ähhm, dann zeigt jetzt aber immer nur 0 an? oda?

    Code:
    $regfile "m8def.dat"
    $crystal = 8000000
    $sim
    
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.1 , Rs = Portd.0
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    
    Config Timer1 = Timer , Prescale = 1
    
    Config Int0 = low level
    
    Enable Interrupts
    Enable Int0
    On Int0 Sprung:
    
    Config Portd.1 = Output
    Config Portd.7 = Output
    Config Portd.6 = Output
    Config Portd.5 = Output
    Config Portd.4 = Output
    Config Portd.2 = Input
    
    Dim Wert As Word
    
    
    Start Timer1
    Do
    lcd wert
    waitms 100
    loop
    end
    
    Sprung:
    Wert=Timer1
    Timer1=0
    return

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    das waitms hab ich gemacht, damit mein LCD display nich verrückt spielt und ich die Zahl auch ablesen kann. Ansonsten löscht er das gleich sofort und es steht nichts da

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Ich glaube, Dein Pproblem liegt in der Konfiguration des Interrupts. Mit Config INT0 = Low Level zwingst Du en Controller so lange in die ISR, wie der Impuls low ist. Mach´s doch mal so:

    Code:
    Config INT0 = change  'ISR bei jedem Flankenwechsel
    On INT0 Sprung
    Enable INT0
    Enable Interrupts
    
    Dim Flag as Bit          ' "Habe-fertig"-Flag
    
    Config Timer1=Timer, Prescale = 1
    
    
    Do
     If Flag = 1 then
      Flag = 0
      CLS
      LCD Timer1
      Timer1=0
      Waitms 100
     End if
    ...
    ...
    Loop
    
    Sprung:
     If PIND.2=0 then  'Fallende Flanke: Impulsbeginn
      Start timer1
     Else                     'Steigende Flanke: Impulsende
      Stop Timer1
      Flag = 1
    Return

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    ja mhh, ich hab das auc schon mit falling und rising probiert, aber change kannte ich noch nich, wert ich gleich mal ausprobieren

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Hi hunni!
    Folgender Code funktioniert (solltest du aber auf z.B. deinen Quarz umbasteln):
    Code:
    $baud = 9600
    $crystal = 16000000
    $regfile "m32def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 64
    
    Config Timer1 = Timer , Prescale = 8 ,  Capture Edge = Falling , Noise Cancel = 1
    Enable Timer1
    On Timer1 Pausenerkennung
    
    Config Int1 = Falling                            
    Enable Interrupts                                
    Enable Int1                                     
    On Int1 Summensignalmessung                   
    
    Dim Empf(6) As Word
    Dim Channel As Byte
    
    Sound Portd.7 , 200 , 300
    
    Do
    
    Print empf(1)
    Print empf(2)
    Print empf(3)
    Print empf(4)
    Print empf(5)
    Print empf(6)
    Waitms 500
    
    Loop
    
    
    Summensignalmessung:
    Select Case Channel
        Case 1 :
        Empf(1) = Timer1
        Case 2 :
        Empf(2) = Timer1
        Case 3 :
        Empf(3) = Timer1
        Case 4:
        Empf(4) = Timer1
        Case 5:
        Empf(5) = Timer1
        Case 6:
        Empf(6) = Timer1
    End Select
    Timer1 = 57536                                    'preload for 4ms
    Incr Channel
    Return
    
    Pausenerkennung:
    Channel = 0
    Return
    
    
    
    End
    Viele Grüße, William
    -> http://william.thielicke.org/

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    28.03.2008
    Ort
    Huntlosen
    Alter
    25
    Beiträge
    391
    ich glaub ihr versteht noch nich so ganz was ich machen möchte. Ich möchte einfach, dass ich weiss, welche Frequenz das Signal vom Empfänger (PWM oda Rechteck, kann ich nich genau sagen) hat.
    Dazu brauche ich einfach nur den Timer wert. Der ist aber immer gleich, aus welchen gründen auch immer.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.02.2006
    Ort
    3. Planet eines kleinen Sonnensystems in einem Seitenarm der Milchstraße
    Alter
    63
    Beiträge
    622
    Hallo hunni,

    Zitat Zitat von hunni
    ich glaub ihr versteht noch nich so ganz was ich machen möchte.
    wie hätte das denn jemand aus Deinem ersten Posting entnehmen sollen?
    Ich möchte einfach, dass ich weiss, welche Frequenz das Signal vom Empfänger (PWM oda Rechteck, kann ich nich genau sagen) hat.
    Ganz einfach, etwa 50Hz pro Kanal.
    Es wird ein PWM-Rechtecksignal sein; Deine Formulierung "PWM oder Rechteck" ist unverständlich.

    Du solltest Deine Fragen schon so formulieren, dass man Dir helfen kann.
    Ich kann nicht helfen, da ich keine Anhnung von Bascom habe.

    Welche Information möchtest Du denn nun wirklich aus dem Signal extrahieren? Ist das Signal geeignet, direkt mit einem Eingangspin eines Controllers verbunden zu werden?

    MfG

    Fred aus dem Assembler- und C-Land
    Only entropy comes easy. - Anton Checkhov

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    ich glaub ihr versteht noch nich so ganz was ich machen möchte. Ich möchte einfach, dass ich weiss, welche Frequenz das Signal vom Empfänger (PWM oda Rechteck, kann ich nich genau sagen) hat.
    Dazu brauche ich einfach nur den Timer wert.
    Die Frequenz vom Empfänger ist immer gleich. Also was willst du damit anfangen..? Das einzige was sich ändert ist das Verhältnis high/ low. Dieses Verhältnis ist interessant und das wird von meinem Code "gemessen".
    Viele Grüße, William
    -> http://william.thielicke.org/

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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