;; ;; spreadspace pic utils ;; ;; ;; Copyright (C) 2011-2013 Christian Pointner ;; ;; This file is part of spreadspace pic utils. ;; ;; spreadspace pic utils is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; any later version. ;; ;; spreadspace pic utils is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with spreadspace pic utils. If not, see . ;; ;; ------------------------------------- ;; PREAMBLE LIST p=16F887 include "p16f887.inc" __config _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_NSLEEP & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC __config _CONFIG2, _BOR21V & _WRT_256 ;; ------------------------------------- ;; DEFINES (chip/com specific) #define BOOTPIN PORTC,7 USERVECT EQU H'100' ISRVECT EQU USERVECT + H'4' FLASH_BOUNDARY EQU b'00001111' ; flash write boundary is at 16 bytes boundaries VERSION_MAJ EQU .1 VERSION_MIN EQU .0 NAME_0 EQU 'I' NAME_1 EQU 'H' NAME_2 EQU 'U' DEVID_L EQU H'82' DEVID_H EQU H'20' FLASH_SIZE_L EQU H'00' FLASH_SIZE_H EQU H'20' ; 0x2000 -> 8192 Words of Flash FSS EQU .16 ; writing is done 8 words at a time but 16 words get erased EEPROM_SIZE_L EQU H'00' EEPROM_SIZE_H EQU H'01' ; 0x0100 -> 256 Bytes of EEPROM MESS EQU .64 ; this limit is because of to combuff size and single byte len field for messages CFG EQU .2 ; anyway this is not read or writable for this chip #define HOOK_CMD_RESET cmd_not_impl #define HOOK_CMD_R_FLASH cmd_r_flash #define HOOK_CMD_W_FLASH cmd_w_flash #define HOOK_CMD_R_EEPROM cmd_not_impl #define HOOK_CMD_W_EEPROM cmd_not_impl #define HOOK_CMD_R_CONFIG cmd_not_impl #define HOOK_CMD_W_CONFIG cmd_not_impl ;; Variables combuff EQU H'0020' current_cmdlen EQU H'0070' csum EQU H'0071' flags EQU H'007D' cnt EQU H'007F' ;; Boot Macro bootmacro macro ; enable this as soon as reset hardware is finished ;; btfsc BOOTPIN ;; goto USERVECT goto com_init endm ;; ------------------------------------- ;; DEFINES (defines) #include "generic-defines.inc" ;; ------------------------------------- ;; Bootloader init #include "generic-init.inc" ;; ------------------------------------- ;; Bootloader (com specific subroutines and init) #include "com-16f887-uart.inc" ;; ------------------------------------- ;; Bootloader (generic init/body) #include "generic-mainloop.inc" ;; ------------------------------------- ;; chip specific commands #include "cmds-16f887.inc" ;; ------------------------------------- ;; ------------------------------------- ;; dummy user code org USERVECT goto USERVECT ;; ------------------------------------- ;; END end