first off greetings, been a long time lurker here, can't even remember the number of times posts from this forum has saved me, usually when I'm stuck a quick search get's me unstuck with ease... so thank you everyone.
now for the stuck part...
I've been using Darryl's awesome MIBAM with a 12F683 for some time, just
some fading rgb led's etc.. nothing fancy, everything works great...
enter the 12F1822, was hoping to eventually utilize the hardware EUSART to send rgb color data to each led, since using MIBAM pretty much rules out any software serial communication on the 683. (and not quite sure when the 12F1501 will be available with 4xPWM)
So before I go any further I wanted to just setup a simple test program to make sure things in general are working..
here's how the pic is wired up..
here is my code for basic testing
Code:'**************************************************************** ' MIBAM TEST pic12F683 / pic12f1822 * '**************************************************************** #IF __PROCESSOR__ = "12F1822" #MSG "Compililng for 12F1822..." #CONFIG __config _CONFIG1, _FOSC_INTOSC & _MCLRE_OFF __config _CONFIG2, _PLLEN_OFF & _LVP_OFF #ENDCONFIG OSCCON = %01110000 '8mhz TRISA = %00011000 'setup inputs/outputs ANSELA = %00010000 'RA4 = analog CM1CON0 = 0 'disable comarators ADCON0 = %00001101 'Select AN3 enable ADC ADCON1 = %11010000 'Right Justify - Fosc/16 & 8mhz #ELSE #if __PROCESSOR__ = "12F683" #msg "Compiling for 12F683..." #CONFIG __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _CP_OFF #ENDCONFIG OSCCON = %01110001 '8mhz TRISIO = %00011000 'setup inputs/outputs ANSEL = %01011000 'RA4 = analog CMCON0 = %00000111 'disable comarators ADCON0 = %10001101 'Right Justify - Fosc/16 & 8mhz #else #ERROR "Only 12F1822 & 12F683 are supported!" #endif #ENDIF DEFINE OSC 8 '8mhz DEFINE ADC_BITS 10 '10 bit ADC DEFINE DEBUG_REG PORTA DEFINE DEBUG_BIT 5 DEFINE DEBUG_BAUD 9600 DEFINE DEBUG_MODE 0 ;____[ 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 ;----[ MIBAM Setup ]-------------------------------------------------------- BAM_COUNT CON 3 ; How many BAM Pins are used? INCLUDE "MIBAM.pbp" ; Mirror Image BAM module RED VAR BYTE GRN VAR BYTE BLU VAR BYTE adc_val var word 'adc value variable adc_thresh var word 'adc trigger threshold variable ASM BAM_LIST macro ; Define PIN's to use for BAM BAM_PIN (PORTA,0, BLU) ; and the associated Duty variables BAM_PIN (PORTA,1, RED) BAM_PIN (PORTA,2, GRN) endm BAM_INIT BAM_LIST ; Initialize the Pins ENDASM Speed CON 5 'led fade speed adc_thresh = 300 'trigger threshold red = 0 blu = 0 grn = 0 T1CON.0 = 0 'disable mibam debug "Program Start..",13,10 pause 2 T1CON.0 = 1 'enable mibam 'test MIBAM turn on and fade each led FOR red = 255 to 1 STEP -1 PAUSE Speed NEXT red red = 0 FOR grn = 255 to 1 STEP -1 PAUSE Speed NEXT grn grn = 0 FOR BLU = 255 to 1 STEP -1 PAUSE Speed NEXT BLu blu = 0 '------------------------ MAIN PROGRAM LOOP ------------------------ main: gosub do_adc 'get ADC reading pause 20 T1CON.0 = 0 'disable mibam debug "ADC: ",dec4 adc_val,13,10 pause 2 T1CON.0 = 1 'enable mibam if adc_val > adc_thresh then FOR red = 255 to 1 STEP -1 PAUSE Speed NEXT red red = 0 FOR grn = 255 to 1 STEP -1 PAUSE Speed NEXT grn grn = 0 FOR BLU = 255 to 1 STEP -1 PAUSE Speed NEXT BLu blu = 0 endif goto main '---------------------------------------------------------------------- Do_Adc: pauseus 50 ADCON0.1=1 WHILE ADCON0.1 : WEND adc_val.highbyte = ADRESH adc_val.lowbyte = ADRESL return
when compiled for 12F683, everything works fine... the test program does.
1. debug output --> "Program Start..."
2. lights up and fades each led r/g/b
3. debug output ADC reading
4. waits for ADC threshold to >300 then triggers the light sequence again.
now when I first compiled for 12F1822 I was greeted with the following error
not being one to give up so fast... started to track down what is causing the error message... discovered the following in MIBAM.bas.Code:PICBASIC PRO(TM) Compiler 3.0.0.4, (c) 1998, 2011 microEngineering Labs, Inc. All Rights Reserved. [MESSAGE] ledtest.pbp(13): Compililng for 12F1822... [ASM ERROR] LEDTEST.ASM (451) : Illegal opcode (_CylonMask) [ASM WARNING] LEDTEST.ASM (451) : Found label after column 1. (rrcf) [ASM ERROR] LEDTEST.ASM (459) : Illegal opcode (_CylonMask) [ASM WARNING] LEDTEST.ASM (459) : Found label after column 1. (rlcf) [ASM WARNING] LEDTEST.ASM (547) : Extraneous arguments on the line
if I comment out the #define's the program does compile successfully however mibam begins to work correctly and then stops working. The following happens.Code:;----[ makes rrf work on 18F's ]-------------------------------------------- ASM nolist ifdef BSR #define rrf rrcf #define rlf rlcf endif list ENDASM
1. debug output --> "Program Start..."
2. lights up and fades each led r/g/b
3. debug output ADC reading
4. waits for ADC threshold to >300 *FAILS* to tigger the light sequence.
basically you can see that the loops are running due to the pause in debug output but the leds now stay off...
I am assuming that because the 12F1822 is a new part with added features such as automatic context saving etc, I need to do some changes to the MIBAM code, but I really am not sure where to start.. looking to see if anyone has tried using MIBAM on newer pics?
untill then going to go brush up on my assembly knowledge some and see what trouble I can get myself into changing things...![]()









Bookmarks