|

Складання програми для ЦПОС TMS320F243.
Розрахунок керуючого слова АЦП.
Для того щоб АЦП належно працював необхідно розрахувати
для нього керуюче слово і записати його в керуючий регістр,
який знаходиться у пам'яті даних за адресом 7032h.
Керуючий регістр АЦП (рис.3) керує запуском перетворення,
функцією дозволу/заборони модуля АЦП, дозволом переривання,
і завершенням перетворення.

РИС.3. Керуючий регістр АЦП (ADCTRL1) - Адреса 7032h
Зауваження: R = доступ читання, W = запис, S = тіньовий,
0 = Значення після скидання
Біт 15 Suspend-soft. Застосуємо тільки при
эмуляции.
0 = Негайний останов, якщо suspend-free (біт 14) = 0
1 = Завершення перетворення перед остановом эмулятора
Біт 14 Suspend-free. Застосуємо тільки при
эмуляции.
0 = Дія визначається битому suspend-soft (біт 15)
1 = Підтримування в робочому стані при припиненні эмулятора
Біт 13 ADCIMSTART. АЦП запуск перетворення
негайно.
0 = Немає дії.
1 = Негайний запуск перетворення.
Біт 12 ADC2EN. Біт дозволу/заборони для
АЦП2. Може записуватися під час перетворення. Вплив запису
в цей біт виявляється при наступному перетворенні.
0 = АЦП2 заборонений. (Не може мати місце ніяка операція вибірки/збереження/перетворення,
регістр даних FIFO1 не змінюється.)
1 = АЦП2 дозволений.
Біт 11 ADC1EN. Біт дозволу/заборони для
АЦП1. Може записуватися під час перетворення. Вплив запису
в цей біт виявляється при наступному перетворенні.
0 = АЦП1 заборона. (Не може мати місце ніяка операція вибірки/збереження/перетворення,
регістр даних FIFO1 не змінюється.)
1 = АЦП1 дозволений.
Біт 10 ADCCONRUN. Цей біт установлює модуль
АЦП у режим безупинного перетворення. Може записуватися під
час перетворення. Вплив запису в цей біт виявляється при наступному
перетворенні.
0 = Немає дій.
1 = Безупинне перетворення.
Біт 9 ADCINTEN. Дозвіл переривань. Якщо
біт ADCINTEN установлений, переривання запитується, коли встановлений
біт ADCINTFLAG. Цей біт очищається при скиданні . Біт може
бути записаний під час перетворення. Вплив запису в цей біт
виявляється при наступному перетворенні.
Біт 8 ADCINTFLAG. АЦП біт прапора переривання.
Цей біт указує, чи трапилося переривання. Запис 1 у ADCINTFLAG
очищає цей біт. Біт не затінений.
0 = Ніякої події переривання не трапилося
1 = Подія переривання трапилася
Біт 7 ADCEOC. Цей біт указує стан АЦП перетворення.
0 = Кінець перетворення
1 = Перетворення відбувається
Біти 6-4 ADC2CHSEL. Вибирає канали для АЦП2 .Біт може
бути записаний під час перетворення. Ефект запису в цей біт
виявляється протягом наступного перетворення.
000 = Канал 9
001 = Канал 10
010 = Канал 11
011 = Канал 12
100 = Канал 13
101 = Канал 14
110 = Канал 15
111 = Канал 16
Біти 3-1 ADC1CHSEL. Вибір каналів АЦП1.
Цей біт затінюється. Біт може бути записаний під час перетворення.
Ефект запису в цей біт виявляється протягом наступного перетворення.
000 = Канал 1
001 = Канал 2
010 = Канал 3
011 = Канал 4
100 = Канал 5
101 = Канал 6
110 = Канал 7
111 = Канал 8
Біт 0 ADCSOC. Біт запуску перетворення (SOC)
АЦП. Біт може бути записаний під час перетворення. Ефект запису
в цей біт виявляється протягом наступного перетворення.
0 = Немає дій
1 = Запуск перетворення
Згідно з описом всіх бітів керуючого слова
запишемо:
Керуюче слово (КС) = 0000 1100 0000 00112 чи 0С0316
Перша тетрада КС означає, що заборонено негайний
запуск АЦП і заборону роботи АЦП2 (оскільки його немає в наявності
в TMS320F243)
Друга тетрада КС означає, що вибрано АЦП1 він же АЦП; режим
безперервного вимірювання; заборона переривань.
Четверта тетрада - вибір 2го каналу АЦП і запуск його
Складання програми для перетворення аналогового
сигналу у цифровий код.
Результат обробки АЦП знаходиться в регістрі FIFO
за адресою 7036h в памяті даних в такому виді як показано
на рис.4

