|
@@ -59,6 +59,8 @@ PILOT_12 equ 0F4
|
|
|
PILOT_9 equ 0D2
|
|
|
PILOT_6 equ 0B4
|
|
|
|
|
|
+CHARGEPWM equ 3C
|
|
|
+
|
|
|
start
|
|
|
; Initialize Ports TRISA
|
|
|
; PORTA, 0 = CP input = analog in 1
|
|
@@ -183,7 +185,7 @@ connected
|
|
|
btfsc PORTC, 1 ; Check if the lock is closed
|
|
|
goto lock
|
|
|
|
|
|
- movlw 3A ; Offer 14 amps
|
|
|
+ movlw CHARGEPWM ; Start offering
|
|
|
movwf CCPR1L
|
|
|
|
|
|
call read_cp
|
|
@@ -199,7 +201,6 @@ connected
|
|
|
|
|
|
; Cable must be disconnected, unlock and go back to idle.
|
|
|
goto unlock
|
|
|
-
|
|
|
|
|
|
charging
|
|
|
bsf PORTB, 4 ; Power On
|
|
@@ -226,19 +227,19 @@ read_cp
|
|
|
wait_for_pwm_period
|
|
|
; TMR2 loopt mee gedurende de PWM. Als TMR2 < CCPR1L dan zitten we nog in de hoog periode.
|
|
|
; De aquisitietijd voor de AD-conversie is 4 cycli. Als we 16 cycli voor het eind van de PWM-hoog periode beginnen met samplen, hebben we tijd genoeg.
|
|
|
- ; We willen niet direct aan het begin van de periode zitten, maar halverwege.
|
|
|
+ ; We willen niet direct aan het begin van de periode zitten, maar na 5%.
|
|
|
; Dus CCPR1L/2 < TMR2 < (CCPR1L - 16)
|
|
|
|
|
|
- ; Check if TMR2 > CCPR1L / 2
|
|
|
- rrcf CCPR1L, W
|
|
|
- subwf TMR2, W ; TMR2 - CCPR1L/2: moet > dan nul zijn, STATUS, C = 1
|
|
|
+ ; Check if TMR2 > 12d
|
|
|
+ movlw d'12'
|
|
|
+ subwf TMR2, W ; TMR2 - 12: moet > dan nul zijn, STATUS,C = 1
|
|
|
btfsc STATUS, C
|
|
|
goto wait_for_pwm_period
|
|
|
|
|
|
; Check if TMR2 < (CCPR1L - 16)
|
|
|
movlw d'16' ; 16 -> W
|
|
|
subwf CCPR1L, W ; (CCPR1L - 16) -> W
|
|
|
- subwf TMR2, W ; TMR2 - (CCPR1L - 16): moet < dan nul zijn, STATUS, C = 0
|
|
|
+ subwf TMR2, W ; TMR2 - (CCPR1L - 16): moet < dan nul zijn, STATUS,C = 0
|
|
|
btfsc STATUS, C
|
|
|
goto wait_for_pwm_period
|
|
|
|