jean12
Advanced Member level 2
- Joined
- Aug 27, 2013
- Messages
- 529
- Helped
- 5
- Reputation
- 12
- Reaction score
- 6
- Trophy points
- 18
- Activity points
- 5,497
LIST P = P16F1936
INCLUDE "P16F1936.INC"
__CONFIG H'8007',H'3FAA'
__CONFIG H'8008',H'3FBC'
UDATA_SHR
W_TEMP RES 1 ;LOCATION FOR SAVING 'WREG' DURING INTERRUPT
STATUS_TEMP RES 1 ;LOCATION FOR SAVING 'STATUS' DURING INTERRUPT
FLAGS RES 1 ;FLAGS REGISTERS USED TO INDICATE DIFFERENT STATUS
tmp1 RES 1
tmp2 RES 1
EEPROM CODE 0X0000
DE D'123'
DE D'127'
DE D'129'
DE D'133'
DE D'135'
DE D'139'
DE D'141'
DE D'145'
DE D'146'
DE D'150'
DE D'152'
DE D'156'
DE D'158'
DE D'162'
DE D'164'
DE D'167'
DE D'169'
DE D'173'
DE D'174'
DE D'177'
DE D'179'
DE D'182'
DE D'184'
DE D'187'
DE D'189'
DE D'192'
DE D'194'
DE D'197'
DE D'198'
DE D'201'
DE D'203'
DE D'205'
DE D'207'
DE D'209'
DE D'210'
DE D'213'
DE D'214'
DE D'216'
DE D'218'
DE D'219'
DE D'221'
DE D'222'
DE D'223'
DE D'225'
DE D'226'
DE D'227'
DE D'228'
DE D'229'
DE D'230'
DE D'231'
DE D'231'
DE D'233'
DE D'233'
DE D'234'
DE D'234'
DE D'235'
DE D'235'
DE D'235'
DE D'236'
DE D'236'
DE D'236'
DE D'236'
DE D'236'
DE D'235'
DE D'235'
DE D'235'
DE D'234'
DE D'233'
DE D'233'
DE D'232'
DE D'231'
DE D'231'
DE D'230'
DE D'229'
DE D'228'
DE D'227'
DE D'226'
DE D'224'
DE D'223'
DE D'222'
DE D'221'
DE D'218'
DE D'218'
DE D'215'
DE D'214'
DE D'212'
DE D'210'
DE D'208'
DE D'207'
DE D'204'
DE D'203'
DE D'200'
DE D'198'
DE D'195'
DE D'194'
DE D'191'
DE D'189'
DE D'186'
DE D'184'
DE D'181'
DE D'179'
DE D'176'
DE D'174'
DE D'171'
DE D'169'
DE D'165'
DE D'164'
DE D'159'
DE D'158'
DE D'154'
DE D'152'
DE D'148'
DE D'146'
DE D'142'
DE D'141'
DE D'137'
DE D'135'
DE D'131'
DE D'129'
DE D'125'
DE D'123'
DE D'119'
DE D'117'
DE D'113'
DE D'111'
DE D'107'
DE D'105'
DE D'101'
DE D'100'
DE D'96'
DE D'94'
DE D'90'
DE D'88'
DE D'84'
DE D'82'
DE D'79'
DE D'77'
DE D'73'
DE D'72'
DE D'69'
DE D'67'
DE D'64'
DE D'62'
DE D'59'
DE D'57'
DE D'54'
DE D'52'
DE D'49'
DE D'48'
DE D'45'
DE D'43'
DE D'41'
DE D'39'
DE D'37'
DE D'36'
DE D'33'
DE D'32'
DE D'30'
DE D'28'
DE D'27'
DE D'25'
DE D'24'
DE D'23'
DE D'21'
DE D'20'
DE D'19'
DE D'18'
DE D'17'
DE D'16'
DE D'15'
DE D'15'
DE D'13'
DE D'13'
DE D'12'
DE D'12'
DE D'11'
DE D'11'
DE D'11'
DE D'10'
DE D'10'
DE D'10'
DE D'10'
DE D'10'
DE D'11'
DE D'11'
DE D'11'
DE D'12'
DE D'13'
DE D'13'
DE D'14'
DE D'15'
DE D'15'
DE D'16'
DE D'17'
DE D'18'
DE D'19'
DE D'20'
DE D'22'
DE D'23'
DE D'24'
DE D'25'
DE D'28'
DE D'28'
DE D'31'
DE D'32'
DE D'34'
DE D'36'
DE D'38'
DE D'39'
DE D'42'
DE D'43'
DE D'46'
DE D'48'
DE D'51'
DE D'52'
DE D'55'
DE D'57'
DE D'60'
DE D'62'
DE D'65'
DE D'67'
DE D'70'
DE D'72'
DE D'75'
DE D'77'
DE D'81'
DE D'82'
DE D'87'
DE D'88'
DE D'92'
DE D'94'
DE D'98'
DE D'100'
DE D'104'
DE D'105'
DE D'109'
DE D'111'
DE D'115'
DE D'117'
DE D'121'
DE D'123'
;POWER ON RESET VECTOR LOCATION
;**************************************************************************************
STARTUP CODE 0X0100 ;RESET VECTOR ADDRESS
GOTO START
CODE 0X04 ;INTERRUPT VECTOR LOCATION
GOTO readadc ;GOTO INTERRUPT SERVICE ROUTINE
;**************************************************************************************
;PROG0 CODE
;**************************************************************************************
;INITIALIZATION OF THE PORTS AND TIMERS
START
BANKSEL WDTCON
CLRF WDTCON
MOVLW 0x0F
BANKSEL TRISA
MOVWF TRISA
BANKSEL TRISB
BANKSEL T2CON
CLRF T2CON
MOVLW 0X0C
BANKSEL CCP1CON
MOVWF CCP1CON
BANKSEL PR2
MOVLW d'74' ;LOAD PR2 VALUE TO PR2 REGISTER For 10KHZ generated signal
MOVWF PR2
MOVLW 0XFF
BANKSEL APFCON
MOVWF APFCON
MOVLW 0x10
BANKSEL PWM1CON
MOVWF PWM1CON
MOVLW 0X0F
BANKSEL CCP1AS
MOVWF CCP1AS
MOVLW 0X1F
BANKSEL PSTR1CON
MOVWF PSTR1CON
MOVLW 0x00
BANKSEL CCPTMRS0
MOVWF CCPTMRS0
BANKSEL TRISC
BCF TRISC,2
BANKSEL T2CON
MOVLW 0x05
MOVWF T2CON
CLRF CCPR1L
;///////////////////////////////////////////////////////////////////////////////////////
; PROGRAMME PRINCIPAL
;///////////////////////////////////////////////////////////////////////////////////////
readEEPROM ;To be checked for DATA_EEADR
BANKSEL EEADRL
MOVWF EEADRL
BANKSEL EECON1
BCF EECON1,CFGS
BCF EECON1,EEPGD
BSF EECON1,RD
MOVLW D'91'
MOVWF tmp1
readok MOVF EEDATL,W
DECFSZ tmp1,f
GOTO raedok
RETURN
readadc
BSF PIE1,ADIE
BSF INTCON,GIE
BSF INTCON,PEIE
BTFSS PIE1,ADIE
return
BTFSS PIR1,ADIF
RETURN
CALL bosco
BCF PIR1,ADIF
return
bosco
BANKSEL ANSELA
MOVLW 0X01
MOVWF ANSELA
MOVLW 0x01
BANKSEL ADCON0
MOVWF ADCON0
MOVLW 0x20
BANKSEL ADCON1
MOVWF ADCON1
BANKSEL ADCON0
BSF ADCON0,GO
BSF ADCON0,CHS0
call delay1
BANKSEL ADRESH
MOVF ADRESH,W
BANKSEL CCPR1L
MOVWF CCPR1L
return
readvoltage
MOVLW 0X20
BANKSEL ADCON1
MOVWF ADCON1
MOVLW 0X02
BANKSEL ADCON0
MOVWF ADCON0
BCF ADCON0,CHS0
BSF ADCON1,CHS1
MOVF ADRESH,W
MOVWF voltage
XORLW 0XFF
BTFSC STATUS,Z
RETURN
delay1
MOVLW d'200'
MOVWF tmp2
delay2
DECFSZ tmp2,f
GOTO delay2
RETURN
END
LIST P=P16F1936
#include <P16F1936.INC>
__CONFIG H'8007',H'3FAA'
__CONFIG H'8008',H'3FBC'
; UDATA_SHR
UDATA 0X20
W_TEMP RES 1 ;LOCATION FOR SAVING 'WREG' DURING INTERRUPT
STATUS_TEMP RES 1 ;LOCATION FOR SAVING 'STATUS' DURING INTERRUPT
FLAGS RES 1 ;FLAGS REGISTERS USED TO INDICATE DIFFERENT STATUS
tmp1 RES 1
tmp2 RES 1
CNT15 EQU h'25'
ORG 0XF000
DE D'123'
DE D'127'
DE D'129'
DE D'133'
DE D'135'
DE D'139'
DE D'141'
DE D'145'
DE D'146'
DE D'150'
DE D'152'
DE D'156'
DE D'158'
DE D'162'
DE D'164'
DE D'167'
DE D'169'
DE D'173'
DE D'174'
DE D'177'
DE D'179'
DE D'182'
DE D'184'
DE D'187'
DE D'189'
DE D'192'
DE D'194'
DE D'197'
DE D'198'
DE D'201'
DE D'203'
DE D'205'
DE D'207'
DE D'209'
DE D'210'
DE D'213'
DE D'214'
DE D'216'
DE D'218'
DE D'219'
DE D'221'
DE D'222'
DE D'223'
DE D'225'
DE D'226'
DE D'227'
DE D'228'
DE D'229'
DE D'230'
DE D'231'
DE D'231'
DE D'233'
DE D'233'
DE D'234'
DE D'234'
DE D'235'
DE D'235'
DE D'235'
DE D'236'
DE D'236'
DE D'236'
DE D'236'
DE D'236'
DE D'235'
DE D'235'
DE D'235'
DE D'234'
DE D'233'
DE D'233'
DE D'232'
DE D'231'
DE D'231'
DE D'230'
DE D'229'
DE D'228'
DE D'227'
DE D'226'
DE D'224'
DE D'223'
DE D'222'
DE D'221'
DE D'218'
DE D'218'
DE D'215'
DE D'214'
DE D'212'
DE D'210'
DE D'208'
DE D'207'
DE D'204'
DE D'203'
DE D'200'
DE D'198'
DE D'195'
DE D'194'
DE D'191'
DE D'189'
DE D'186'
DE D'184'
DE D'181'
DE D'179'
DE D'176'
DE D'174'
DE D'171'
DE D'169'
DE D'165'
DE D'164'
DE D'159'
DE D'158'
DE D'154'
DE D'152'
DE D'148'
DE D'146'
DE D'142'
DE D'141'
DE D'137'
DE D'135'
DE D'131'
DE D'129'
DE D'125'
DE D'123'
;POWER ON RESET VECTOR LOCATION
;**************************************************************************************
;STARTUP CODE 0X0100 ;RESET VECTOR ADDRESS
ORG 0X100
GOTO START
;CODE 0X04 ;INTERRUPT VECTOR LOCATION
ORG 0X0004
GOTO readadc ;GOTO INTERRUPT SERVICE ROUTINE
;**************************************************************************************
;PROG0 CODE
;**************************************************************************************
;INITIALIZATION OF THE PORTS AND TIMERS
START
BANKSEL WDTCON
CLRF WDTCON
MOVLW 0x0F
BANKSEL TRISA
MOVWF TRISA
BANKSEL TRISB
BANKSEL T2CON
CLRF T2CON
MOVLW 0X0C
BANKSEL CCP1CON
MOVWF CCP1CON
BANKSEL PR2
MOVLW d'74' ;LOAD PR2 VALUE TO PR2 REGISTER For 10KHZ generated signal
MOVWF PR2
MOVLW 0XFF
BANKSEL APFCON
MOVWF APFCON
MOVLW 0x10
BANKSEL PWM1CON
MOVWF PWM1CON
MOVLW 0X0F
BANKSEL CCP1AS
MOVWF CCP1AS
MOVLW 0X1F
BANKSEL PSTR1CON
MOVWF PSTR1CON
MOVLW 0x00
BANKSEL CCPTMRS0
MOVWF CCPTMRS0
BANKSEL TRISC
BCF TRISC,2
BANKSEL T2CON
MOVLW 0x05
MOVWF T2CON
CLRF CCPR1L
;///////////////////////////////////////////////////////////////////////////////////////
; PROGRAMME PRINCIPAL
;///////////////////////////////////////////////////////////////////////////////////////
readEEPROM
MOVLW d'121'
MOVWF CNT15
BANKSEL EEADRL
MOVWF EEADRL
BANKSEL EECON1
BCF EECON1,CFGS
BCF EECON1,EEPGD
BSF EECON1,RD
DECFSZ CNT15,f
GOTO readEEPROM
RETURN
readok MOVF EEDATL,W
DECFSZ tmp1,f
GOTO readok
RETURN
readadc
BSF PIE1,ADIE
BSF INTCON,GIE
BSF INTCON,PEIE
BTFSS PIE1,ADIE
return
BTFSS PIR1,ADIF
RETURN
CALL bosco
BCF PIR1,ADIF
return
bosco
BANKSEL ANSELA
MOVLW 0X01
MOVWF ANSELA
MOVLW 0x01
BANKSEL ADCON0
MOVWF ADCON0
MOVLW 0x20
BANKSEL ADCON1
MOVWF ADCON1
BANKSEL ADCON0
BSF ADCON0,GO
BSF ADCON0,CHS0
call delay1
BANKSEL ADRESH
MOVF ADRESH,W
BANKSEL CCPR1L
MOVWF CCPR1L
return
readvoltage
MOVLW 0X20
BANKSEL ADCON1
MOVWF ADCON1
MOVLW 0X02
BANKSEL ADCON0
MOVWF ADCON0
BCF ADCON0,CHS0
BSF ADCON1,CHS1
MOVF ADRESH,W
;MOVWF voltage
;XORLW 0XFF
;BTFSC STATUS,Z
RETURN
delay1
; MOVLW d'200'
; MOVWF tmp2
delay2
; DECFSZ tmp2,f
; GOTO delay2
; RETURN
END
What is the purpose of writing in assembly language ? To minimize the code size ? I can write in C for you and the code size will be almost the same size as you get when written in assmebly language. I will store the table in ROM and access it.
This is a big project,this is a startup that is why I want high precision and then I use MPASM,the target is to do as explained above and then use three CCP Modules shifted so that I can control a three phase system.
I wonder how you measure the amplitude using a comparator..A feedback of voltage designed using a voltage comparator by LM339 operational amplifier.
Hi,
--> "high precision" has nothing to do with ASM or C.
***
The "howto" of generating three phase shifted sine wave generation is disscussed on ther thread before.
***
I wonder how you measure the amplitude using a comparator..
Klaus
That is absolutely unnecessary and only serves to complicate things. Write it in assembly OR in 'C' but mixing the two has no benefit in this application and make the code harder to follow and debug.I will use in-line assembly coding with C code.
Yes,
it has been discussed but here I am asking for other issues,reading LUT table from EEPROM and use it for generating SPWM,the other thread has not be really fruitfull because no outcome gained I got only on how a given number of digits is applied on the phase but implementing the corresponding loop has not been clarified.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?