Quantcast
Channel: MEL PICBASIC Forum
Viewing all articles
Browse latest Browse all 4794

Weirdness with 16F1705's eeprom and DAC

$
0
0
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


Viewing all articles
Browse latest Browse all 4794

Latest Images

Trending Articles



Latest Images