diff -r c923295ee520 -r 1b3cea759eff adc.inc --- a/adc.inc Mon Jun 02 18:27:08 2014 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -;; -;; Basic ADC operation -;; - -; Reference select -.set ADC_REF = 0b01 ; AVcc - -; Bit adjustment -.set ADC_LAR = 1 ; Left-adjust - -; Input select -.set ADC_MUX = 0b000 ; ADC0 - -; Auto-trigger source -.set ADC_ATS = 0b011 ; TC0 OCA - -; Auto-trigger enable -.set ADC_ATE = 1 - -; Prescaler -.set ADC_PS = 0b111 ; 1/128 - -; I/O pins -.equ ADC_DDR = DDRC -.equ ADC_PORT = PORTC -.equ ADC_PIN = PORTC0 - -;; Initialize the ADC for starting conversions -ADC_Init: - ; ADMUX - ldi r16, (ADC_REF << REFS0) | (ADC_LAR << ADLAR) | (ADC_MUX << MUX0) - sts ADMUX, r16 - - ; ADCSRB - ldi r16, (ADC_ATS << ADTS0) - sts ADCSRB, r16 - - ; ADCSRA - ; ADSC: No need if using external auto-trigger ??? - ; Enable interrupt - ldi r16, (1 << ADEN) | (1 << ADSC) | (ADC_ATE << ADATE) | (1 << ADIE) | (ADC_PS << ADPS0) - sts ADCSRA, r16 - - ; Disable digital circuit for pin - ldi r16, (1 << ADC_PIN) - sts DIDR0, r16 - - ; Done - ret - -;; Interrupt handler stub for ADC_HANDLER -ADC_Interrupt: - in r0, SREG - - rcall ADC_HANDLER - - out SREG, r0 - reti - -;; Read the current 8-bit ADC sample -; Returns value in r16 -ADC_Read8: - ; Copy - lds r16, ADCH - - ; Done - ret -