Gast
#771940
Hallo zusammen, ich will eine Lüftersteuerung aufbauen, die sechs Lüfter steuert. Am Anfang sollten alle Lüfter langsam runterfahren, bis jeder zum Stillstand kommt - da wollte ich dann die Werte abspeichern, bei dennen die Lüfter gerade noch drehen. Aber so weit bin ich noch nicht. Ich habe mal eine Routine geschrieben, mit der ich das Impuls/Pause - Verhältinis durchfahren kann - es bleiben aber nur zwei Lüfter stehen und dann hängt sich der PIC 18F43331 auf - Lüfter laufen alle volle Pulle durch. Was habe ich für einen Fehler gemacht? Kann mir einer weiterhelfen? Ach ja, die Treiberbausteine mit denen ich die Lüfter ansteuere sind invertiert. Vielen Dank im Voraus Programm: movlw b'00000000' movwf PTCON0 movlw 0xFF movwf PTPERL movlw 0x0F movwf PTPERH movlw b'01000111' movwf PWMCON0 movlw b'00000001' movwf PWMCON1 movlw b'00000000' movwf DTCON movlw b'00111110' movwf OVDCOND movlw b'00000000' movwf OVDCONS clrf FLTCONFIG movlw 0x00 movwf SEVTCMPL movlw 0x00 movwf SEVTCMPH movlw 0xFC movwf PDC0L movlw 0x3F movwf PDC0H movlw 0xFC movwf PDC1L movlw 0x3F movwf PDC1H movlw 0xFC movwf PDC2L movlw 0x3F movwf PDC2H movlw 0xFC movwf PDC3L movlw 0x3F movwf PDC3H bsf PTCON1, 7 regLB ;Sektion Lüfter langsam herunterfahren Low-Byte btfss Lernjp goto Main incf runterLB ;Low-Byte Reg. um eins erhöhen movf runterLB, W movwf ErgebnisLB movlw 0xFC subwf ErgebnisLB btfsc STATUS,Z goto Übertrag bsf PWMCON1, UDIS movf runterLB, W andlw 0xFC ;da die unteren zwei Bits von PDCxL den Takt angeben=> Q1 movwf ErgebnisLB movwf PDC0L movwf PDC1L movwf PDC2L bcf PWMCON1, UDIS call WAIT goto regLB regHB incf runterHB ;High-Byte um eins erhöhen movf runterHB, W movwf ErgebnisHB movlw 0x40 ;zählt bis 3F subwf ErgebnisHB btfsc STATUS,Z goto Main bsf PWMCON1, UDIS movlw 0x00 movwf PDC0L movwf PDC1L movwf PDC2L movf runterHB, W movwf PDC0H movwf PDC1H movwf PDC2H bcf PWMCON1, UDIS call WAIT clrf runterLB call regLB goto regHB Übertrag bsf PWMCON1, UDIS movf runterLB,W movwf PDC0L movwf PDC1L movwf PDC2L bcf PWMCON1, UDIS call WAIT goto regHB