avr: fixed module cny70 (basically works now).
This commit is contained in:
@@ -53,17 +53,18 @@ CNY70_Init:
|
|||||||
ldi r17, (cny70DataEnd-cny70DataBegin)
|
ldi r17, (cny70DataEnd-cny70DataBegin)
|
||||||
rcall Utils_FillSram
|
rcall Utils_FillSram
|
||||||
|
|
||||||
; setup pins and interrupts
|
; setup pins
|
||||||
sbi CNY70_DDR_LED, CNY70_PINNUM_LED ; set DATA port as output
|
sbi CNY70_DDR_LED, CNY70_PINNUM_LED ; set DATA port as output
|
||||||
sbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED off
|
sbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED off
|
||||||
cbi CNY70_PORT_ADC, CNY70_PINNUM_ADC ; disable internal pullup for ADC
|
cbi CNY70_PORT_ADC, CNY70_PINNUM_ADC ; disable internal pullup for ADC
|
||||||
cbi CNY70_DDR_ADC, CNY70_PINNUM_ADC ; set ADC port as input
|
cbi CNY70_DDR_ADC, CNY70_PINNUM_ADC ; set ADC port as input
|
||||||
|
|
||||||
ldi r16, (1 << CNY70_MUX_ADC) ; select input pin, use Vcc as reference voltage
|
ldi r16, CNY70_MUX_ADC ; select input pin, use Vcc as reference voltage
|
||||||
out ADMUX, r16
|
out ADMUX, r16
|
||||||
sbi ADCSRB, ADLAR ; left shift result for 8-bit representation in ADCH
|
ldi r16, (1 << ADLAR)
|
||||||
ldi r16, (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0) ; enable, prescaler 8
|
|
||||||
out ADCSRB, r16
|
out ADCSRB, r16
|
||||||
|
ldi r16, (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0) ; enable, prescaler 8
|
||||||
|
out ADCSRA, r16
|
||||||
|
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
@@ -77,7 +78,6 @@ CNY70_Fini:
|
|||||||
|
|
||||||
|
|
||||||
CNY70_Run:
|
CNY70_Run:
|
||||||
ret ; DEBUG (doesn't change things)
|
|
||||||
lds r16, cny70Flags
|
lds r16, cny70Flags
|
||||||
andi r16, CNY70_FLAGS_ADC_UPDATED ; new value?
|
andi r16, CNY70_FLAGS_ADC_UPDATED ; new value?
|
||||||
breq CNY70_Run_done ; nope, jump
|
breq CNY70_Run_done ; nope, jump
|
||||||
@@ -97,8 +97,8 @@ CNY70_OnTimer:
|
|||||||
andi r16, CNY70_FLAGS_ADC_STARTED
|
andi r16, CNY70_FLAGS_ADC_STARTED
|
||||||
breq CNY70_OnTimer_startConversion
|
breq CNY70_OnTimer_startConversion
|
||||||
; conversion is running, complete?
|
; conversion is running, complete?
|
||||||
sbis ADCSRA, ADSC
|
sbic ADCSRA, ADSC
|
||||||
ret ; only if bit clear
|
ret ; only if bit still set
|
||||||
|
|
||||||
; conversion complete, read value, set flags
|
; conversion complete, read value, set flags
|
||||||
lds r16, cny70Flags
|
lds r16, cny70Flags
|
||||||
@@ -114,14 +114,11 @@ CNY70_OnTimer:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
CNY70_OnTimer_startConversion:
|
CNY70_OnTimer_startConversion:
|
||||||
|
cbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED on
|
||||||
lds r16, cny70Flags
|
lds r16, cny70Flags
|
||||||
ori r16, CNY70_FLAGS_ADC_STARTED
|
ori r16, CNY70_FLAGS_ADC_STARTED
|
||||||
sts cny70Flags, r16
|
sts cny70Flags, r16
|
||||||
cbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED on
|
sbi ADCSRA, ADSC ; start conversion
|
||||||
nop
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
sbic ADCSRA, ADSC ; start conversion
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user