Hi Folks,
First time use of subject PIC chosen for its inbuilt 8bit DAC. Code below runs but throws compile errors with:
1 onboard eeprom (I'd really like to get this working).
2 can't use binary to set FVRCON (decimal works fine). This isn't a big deal but why the error and what does it mean?
Am I missing something obvious? I've RTFM but still scratching my head...
Thanks,
Bill
Code:
'*********************************************************************************
'* Name : DACtest.pbp *
'* Date : 16/07/20 *
'* Device : 16F1705 *
'* Version : 1 (PBP 3.0.10.4) *
'*********************************************************************************
'
'=========================================================================================================
' CONFIGURE DEVICE
'=========================================================================================================
#CONFIG ; 16F1705
__config _CONFIG1, _FOSC_INTOSC & _WDTE_ON & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _BOREN_ON & _CLKOUTEN_OFF
__config _CONFIG2, _WRT_OFF & _PPS1WAY_OFF & _ZCDDIS_OFF & _PLLEN_OFF & _STVREN_ON & _BORV_LO & _LPBOR_OFF & _LVP_OFF
#ENDCONFIG
' Connections as follows:
' ****16F1705 PIC**** Comments
'
' Vdd (pin 1) 5 volts.
' RA5 (pin 2) T1clk. Spare.
' RA4 (pin 3) AN3, T1G. Spare.
' MCLR RA3 (pin 4) IOC. Pull High 10k. Spare.
' RC5 (pin 5) Opamp2in+, CCP1. Spare.
' RC4 (pin 6) Opamp2in-. Serout for monitoring (9600).
' RC3 (pin 7) AN7, Opamp2Out, CCP2. Serin for setting from laptop (9600).
' RC2 (pin 8) AN6, Opamp1Out. Spare.
' RC1 (pin 9) AN5, Opamp1in-. Spare.
' RC0 (pin 10) AN4, Opamp1in+. Spare.
' RA2 (pin 11) AN2, DAC1out2. Initial use with pot to adjust DAC output.
' ICSPclk RA1 (pin 12) AN1, Vref+. Spare.
' ICSPdat RA0 (pin 13) AN0, DAC1out1. Output voltage from DAC.
' Vss Ground (pin 14)
'=========================================================================================================
' PIN ASSIGNMENTS, SYSTEM CONSTANTS, TEMPORARY VARIABLES
'=========================================================================================================
' Alias pins
DAC1out var PortA.0 ' Output voltage from DAC via 1k.
Iset var PortA.2 ' Pot to adjust DAC output.
in_pin var PortC.3 ' serial in via 22k.
out_pin var PortC.4 ' serial out via 1k.
'=========================================================================================================
' Variables
'=========================================================================================================
pott var word ' 10bit value from pot.
Message var byte '
a var byte ' Loop counter.
'=========================================================================================================
' Constants
'=========================================================================================================
B96 CON 16468 ' Baudmode for 9600,8,N,1 inverted.
' -----[ Initialization ]----------------------------------------------------------------
' Stored onboard E2...
'#### Message below brings:
'[ERROR] dactest.pbp (58) : Syntax error
'[MESSAGE] pic16f1705.pbpinc(351): HPWM command only supports CCP channels (not PWM channels).
'Message Data "DACtest 16Jul20"
' Clear ' Reset all variables.
INCLUDE "modedefs.bas" ' Include serial modes.
DEFINE DEBUG_REG PORTC ' Debug pin port.
DEFINE DEBUG_BIT 4 ' Debug pin.
DEFINE DEBUG_BAUD 9600 ' Debug baud rate
DEFINE DEBUG_MODE 1 ' Debug mode: 0 = True, 1 = Inverted
' DEFINE DEBUG_PACING 1000 ' Debug character pacing in us
DEFINE DEBUGIN_BIT 3 ' Input pin.
DEFINE OSC 4 ' Adjust to suit design.
OSCCON = %01101011 ' Internal 4MHz osc.
' OSCCON = %01110011 ' Internal 8MHz osc.
' OSCCON = %01111011 ' Internal 16MHz osc.
' OSCCON = %11110011 ' Internal 32MHz osc PLL.
OPTION_REG.7 = 1 ' Disable weak pullups.
' OPTION_REG.7 = 0 ' Enable weak pullups.
DEFINE ADC_BITS 10 ' Set number of bits in result.
DEFINE ADC_CLOCK 3 ' Set clock source (rc = 3).
DEFINE ADC_SAMPLEUS 50 ' Set sampling time in microseconds.
' ADCON0 = 0 ' No ADC.
ADCON0 = %00000001 ' Enable ADC.
ADCON1 = %10000000 ' Right justify, Frc, use Vdd for Vref.
ADCON2 = %00000000 ' No Trigger selects.
ANSELA = %00000100 ' AN2 the rest Dig.
' ANSELA = 0 ' Disable ADC.
ANSELC = %00000000 ' All Dig.
CM1CON0 = 0 ' Comparators off.
' #### These Error if uncommented:
' FVRCON = $0 ' Disabled.
' FVRCON = $11000101 ' Enabled, Vref 1.024V, DAC1out1 (RA0).
' DAC1CON0 = $10101000 ' Vref from FVR.
' DAC1CON1 = $10000000 ' Set initial output value to 50% of Vref.
'[WARNING] dactest.pbp (100) : $11000101 Malformed binary numeric, value truncated
'[WARNING] dactest.pbp (101) : $10101000 Malformed binary numeric, value truncated
'[WARNING] dactest.pbp (102) : $10000000 Malformed binary numeric, value truncated
'[MESSAGE] pic16f1705.pbpinc(351): HPWM command only supports CCP channels (not PWM channels).
' These compile okay:
FVRCON = 197 ' Enabled, Vref 1.024V, DAC1out1 (RA0).
' FVRCON = 201 ' Enabled, Vref 2.048V, DAC1out1 (RA0).
' FVRCON = 205 ' Enabled, Vref 4.096V, DAC1out1 (RA0).
DAC1CON0 = 168 ' Vref from FVR.
DAC1CON1 = 128 ' Set initial output value to 50% of Vref.
TRISA = %000100 ' A.2 pot input.
TRISC = %001000 ' C.3 serial in.
Pause 1000 ' Short wait for things to settle.
debug "I'm Alive!", 13,10 ' Eureka moment.
pause 3000 ' Time enough to gloat.
goto First ' Jump subs.
'=========================================================================================================
' Subroutines
'=========================================================================================================
'=========================================================================================================
' Main
'=========================================================================================================
First:
for a = 0 to 255 step 7 ' Some coarse jumps.
DAC1CON1 = a
debug "DAC = ",#a,13,10 '
pause 2000 ' Let the DMM settle.
next
goto first ' Cycle.
end
Bookmarks