mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom Software PWM


Autor: gabbaroxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann mir mal bitte jemand erklären wie ich vorgehen muss um ein paar
LEDs mittels Software PWM (Bascom) anzusteuern?
Per Hard PWM ist das ja kein großes Problem, aber wie dasn un mit Soft
genau funktionieren soll ist mir unklar. Wäre nett wenn mir mal jemand
einen Code Schnipsel geben kann wo von mir aus 3 Leds nacheiander Ein-
und Ausfaden.

Danke schonmal!

Autor: gabbaroxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin inzwischen soweit das 3 Leds gleichzeitig an und ausgehen. Wie
kann ich aber nun die LEDs einmzeln ansteuern? Also z.B wenn led 1 aus
led2 an oder wenn led2 halb aus dann led3 an.

Hier mal mein Code:

'#################################
'# Software Pulsweitenmodulation #
'#################################


$regfile = "M8def.dat"
$crystal = 3686400

Ddrd = &B11100000                                           'PD7, PD6,
PD5 als Ausgänge festlegen, rest Eingang
Portd = &B00001100                                          'PullUps
von PD2, PD3 Aktivieren



Enable Interrupts
'Interrupts Global einschalten

Enable Timer0
Config Timer0 = Timer , Prescale = 256
On Timer0 Ontimer0

Enable Timer1
Config Timer1 = Timer , Prescale = 8
On Timer1 Ontimer1

Dim Reverse As Bit
Dim Helligkeit As Byte

Helligkeit = 255





'###Deklarationen###

Led_gr Alias Portd.7                                        'LED Grün
Led_ge Alias Portd.6                                        'LED Gelb
Led_ro Alias Portd.5                                        'LED Rot
Prwata Alias Pind.3
'Programmwahltaster
Speed Alias Pind.2


Do

Loop

Ontimer0:

 Toggle Led_ro
 Toggle Led_gr
 Toggle Led_ge

 If Led_ro = 1 Then
  Timer0 = 256 - Helligkeit
 Else
  Timer0 = Helligkeit
 End If

Return



Ontimer1:

 If Helligkeit = 255 Then
  Set Reverse
 End If

 If Helligkeit = 1 Then
  Reset Reverse
 End If

 If Reverse = 0 Then
   Incr Helligkeit
 End If

 If Reverse = 1 Then
  Helligkeit = Helligkeit - 1
 End If

Return

Autor: Fazerfighter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine frage

hab es jetzt mal ausprobiert
mit meinem Atmega16 mit 8 mhz
und die leds werden zwar dunkler
aber sie flacker

wie kann man dass umstellen das die nicht mehr flackern???

Autor: papa_of_t (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde es anders machen - in der Timer0-Routine die PWM realisieren
und dann im Hauptprogramm (oder auch mit Timer1, langsamer) die
Helligkeit einstellen:

OnTimer0:
   incr pwm_count 'ein Byte das immer von 1 bis 20 läuft
   if pwm_count > 20 then pwm_count = 1

   if pwm_count > led1helligkeit then led1 = 0 else led1 = 1
   if pwm_count > led2helligkeit then led2 = 0 else led2 = 1
   if pwm_count > led3helligkeit then led3 = 0 else led3 = 1
return

'main:
for i = 0 to 20
   waitms 200 'der ISR eine Chance
   led1helligkeit = i
   'hier andere LEDs einstellen
next i

usw.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.