-         

Ergebnis 1 bis 2 von 2

Thema: Problem mit Drehimpulsgeber

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Berlin
    Alter
    36
    Beiträge
    69

    Problem mit Drehimpulsgeber

    Anzeige

    Ich möchte mit einem Drehimpulsgeber eine PWM Steuern in meinem test hat das nicht so geklappt wie ich wollte und nun habe ich den Code riesig gemacht und das wirt immer noch nichts se wirt immer zwei Impulse gegeben (das heißt zweimal + oder – 5 ) und er zählt ni den negativen bereich oder über den maximal bereich [-(

    Das ist der Code
    Code:
    $regfile = "m8def.dat"                                      'ATmega8-Deklarationen
    $crystal = 3686400                                          'Quarz: 3,6864 MHz
    $baud = 9600                                                '9600 Baud
    '
    On Timer0 Ontimer                                           'Timer0-Interruptroutine
    Dim Helligkeit As Integer                                   'Timer0-Zeitwert
    Dim B As Integer
    Portb = &B11                                                'port B 0und 1 als eingang
    Ddrd.5 = 1                                                  'Pin PD5 ist Ausgang
    Tccr0 = &B00000100                                          'Timer0: Bits210=100: Quarz/256
    Timsk.toie0 = 1                                             'Timer0-Overflow-Interrupt ein
    Config Timer0 = Timer , Prescale = 256
    Enable Timer0                                               'Overflow-Interrupt ein
    '----------------------------------------------------------
    Helligkeit = 200                                            'Initial LED hell
    Sreg.7 = 1                                                  'Interrupts global einschalten
    Do                                                          'Hauptschleife
    
    B = Encoder(pinb.0 , Pind.1 , Links , Rechts , 2)           'Drehimpulsgeber
    Waitms 10
    Print Helligkeit
    Print B
    If Helligkeit = 0 Then                                      'ist der wert auf 0 soll port D5 auf 0
    Portd.5 = 0
    End If
    
    If Helligkeit = 256 Then                                    'ist der wert auf 256 soll port D5 auf 1
    Portd.5 = 1
    End If
    
    
    Loop
    '----------------------------------------------------------
    Links:
    Helligkeit = Helligkeit + 5                                 'der wert soll um 5 angehoben werden
    Waitms 10
    Return
    
    Rechts:
    Helligkeit = Helligkeit - 5                                 'der wert soll um 5 abgesengt werden
    Waitms 10
    Return
    '----------------------------------------------------------
    Ontimer:
      Portd.5 = Not Portd.5                                     'LED wechselnd an/aus
      If Portd.5 = 1 Then                                       'Wenn LED gerade an
        Timer0 = 256 - Helligkeit                               'Timer zählt vorwärts!
      Else                                                      'Wenn LED gerade aus
        Timer0 = Helligkeit                                     'Komplementäre Zeit
      End If
    Return
    danke euch im voraus

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Gruß,
    Franz

Berechtigungen

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