Greetings all,
I purchased PBP3 a few months ago and have been able to write a few programs on my own. I have been using Microcode Studio to compile and a Pickit 4 to transfer the HEX files to the MCUs.
However, this time i'm facing an issue that i'm not being able to understand.
I already searched the forum but could not find a solution.
Currently I'm checking some of the amazing examples of Mr. Darrel Taylor. I loaded a 16F88 MCU with the MIBAM example but I cannot get any LEDs to light up.
I added an on/off startup LED indication to test the programming and that LED works...but not the scan effect from the MIBAM code.
Here's the code i'm using:
Code:
#CONFIG
__config _CONFIG1, _WDT_OFF & _FOSC_INTOSCIO & _MCLRE_OFF & _CP_OFF & _LVP_OFF
#ENDCONFIG
'*****************************************************************************
'CONFIGURATION
'PIE1=0
'PIE2=0
'PCON=%11111111
'EECON1=0
CCP1CON=0 ' Disable CCP Module
CVRCON=0
CMCON=7 ' analog comparators off
OPTION_REG.7=1 ' Disable Pull-Ups
OSCTUNE=%00000000
OSCCON=%01111000 '16f88 - 8Mhz
TRISA = %00000000
TRISB = %00000000
DEFINE OSC 8
'*****************************************************************************
;____[ For 12F/16F only - Interrupt Context save locations]_________________
wsave var byte $20 SYSTEM ' location for W if in bank0
;wsave var byte $70 SYSTEM ' Alternate save location for W
' if using $70, comment out wsave1-3
' --- IF any of these next three lines cause an error ?? -------------------
' Comment them out to fix the problem ----
' -- The chip being used determines which variables are needed -------------
wsave1 VAR BYTE $A0 SYSTEM ' location for W if in bank1
wsave2 VAR BYTE $120 SYSTEM ' location for W if in bank2
wsave3 VAR BYTE $1A0 SYSTEM ' location for W if in bank3
'---DO NOT change these-----------------------------------------------------
ssave VAR BYTE BANK0 SYSTEM ' location for STATUS register
psave VAR BYTE BANK0 SYSTEM ' location for PCLATH register
' --------------------------------------------------------------------------
disable debug
;---------------------------------------------------------------------------
'*****************************************************************************
'VARiables
TIM1 VAR WORD '
TIM2 VAR WORD '
TIM3 VAR WORD '
TIM4 VAR WORD
DIRLED VAR BYTE
CNT VAR WORD
KM VAR WORD 'POWER-ON COUNTER
LINE1 CON $80
'*****************************************************************************
'PORTS & PINS
A2 VAR PORTA.2 'OUT LED
b1 VAR PORTb.1 'OUT LED
'*****************************************************************************
;----[ MIBAM Setup ]--------------------------------------------------------
'BAM_FREQ CON 100 ; Desired Refresh rate Limit
;ScopeSync VAR PORTB.0 ; if declared, generates sync for OScope
DEFINE BAM_INFO 1 ; use to display MIBAM results
BAM_COUNT CON 3 ; How many BAM Pins are used?
INCLUDE "MIBAM.pbp" ; Mirror Image BAM module
BAM_DUTY VAR BYTE[BAM_COUNT]
LED1 VAR BAM_DUTY[0] ; group them in an array for easy access
LED2 VAR BAM_DUTY[1] ; with FOR loops etc.
LED3 VAR BAM_DUTY[2]
LED4 VAR BAM_DUTY[3]
LED5 VAR BAM_DUTY[4]
LED6 VAR BAM_DUTY[5]
LED7 VAR BAM_DUTY[6]
LED8 VAR BAM_DUTY[7]
ASM
BAM_LIST macro ; Define PIN's to use for BAM
BAM_PIN (PORTB,0, LED1) ; and the associated Duty variables
BAM_PIN (PORTB,1, LED2)
BAM_PIN (PORTB,2, LED3)
; BAM_PIN (PORTB,3, LED4)
; BAM_PIN (PORTB,4, LED5)
; BAM_PIN (PORTB,5, LED6)
; BAM_PIN (PORTB,6, LED7)
; BAM_PIN (PORTB,7, LED8)
endm
BAM_INIT BAM_LIST ; Initialize the Pins
ENDASM
'*****************************************************************************
CLEAR
'*****************************************************************************
;_________________________________________________
Speed CON 2'6 ; Smaller = Faster
TracerSpeed CON 5'15 ; Smaller = Faster Left/Right
Brightness CON 200 ; Tracers DutyCycle
DrainSpeed CON 30 ; Smaller = Shorter Trail
Idx VAR BYTE
LoopCount VAR BYTE
NextLED VAR BYTE
TraceDIR VAR BIT
TraceDIR = 0
LoopCount = 0
NextLED = 0
startup:
for CNT =1 to 2 'for power on test purposes
high b1
pause 1000
low b1
pause 1000
next CNT
'*****************************************************************************
Main:
if LoopCount = TracerSpeed then ; __[ Cylon/Kitt Scanner ]__
LoopCount = 0
BAM_DUTY(NextLED) = Brightness
if TraceDIR then ; if scanning left
NextLED = NextLED - 1
if NextLED = 0 then TraceDIR = 0
else ; else scanning right
NextLED = NextLED + 1
if NextLED = BAM_COUNT-1 then TraceDIR = 1
endif
endif
FOR Idx = 0 to BAM_COUNT - 1 ; Drain all dutycycles
IF BAM_DUTY(Idx) > 0 then
BAM_DUTY(Idx) = BAM_DUTY(Idx)*DrainSpeed/(DrainSpeed+1)
ENDIF
NEXT Idx
pause Speed
LoopCount = LoopCount + 1
high a2
GOTO Main
Can anyone help troubleshoot this issue?
I thank you in advance
Bookmarks