gnupic@linuxhacker.org

gnupic@linuxhacker.org


Subject: Re: gpsim & sleep
From: Yann Gouy
Date: 28 Mar 2003 12:17:49 +0100

I can manage to find out my problem.

if someone can help me, here is the very heart of my bug:

list   p=16f877
include "p16f877.inc"

	  CONFIG	 CP OFF &  DEBUG OFF &  CPD OFF &  LVP ON &  BODEN OFF &
 PWRTE ON &  WDT OFF &  HS OSC

;------------------------------------------
;	début du programme
;
	ORG	0x0000
	nop
	goto	main

;------------------------------------------
;	routine d'interuption
;
; tout le traitement du vol est fait dans cette interruption
; on ne rentre dans cette interruption que si le décollage a
; été correctement détecté (accéléro + SV >= 1)
;
	ORG	0x0004
	retfie			; fin de l'interruption

;------------------------------------------
;	routine principale
;
main:
	movlw	TRISB		; on configure le portB
	movwf	FSR		;
	movlw	b'11111111'
	;	  1		non utilisée
	;	   1		non utilisée
	;	    1		non utilisée
	;	     1		non utilisée
	;	      1		non utilisée
	;	       1	signal 2/3
	;	        1	signal 2/3
	;	         1	signal accéléro-contact
	movwf	INDF
	movlw	PORTB
	movwf	FSR
	clrw
	movwf	INDF		; par défaut, les sorties sont à zéro

	; on configure le PIC pour sortir du mode sleep
	; lorsque l'accéléro-contact s'enclenchera (front montant)
	movlw	INTCON
	movwf	FSR
	bcf	INDF, INTF	; INTF = 0 IT nettoyée
	bsf	INDF, INTE	; INTE = 1 IT permise pour réveil
	movlw	OPTION REG
	movwf	FSR
	bsf	INDF, INTEDG	; RB0 int sur front montant
	nop

	; puis on s'endort
	;sleep
scan:
	nop
	goto scan

	; si on s'est réveillé et que l'on revient ici,
	; c'est que l'enclenchement de l'accéléro n'était
	; pas justifié, il faut donc recommencer au début
	goto	main

END


gnupic@linuxhacker.org