РИС.4 Регістр FIFO
Біти 15-6 D9-D0. Фактичні 10 розрядні біти
цифрового коду.
Біти 5-0 Резерв. Завжди читається як 0.
Оскільки біти D0 D1 містять у собі похибку (через
нестабільність напруги ГСН) то ними можна знехтувати і цифровий
результат записати у вигляді 8 старших біт D9 - D2 регістра
FIFO. Загальна формула отримання цифрового результату є:
(
I )
де UREFL0 - нульова напруга (=0В); UREFHI - опорна напруга
(=5.14В).
.setsect ".text", 0FE00h; адреса(початок)
у програмній памяті першої команди
START:
LDP #224; вибір сторінки пам'яті даннях в якій знаходяться
регістри
АЦП
SPLK #0903h,32h; загрузка КС
START1:
LAR AR0,#300h; загрузка регістру AR0 константою30016 (адреса
пам'яті
даних куди буде записано першу із 100 вибірок.
LAR AR1,#100; кількість вибірок
LOOP1
BIT 32h,7; перевірка закінчення обробки АЦП
BCND LOOP1, NTC
SPLK #0903h,32h; початок нової вибірки (загрузка КС)
CALL ADC; визов подрограми розрахунку результату
MAR *,AR0; організація запису у памать
LDP #5
SACL 0h
SACL *+,0,AR1
BANZ LOOP1,*-
B START1
ADC: ; подрограма розрахунку результату
LACC 36h; загрузити у акумулятор результат обробки АЦП з
регістра FIFO за адресою
(пам'ять даних) 703616 та 8х здвиг праворуч.
ROR
ROR
ROR
ROR
ROR
ROR
ROR
ROR
RET ;повернення до основної програми
Розрахунок керуючого слова для портів вводу/виводу
Таблиця 1
Адреси регістрів в пам'яті даних:
OCRB - 709216
PCDATDIR- 709C16
Згідно з таблицею 1 запишемо керуюче слово:
КС1=XXXX XX01 0000 00112
Це слово записується у мультиплексорний регістр OCRB за адресою
(память даних) 709216. Таким чином здійснюється вибір однієї
із функцій (в данному випадку функції вводу/виводу).
КС2=1111 1111 ДДДД ДДДД2
Це слово записується у регістр PCDATDIRза адресою. (память
даних) 709C16. Перші дві старші тетради КС означають що каналиС0-С7
будуть працювати на вивод. Байтом ДДДД ДДДД2 задаються дані
які необхідно вивести (в даному випадку старші 8 біт з результату
обробки АЦП
Складання програми для видачі цифрового коду
на порти вводу/виводу.
LDP #5h; сторінка пам'яті даних
SACL 0h; зміст (2 молодших байти)ACC ® у пам'ять 8016
LACC #0ff00h; FF00 ®ACC
ADD 0h; зміст пам'яті даних +ACC
LDP #225; сторінка пам'яті даних
SPLK #0103h,12h; загрузка КС1 порта вводу/виводу
SACL 1Ch; загрузка КС2 порта вводу/виводу
LDP #5h; сторінка пам'яті даних
LACC 0h; пам'ять даних 28016 ® ACC
Об'єднуючи програму для перетворення аналогового сигналу у
цифровий код та програму для видачі цифрового коду на порти
вводу/виводу отримаємо:
START:
LDP #224
SPLK #0903h,32h
START1:
LAR AR0,#300h
LAR AR1,#100
LOOP1:
BIT 32h,7
BCND LOOP1, NTC
SPLK #0903h,32h
CALL ADC
LDP #5h
SACL 0h
LACC #0ff00h
ADD 0h
LDP #225
SPLK #0103h,12h
SACL 1Ch
LDP #5h
LACC 0h
LDP #224
MAR *,AR0
SACL *+,0,AR1
BANZ LOOP1,*-
B START1
ADC:
LACC 36h
ROR
ROR
ROR
ROR
ROR
ROR
ROR
ROR
RET
|