[an error occurred while processing this directive] [an error occurred while processing this directive]
Так работает
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Тумблер 02 ноября 2001 г. 11:26
В ответ на: Внутренний АЦП в AVR'е? (+) отправлено Loafer 01 ноября 2001 г. 16:29

Жук - Mega103, 6 мГц.
На С это выглядит так:
(Внизу - ассемблерный листинг выдаваемый IAR-C)

// инициализация АЦП :
ADMUX = 0; // выбор канала
// 0027 CLR R16
// 07B9 OUT LOW(7),R16

ADCSR = 0xc7;
// 07EC LDI R16,199
// 06B9 OUT LOW(6),R16


.
.
.
// где-то в программе старт АЦП:
ADCSR |= 1 << ADSC; // старт АЦП
// 369A SBI LOW(6),LOW(6)
.
.
.
// где-то в прграмме чтение АЦП по готовности и сброс:
{
word adcdata;
byte b;

if ((ADCSR and (1 << ADIF)) lne 0)
// 349B SBIS LOW(6),LOW(4)
// 36C1 RJMP ?0021

{
b = ADCL;
// 84B1 IN R24,LOW(4)

adcdata = ADCH;
// 25B1 IN R18,LOW(5)
// 3327 CLR R19

adcdata = (adcdata shl 8) or b;
// 322F MOV R19,R18
// 2227 CLR R18
// 082F MOV R16,R24
// 1127 CLR R17
// 202B OR R18,R16
// 312B OR R19,R17

ADCSR |= (1 << ADIF); // сброс флага "READY"
// 349A SBI LOW(6),LOW(4)
}
}
:)

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru