; ; eeprom.inc: data eeprom helper functions ; ; author: Marko Kanala, raato ]a t[ mulletronic.com ; ; LICENSE ; Creative Commons Attribution-NonCommercial-ShareALike 2.5 ; ; You are free: ; ; * to copy, distribute, display, and perform the work ; * to make derivative works ; ; Under the following conditions: ; ; 1. Attribution. You must attribute the work in the manner specified by the ; author or licensor. ; 2. Noncommercial. You may not use this work for commercial purposes. ; 3. Share Alike. If you alter, transform, or build upon this work, you may ; distribute the resulting work only under a license identical to this one. ; ; * For any reuse or distribution, you must make clear to others the license ; terms of this work. ; * Any of these conditions can be waived if you get permission from the ; copyright holder. ; ; Your fair use and other rights are in no way affected by the above. ; ; This is a human-readable summary of the Legal Code. ; See full license at http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode ; ; Copyright: Marko Kanala (raato@mulletronic.com). ; ; ; loads a value from eeprom address in WREG. ; ; value read should be read from EEDATA register. ; eeprom_load: movwf EEADR bcf EECON1, EEPGD ; access data eeprom bcf EECON1, CFGS ; ... bsf EECON1, RD ; initiate read return ; ; saves a value to eeprom. ; ; data to be written should be loaded to EEDATA register. ; eeprom address should be loaded to WREG. eeprom_save: movwf EEADR bcf EECON1, EEPGD ; access data eeprom bcf EECON1, CFGS ; ... bsf EECON1, WREN ; enable writes bcf INTCON, GIE ; disable interrupts movlw 0x55 ; initiate movwf EECON2 movlw 0xaa movwf EECON2 bsf EECON1, WR ; ... write eeprom_save_wait: clrwdt btfsc EECON1, WR ; wait for write to finish bra eeprom_save_wait bsf INTCON, GIE ; enable interrupts bcf EECON1, WREN ; disable writes return