-         

Ergebnis 1 bis 2 von 2

Thema: Mal wieder PWM

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.11.2005
    Beiträge
    272

    Mal wieder PWM

    Anzeige

    Hallo,

    ich habe mal ein kleines Programm geschrieben um eine LED zu Dimmern. Funzt auch ganz gut, nur habe ich das Problem das ich sie nur bis zu hälfte dimmen kann. mehr geht nicht. habe es ausgemessen.

    Das Programm soll per tastendruck einen wert entgegen nehmen und damit die led dimmen.

    leider ist irgendwo in dem programm ein fehler. habe auch mal das testprogramm von der seite hier genommen und damit leuchten die led gleich stark. was ja eigentlich nicht sein kann.

    habe leider kein oszi um mir das anzuschaun. kann mich also nur an der Heligkeit der leds orientieren.

    Hier mal mein Programm:

    Code:
    '#################################
    '#     Pulsweitenmodulation      #
    '#################################
    
    
    $regfile = "M16def.dat"
    $crystal = 8000000
    
    '********************************* Lc Display **********************************
    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0
    Config Lcdbus = 4
    Config Lcd = 16 * 2
    
    Portb = &B11111111
    Portc = &B11111111
    
    Config Portb = Input
    Config Portc = Output
    
    Const True = 1
    Const False = 0
    
    Dim Hi As Byte
    Dim Lo As Byte
    Dim Phase As Bit
    
    Config Timer0 = Timer , Prescale = 64
    
    On Timer0 Timer0_isr
    
    Config Pinc.0 = Output
    
    Led Alias Portc.0
    
    
    Enable Timer0
    Enable Interrupts
    
    Lo = 0
    Phase = True
    
    Hi = 255
    
    Do
    
    Cls
    Locate 1 , 1
    Lcd "Hi: " ; Hi ;
    
    If Pinb.0 = 0 Then                                     'Tastenabfrage der Powertaste
    
          Waitms 50                                             'entprellen
    
          If Pinb.0 = 0 Then
    
               Hi = Hi + 1
          End If
    
    End If
    
    If Pinb.1 = 0 Then                                     'Tastenabfrage der Powertaste
    
          Waitms 50                                             'entprellen
    
          If Pinb.1 = 0 Then
    
                Hi = Hi - 1
    
          End If
    
    End If
    
    
    If Portc.7 = 1 Then                       'blink led für schleifendurchlaufkontrolle
    
          Portc.7 = 0
    
    Else
    
          Portc.7 = 1
    
    End If
    
    Loop
    
    End
    
    
    Timer0_isr:
    
       If Phase = True Then
       Led = 1                                                  'led aus
       Timer0 = Lo
       Phase = False
    
    Else
    
       Led = 0                                                  'led ein
       Timer0 = Hi
       Phase = True
    
    End If
    
    Return
    thx for help

    arno
    Unser Wissen ist ein Tropfen, unser Unwissen ist wie ein Ozean.
    Sir Isaac Newton

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.05.2006
    Ort
    @ Home
    Alter
    29
    Beiträge
    270
    mal so btw: warum alles von hand machen?? versuchs mal mit config PWM (in der hilfe beschrieben wies geht)
    Warum bekommen Vegetarier immer eine Extrawurst?

Berechtigungen

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