summaryrefslogtreecommitdiff
path: root/software/ihu
diff options
context:
space:
mode:
Diffstat (limited to 'software/ihu')
-rw-r--r--software/ihu/Makefile11
-rw-r--r--software/ihu/ihu.asm23
-rw-r--r--software/ihu/tables.inc8
3 files changed, 35 insertions, 7 deletions
diff --git a/software/ihu/Makefile b/software/ihu/Makefile
index a5184a8..3b4bb1e 100644
--- a/software/ihu/Makefile
+++ b/software/ihu/Makefile
@@ -32,3 +32,14 @@ PROJECT := ihu
PROC_TYPE := 16F887
include ../pic.include.mk
+
+DOWNLOADER := ../pic.bootloader/downloader.py
+BOOT_NAME := IHU
+BOOT_BAUD := 57600
+
+download: $(HEXFILE)
+ @$(DOWNLOADER) --name=$(BOOT_NAME) --cmd write $<
+ @$(DOWNLOADER) --name=$(BOOT_NAME) --cmd verify $<
+
+boot:
+ @$(DOWNLOADER) --name=$(BOOT_NAME) --cmd boot dummy
diff --git a/software/ihu/ihu.asm b/software/ihu/ihu.asm
index a4c53a4..e84eb9a 100644
--- a/software/ihu/ihu.asm
+++ b/software/ihu/ihu.asm
@@ -32,8 +32,13 @@
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_OFF
+ ;; This is specified via bootloader-IHU.asm
+ ;; __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_OFF
+
+BOOTLOADER EQU H'003'
+USERVECT EQU H'100'
+ISRVECT EQU H'104'
;; -------------------------------------
;; DEFINES
@@ -114,12 +119,12 @@ STATUS_TEMP EQU H'007F'
;; -------------------------------------
;; Reset Vector
- org 0
+ org USERVECT ; end of bootloader
goto init
;; -------------------------------------
;; Interrupt Vector
- org 4
+ org ISRVECT ; replocated ISR vector
;; save context
movwf W_TEMP
swapf STATUS,W
@@ -199,7 +204,8 @@ init
clrf PSTRCON ; disable pulse steering
movlw b'00010000' ; preselct 125 kHz, clock source as configured by configuration word
movwf OSCCON
- movlw b'11001111' ; input: RA0-RA3(analog),RA6-RA7(OSC); output: RA4-RA5(1wire)
+ ;; movlw b'11001111' ; input: RA0-RA3(analog),RA6-RA7(OSC); output: RA4-RA5(1wire)
+ movlw b'11011111' ; input: RA0-RA3(analog),RA6-RA7(OSC), RA4(BOOTPIN); output: RA5(1wire)
movwf TRISA
movlw b'11111111' ; input: all (interrupts and stats)
movwf TRISB
@@ -235,14 +241,17 @@ init
call i2c_init
clrf TMR0
- bsf INTCON,GIE
clrf TMP
+ bsf INTCON,GIE
+
+ btfsc RTC_RST ; if RTC is already finished, initialize it!
+ call rtc_init ; this maybe happend already via interrupt but better save than sorry
goto main
;; -------------------------------------
;; TABLES
- include "tables.inc"
+ include "tables.inc" ; this needs to stay inside 0x100 and 0x200
;; -------------------------------------
;; SUBROUTINES
diff --git a/software/ihu/tables.inc b/software/ihu/tables.inc
index 3e42a41..99d104f 100644
--- a/software/ihu/tables.inc
+++ b/software/ihu/tables.inc
@@ -31,6 +31,8 @@
;; -------------------------------------
;; digit
digit
+ clrf PCLATH ; this table is betwenn 0x100 and 0x200
+ incf PCLATH,f ; load PCLATH without changing W
andlw b'00001111'
addwf PCL,f
retlw '0'
@@ -51,6 +53,8 @@ digit
retlw 'F'
mul10
+ clrf PCLATH ; this table is betwenn 0x100 and 0x200
+ incf PCLATH,f ; load PCLATH without changing W
addwf PCL,f
retlw .0
retlw .10
@@ -71,6 +75,8 @@ mul10
retlw .160
daysL
+ clrf PCLATH ; this table is betwenn 0x100 and 0x200
+ incf PCLATH,f ; load PCLATH without changing W
addwf PCL,f
retlw .0
retlw .0
@@ -87,6 +93,8 @@ daysL
retlw .79
daysH
+ clrf PCLATH ; this table is betwenn 0x100 and 0x200
+ incf PCLATH,f ; load PCLATH without changing W
addwf PCL,f
retlw .0
retlw .0