Forum: Mikrocontroller und Digitale Elektronik Bascom Problem


von Stavros Z. (harlunke)


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!

von LÖTER (Gast)


Lesenswert?

Welches "IC" verwendest Du denn ???

von Stavros Z. (harlunke)


Lesenswert?

Einen Attiny13

von Hannes L. (hannes)


Lesenswert?

Stavros Z. schrieb:
> Einen Attiny13

Für die Software-PWM genügt eine der beiden Compare-Einheit des Timers. 
Wenn man den Timertakt günstig wählt, kann man damit auch noch einen 
FB-Code detektieren. Bei RECS80 oder IR60 könnte ich mitreden, bei RC5 
allerdings nicht, brauchte ich noch nicht.

...

von peterfido (Gast)


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

von peterfido (Gast)


Lesenswert?

Es fehlt noch ein
Dim b as byte
...

von Stavros Z. (harlunke)


Lesenswert?

Hey eine riesen großes Danke schön an Dich!
Werd das morgen gleich ausprobieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.