Bascom Problem

OP #2118799
Lesenswert?

Hallo,

ich hoffe mir kann hier jmd. helfen
Ich hab folgendes Problem in Bascom, vorne weg muss ich sagen, ich hab 
vom programmieren eig. wenig Anhnug.
Ich möchte folgendes machen ich hab einen IC der besitzt leider nur 
einen Timer und möchte aber unbedingt den verwenden.
Der IC soll jetzt 3 Software PWM Signale ausgeben (um RGB LEDs zu 
steuern), bedient wird er mit einer FB, sprich der IC muss auch noch ein 
RC5 Signal decodieren. Jetzt zum Problem, ich arbeite nicht mit dem 
Bascom "getRC5" sondern decodier das direkt, aber dafür brauch ich den 
Timer des IC's. Daraus ergibt sich jetzt, dass ich leider keinen Timer 
mehr frei hab um das Software PWM zu generieren, jetzt hab ich schon 
herausgefunden, dass das trotzdem geht, aber wie genau?
Anscheind ist eine Möglichkeit im Hauptprogramm eine For-Schleife zu 
programmieren, die dann den zaehler incrementiert und so zusagen ein 
ersatz Timer wird und damit eben gezählt werden kann und somit das 
SoftwarePWM erzeugt werden könnte. Ich plan blos gar nicht wie man das 
macht, kann mir das jmd. anhand eines Codes zeigen?
Achja das PWM wird eben dafür verwendet 3 Mosfets anzusteuern, die 
wiederum RGB-Leds schalten. Der Controller soll eig. nur die 
verschiedenen vorher festgelegten Farben durchschalten können, eben mit 
der FB und evtl. noch ein Fade Prgramm haben. Also nichts besonders 
aufwendiges.
Auch wenn es noch andere, vllt. auch noch bessere Möglichkeiten gibt das 
zu realisieren (ohne einen anderen IC zu verwenden ), ich bin für alles 
offen.
Vielen Dank schon mal im vorraus!
Gast #2119523
Lesenswert?

$regfile = "attiny2313.dat"
$baud = 38400

$crystal = 8000000

$hwstack = 32      ' default use 32 for the hardware stack
$swstack = 10      ' default use 10 for the SW stack
$framesize = 40


Dim Z As Byte
Dim Led(3) As Byte

Config Portb.1 = Output 'Ausgang 1 für LED (R)
Config Portb.2 = Output 'Ausgang 2 für LED (G)
Config Portb.3 = Output 'Ausgang 3 für LED (B)

Led(1) = 200      'Werte für PWM hier rein. (R)
Led(2) = 30       'und hier (G)
Led(3) = 200      'und hier auch (B)

Do
   Gosub Subpwm


Loop
End

Subpwm:
   Incr Z
   For B = 1 To 3
      If Led(b) > Z Then
         Portb.b = 1
      Else
         Portb.b = 0
      End If
   Next
Return

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren