Forum: Mikrocontroller und Digitale Elektronik Lüftersteuerung mit Power Control PWM Modul


von Korbinian (Gast)


Lesenswert?

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

von Korbinian (Gast)


Lesenswert?

Weiß dazu keiner was?
Habe ich vielleicht einen Interrupt ausgelöst, der zum Absturz des 
Programms führt?

von Gast (Gast)


Lesenswert?

Ohne was über PICs zu wissen:
Ein Schaltbild wäre hilfreich.
Vielleicht liegt ein Verdrahtungsfehler vor ?

Code, der länger als eine Bildschirmseite ist, sollte als Attachment 
angefügt werden.

Viel Erfolg.

von Korbinian (Gast)


Lesenswert?

Hallo,

ein Verdrahtungsfehler kann ausgeschlossen werden. Da ich in einer 
anderen Routine die Funktionstüchtigkeit der Platine festgestellt habe.

Ich habe jetzt folgendes getestet, wenn ich am Ende des Durchlaufs (das 
ich mir durch eine LED anzeigen lasse) eine Warteschleife einbaue (Ende 
der Warteschleife LED erlischt), dann stelle ich fest, dass alle Lüfter 
korrekt runterfahren, das Programm hängt sich dann zwischen den "LED´s" 
auf und die Lüfter laufen an, bremsen, laufen an, bremsen (LED an, aus, 
an....)
Also funkioniert das "Durchlaufen" der Lüfter aber hernach gibt es 
irgendein Problem.
Kann es sein das es am Program Counter liegt?
Bin ratlos......
Bitte um Hilfe

von Korbinian (Gast)


Lesenswert?

Nachschlag:

wenn ich den Debugger aufhalte während das Programm sich aufgehängt habe 
und danach wieder den Debugger starten will, dann bekomme ich folgende 
Meldung:
Halting Target
MPLAB ICD 2 Ready
MPLAB ICD 2 Ready
ICD0083: Debug:  Unable to enter debug mode.  Please double click this 
message for more information.
Running Target
ICD0083: Debug:  Unable to enter debug mode.  Please double click this 
message for more information.
ICD0069: Debug:  Unable to run target
MPLAB ICD 2 Ready

Ich habe dann mal probiert, den PIC gleich zu programmieren, aber auch 
da tritt dieser Fehler auf!

Hat irgendwer eine Idee was da sein könnte?

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.