Forum

Einloggen | Registrieren | RSS  

nonsense(R)

31.03.2008,
17:52
(editiert von nonsense
am 31.03.2008 um 17:56)
 

PWM mit dem PIC16F876 (Elektronik)

Hallo,
ich versuche gerade, per PWM eine LED zu dimmen. Wenn ich die Werte manuell setze, funktioniert alles.

» movlw D'60'
» movwf CCPR1L

Möchte ich die LED aber nun per Schleife dimmen, geht es nicht.
» dimm
» decfsz dimmer, 1
» goto loop
»
» bsf PORTB, 1 ; eine LED zum Debuggen, sollte blinken, bleibt aber aus
» movlw D'255'
» movwf loops
» call WAIT
»
» bcf PORTB, 1 ; Debug-LED aus
»
» movlw D'255'
» movwf loops
» call WAIT
» goto dimm
»
»
» loop
» goto loop

Damit sollte "dimmer" ja bis auf 0 runtergezählt werden (Start ist 120) und der Wert als PWM-Wert verwendet werden. Leider tut sich rein gar nichts. Das ganze Programm scheint angehalten zu sein, denn auch die Debug-LED an PORB blinkt nicht.
Hat jemand eine Idee?

Gruß,
Martin

Björn(R)

E-Mail

Dortmund,
31.03.2008,
20:48

@ nonsense

PWM mit dem PIC16F876

» Hallo,
» ich versuche gerade, per PWM eine LED zu dimmen. Wenn ich die Werte
» manuell setze, funktioniert alles.
»
» » movlw D'60'
» » movwf CCPR1L
»
» Möchte ich die LED aber nun per Schleife dimmen, geht es nicht.
» » dimm
» » decfsz dimmer, 1
» » goto loop
» »
» » bsf PORTB, 1 ; eine LED zum Debuggen, sollte blinken, bleibt
» aber aus
» » movlw D'255'
» » movwf loops
» » call WAIT
» »
» » bcf PORTB, 1 ; Debug-LED aus
» »
» » movlw D'255'
» » movwf loops
» » call WAIT
» » goto dimm
» »
» »
» » loop
» » goto loop
»
» Damit sollte "dimmer" ja bis auf 0 runtergezählt werden (Start ist 120)
» und der Wert als PWM-Wert verwendet werden. Leider tut sich rein gar
» nichts. Das ganze Programm scheint angehalten zu sein, denn auch die
» Debug-LED an PORB blinkt nicht.
» Hat jemand eine Idee?
»
» Gruß,
» Martin

Hallo Martin,

ich bin zwar aus der AVR-Fraktion, aber so wie das aussieht wird dimmer einmal um 1 verringert, dann springst du zu loop und bleibst dort in einer Endlosschleife bis in alle Ewigkeit.

Schöne Grüße,
Björn

nonsense(R)

31.03.2008,
21:40

@ Björn

PWM mit dem PIC16F876

» ich bin zwar aus der AVR-Fraktion, aber so wie das aussieht wird dimmer
» einmal um 1 verringert, dann springst du zu loop und bleibst dort in einer
» Endlosschleife bis in alle Ewigkeit.

Ohh, danke. Bin ich dämlich...
decfsz verringert den Wert und wenn das Ergebnis 0 ist, ignoriert es den nächsten Befehl. Aber natürlich muss das ans Ende der Schleife und das goto dimm umschließen...

x y

01.04.2008,
02:23

@ nonsense

PWM mit dem PIC16F876

» » loop
» » goto loop

Und das wars dann?

nonsense(R)

01.04.2008,
14:39

@ x y

PWM mit dem PIC16F876

» Und das wars dann?
Bitte? Er dimmt runter und geht dann in eine Endlosschleife. So soll es ein. Ist ja nur ein Testprojekt.