Ich hab nun nach diesem Thema (https://www.roboternetz.de/phpBB2/viewtopic.php?t=16501) ein neues gestartet.

Ich hab nun mit dem Watchdog einen Periodischen Reset. Ich hab auch von http://www.interq.or.jp/japan/se-inoue/e_pic2_1.htm herausbekommen, dass im Statusregister das TO-Bit auf 0 gesetzt wird, wenn der Watchdog ausgelöst wird.

Hier ein Ausschnitt aus meinem Quellcode:
Code:
Init


		btfss	STATUS_TO		; Ist das TO-Bit im Statusregister nicht gesetzt, wurde der 
		goto	reset			; Watchdog ausgelöst und die Initialisierung der Ports und
								; des Timers wird übersprungen.

		; 250 Hz-Timer-Interrupt einstellen
        bsf     STATUS, RP0     ; auf Bank 1 umschalten
        movlw   B'10001110'     ; internen Takt zählen, Vorteiler für WDT verwenden
        movwf   OPTION_REG
        bcf     STATUS, RP0     ; auf Bank 0 zurückschalten
		;bcf     INTCON, T0IE    ; Timer0 interrupt noch nicht erlauben


		; Ports einstellen
	    BSF    	STATUS, RP0   	; auf Bank 1 umschalten

	    BCF		T_ROT_OUT		; Port RA0 auf Ausgang schalten
	BSF		T_ROT_IN		; Port RA1 auf Eingang schalten
	BSF		T_WEISS_IN		; Port RA2 auf Eingang schalten
		BCF		T_WEISS_OUT		; Port RA3 auf Ausgang schalten
		BCF		T_STATUS_LED	; Port RA4 auf Ausgang
	    
		BCF		TRISB, 0		; Ausgang
		BCF		TRISB, 1		; Ausgang
	BSF		TRISB, 2		; Eingang	IR-Empfänger
		BCF		TRISB, 3		; Ausgang
		BSF		TRISB, 4		; Eingang
	BSF		TRISB, 5		; Eingang	Schalter 1
		BCF		TRISB, 6		; Ausgang
		BCF		TRISB, 7		; Ausgang

	    BCF    	STATUS, RP0   	; auf Bank 0 zurückschalten 



		bcf	STATUS_LED		; Anzeige Power-on-Reset OK
		call	Wait
		bsf	STATUS_LED
		call	Wait
		bcf	STATUS_LED
		call	Wait
		bsf	STATUS_LED
		call	Wait

		goto	reset
Hab ich dese Init-Routine, wird der Watchdog nur einmal ausgeführt, und zwar dann wenn ich den PIC an die Versorgungsspannung anschliesse. Also wenn ich die Sumulation mit MPLAB durchführe, funktionierts, lass ichs aber auf dem PIC laufen, funktionierts nicht (Das ausführen des resets zeige ich mit LED's an). Kommentiere ich aber die zwei Zeilen
Code:
		btfss	STATUS_TO		; Ist das TO-Bit im Statusregister nicht gesetzt, wurde der 
		goto	reset			; Watchdog ausgelöst und die Initialisierung der Ports und
								; des Timers wird übersprungen.
aus, wird der Watchdog wie gewünscht ausgelöst. Das Problem ist dann nur, dass (warscheindlich) beim Initialisieren der Ports irgendwelche Spannungsschwankungen, welche als Signal Interpretiert werden können, an den Ausgängen anliegen.
Ich hab auch schon versucht, den "; 250 Hz-Timer-Interrupt einstellen"-Teil in der reset-Subroutine zu platzieren, damit der Watchdog nach jedem auslösen wieder eingestellt wird, aber das hat auch nichts gebracht...

Noch eine Frage:
Wird beim Auslösen des Watchdog überhaupt etwas zurückgesetzt, oder wird das Programm einfach neu gestartet? Also, muss ich nach dem Watchdog-Interrupt die I/O's und Timer neu Initialisieren? [edit] wenn ich das Programm in MPLAB simuliere, sieht es so aus wie wenn die I/O's zurückgesetzt werden...

Hat mir vielleicht jemand eine Lösung für das Problem? hab schon den halbem Tag damit vertrödelt...

Vielen Dank