Страница 1 из 1

Как заставить АЦП в меге48 работать?

Добавлено: Вс фев 28, 2010 22:44:43
stas00n
Делаю термометр-регулятор на меге48, схема спаяна, работает, цифирьки моргают, никак не могу заставить работать АЦП - ни в симуляторе, ни в железе :( А именно, происходит одно единственное прерывание по завершению преобразования, и все, потом АЦП затыкается, вроде в регистры пишу что надо:

Код: Выделить всё

.include "m48def.inc"

.equ	CT = 0x101	;температура
.org	0	
	rjmp	_start
.org	0x15
	rjmp	_ADC_int

_start:
	ldi	r16,0b11000110	;ADMUX: [REFS1|REFS0|ADLAR| - |MUX3|MUX2|MUX1|MUX0]
	sts	admux,r16
	ldi	r16,0b11001110	;ADCSRA: [ADEN|ADSC|ADATE|ADIF|ADIE|ADPS2|ADPS1|ADPS0]
	sts	adcsra,r16
	sei
_mainloop:
	

	rjmp	_mainloop

_adcint:
	lds	r24,adcl
	sts	ct,r24
	ldi	r24,0b11001110
	sts	adcsra,r24
	reti

Добавлено: Вс фев 28, 2010 22:50:46
stas00n
PS забыл - в симуляторе теперь работает - прерывания происходят, а в железе - ни фига. Одно преобразование после сброса, а потом из ADCL читается одно и то же значение :cry:
PPS В железе тоже прерывания есть - проверял на индикаторе, но результат преобразования не меняется...

Добавлено: Вс фев 28, 2010 23:55:59
stas00n
Фсе, разобрался вроде - надо было ADCH тоже читать, спасибо гуглу и 123avr!

Добавлено: Пн мар 01, 2010 00:49:13
ibiza11
stas00n писал(а):Фсе, разобрался вроде - надо было ADCH тоже читать, спасибо гуглу и 123avr!
datasheet читайте сначала.