From 2de89ecc9631df6481590e58b05bf2fd0266d34e Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Wed, 11 Sep 2024 01:35:24 +0200 Subject: [PATCH] avr: fixed module cny70 (basically works now). --- avr/modules/cny70/main.asm | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/avr/modules/cny70/main.asm b/avr/modules/cny70/main.asm index 56c3313..ee249ee 100644 --- a/avr/modules/cny70/main.asm +++ b/avr/modules/cny70/main.asm @@ -53,17 +53,18 @@ CNY70_Init: ldi r17, (cny70DataEnd-cny70DataBegin) rcall Utils_FillSram - ; setup pins and interrupts - sbi CNY70_DDR_LED, CNY70_PINNUM_LED ; set DATA port as output - sbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED off - cbi CNY70_PORT_ADC, CNY70_PINNUM_ADC ; disable internal pullup for ADC - cbi CNY70_DDR_ADC, CNY70_PINNUM_ADC ; set ADC port as input + ; setup pins + sbi CNY70_DDR_LED, CNY70_PINNUM_LED ; set DATA port as output + sbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED off + cbi CNY70_PORT_ADC, CNY70_PINNUM_ADC ; disable internal pullup for ADC + 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 - sbi ADCSRB, ADLAR ; left shift result for 8-bit representation in ADCH - ldi r16, (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0) ; enable, prescaler 8 + ldi r16, (1 << ADLAR) out ADCSRB, r16 + ldi r16, (1 << ADEN) | (1 << ADPS1) | (1 << ADPS0) ; enable, prescaler 8 + out ADCSRA, r16 sec ret @@ -77,7 +78,6 @@ CNY70_Fini: CNY70_Run: - ret ; DEBUG (doesn't change things) lds r16, cny70Flags andi r16, CNY70_FLAGS_ADC_UPDATED ; new value? breq CNY70_Run_done ; nope, jump @@ -97,8 +97,8 @@ CNY70_OnTimer: andi r16, CNY70_FLAGS_ADC_STARTED breq CNY70_OnTimer_startConversion ; conversion is running, complete? - sbis ADCSRA, ADSC - ret ; only if bit clear + sbic ADCSRA, ADSC + ret ; only if bit still set ; conversion complete, read value, set flags lds r16, cny70Flags @@ -114,14 +114,11 @@ CNY70_OnTimer: ret CNY70_OnTimer_startConversion: + cbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED on lds r16, cny70Flags ori r16, CNY70_FLAGS_ADC_STARTED sts cny70Flags, r16 - cbi CNY70_PORT_LED, CNY70_PINNUM_LED ; LED on - nop - nop - nop - sbic ADCSRA, ADSC ; start conversion + sbi ADCSRA, ADSC ; start conversion ret