Problem skriva till EEPROM PIC16F887 *LÖST*

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Anders_Peter
Inlägg: 66
Blev medlem: 24 juli 2008, 00:40:30
Ort: Skövde

Problem skriva till EEPROM PIC16F887 *LÖST*

Inlägg av Anders_Peter »

Försöker få igång kod för att skriva till EEPROM i en PIC16F887, har bara testat i simulatorn i MPLAB IDE v8.10. Har däremot fått läsning av EEPROM att fungera i simulatorn.
Har utgått från exemplet 10-2 i manualen.
Problemet är att det skrivs inte in något i EEPROM-minnet.

I exemplet 10-2 i manualen valdes bank EEADR det allra första, men om jag gör så blir det bara nollor i EEADR och EEDATA, är det fel i exemplet? eller har jag gjort något fel? misstänker att det har med banker att göra. Har skrivit om den delen av koden och då fungerar det med att det kommer in rätt siffror i EEADR och EEDATA.

Men fortfarande så skrivs inget tilll EEPROM-minnet!

I exemplet 10-2 i manualen så används SLEEP, trodde detta hade funkionen att gå ner i sovläge för att spara energi, vad har SLEEP med EEPROM att göra?

Tacksam för hjälp med dessa problem!



Kod: Markera allt

	
;****************************** Skriv till EEPROM ************************
;*************************************************************************
;Adress som ska skrivas till läggs i Adress_EEPROM och datan som ska skrivas
;läggs i Data_WR_EEPROM
;*************************************************************************


	banksel 	PORTA						;Välj bank
		movf  		Adress_EEPROM,w    			;Kopiera adress till w-reg
		banksel		EEADR						;Välj bank
		movwf 		EEADR        				;Skriv adress
		banksel 	PORTA						;Välj bank
		movf 		Data_WR_EEPROM,w       		;Kopiera data till w-reg
		banksel		EEADR						;Välj bank
		movwf 		EEDATA       				;Skriv data
	
		banksel		EECON1						;Välj bank
		bcf   		EECON1,EEPGD 				;Peka på DATA-minnet
		bsf   		EECON1,WREN  				;Skriva till EEPROM är tillåten
	
		bcf   		INTCON,GIE    				;Stäng av interrupt
		btfsc		INTCON,GIE					;Kolla interrupt
		goto		$-2							;Hoppa tillbaka och kolla igen

		movlw 		h'55'         				;Skriv kod 55
		movwf 		EECON2
		movlw 		h'AA'						;Skriv kod AA
		movwf 		EECON2       				
	
		bsf   		EECON1,WR					;Skriv till EEPROM
		bsf   		INTCON,GIE   				;Tillåt interrupt
		bcf   		EECON1,WREN  				;Skriva till EEPROM ej tillåtet
		banksel 	PORTA						;Välj bank
		return
Senast redigerad av Anders_Peter 26 maj 2009, 22:40:03, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem skriva till EEPROM PIC16F887

Inlägg av sodjan »

> ...vad har SLEEP med EEPROM att göra?

Det är bara *ett* sätt att vänta på skrivningen.
Du kan göra på något annat sätt om du vill. T.ex
polla aktuell flagga.
Anders_Peter
Inlägg: 66
Blev medlem: 24 juli 2008, 00:40:30
Ort: Skövde

Re: Problem skriva till EEPROM PIC16F887 *LÖST*

Inlägg av Anders_Peter »

Lösningen var att använda en 'riktig' PIC då funkar det, men inte simulatorn som tydligen inte klarar av att simulera skrivning till EEPROM
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem skriva till EEPROM PIC16F887 *LÖST*

Inlägg av sodjan »

Märkligt, MPLAB SIM hjälpen säger (specifikt för PIC16 serien):
The EEPROM data memory is fully simulated. The registers and the read/write
cycles are fully implemented. The write cycle time is device dependent (to
nearest instruction cycle multiple).

The simulator simulates the functions of WRERR and WREN control bits in
the EECON1 register. WRERR can be set using stimulus for testing purposes.
Skriv svar