40 байт EEPROM для збереження двійкових еквівалентів надлишкових СЗР та МЗР.

3.3 Розробка програми, що керує роботою мікропроцесора

В МП АЦП порозрядного врівноваження із ваговою надлишковістю, що калібрується, МК виконує цифрове обчислення ваг розрядів. Для забезпечення основного перетворення аналог-код періодом 100мкс для 20 тактів перетворення перемикання повинно складати 100/20 – 5мкс. При тактовій частоті мікроконтролера 10 МГц його період 100 нс. Максимальне значення таймера: 216 = 65535.

Потрібно підібрати тактову частоту таймера так, щоб він рахував до 65535 за 5мкс.

При тактовій частоті 10 МГц таймер дорахує до кінця за 100 нс * 65536 = 6,6 мс, що більше 5 мкс.

Потрібно встановити Bit1, Bit0 TCCR1B без коефіцієнту поділу частоти TCCR1B = 0b00000001

Визначимо число, що буде завантажено до OCR1A з яким буде порівнювати компоратор поточний стан таймера.

Підрахуємо кількість тактових імпульсів за час 5 мкс: 5мкс / 100нс = 50

Затримка у 5мкс дорівнює 50 імпульсів. Саме це число завантажимо у OCR1A. Цей регістр складається з двох 8 бітних регістрів OCR1AH та OCR1AL. Перетворемо 50 у шестнадцяти розрядне число й завантажимо його до OCR1AH (старша частина) та OCR1AL (молодша частина).

50(10) = 32(16).

OCR1AH = $00

OCR1AL = $32

Цифрове обчислення коду здійснюється за допомогою двійкових еквівалентів надлишкового коду на виході РПН у ЦОП шляхом підсумовування двійкових еквівалентів ваг розрядів, які виявилися включеними після зрівноважування вхідного аналогового сигналу та зберігаються в EEPROM. Для

НПСЧ на основі “золотої пропорції“ двійкові еквіваленти являють собою двохбайтові числа, які наведено в таблиці 3.1.

Таблиця 3.1 – Двійкові еквіваленти надлишкового коду ЦАП

№ розряду Двійковий код № розряду Двійковий код
СЗР МЗР СЗР МЗР
1 $00 $01 11 $00 $7B
2 $00 $02 12 $00 $B7
3 $00 $03 13 $01 $42
4 $00 $04 14 $02 $09
5 $00 $08 15 $03 $4B
6 $00 $0B 16 $05 $53
7 $00 $12 17 $08 $A2
8 $00 $1D 18 $0D $FF
9 $00 $2F 19 $16 $B0
10 $00 $4B 20 $24 $C8

Програмна реалізація МП АЦП порозрядного врівноваження із ваговою надлишковістю, що калібрується доцільно розробити за допомогою компілятора мови асемблера. Лістинг програми має вигляд:

.include"2333def.inc"

;ПІДГОТОВКА ДО РОБОТИ

.defCOUNTER=R16

.defSZR=R17 ;старші розряди

.defMZR=R18 ;молодші розряди

.defZDVUG=R22 ;перехід до МЗР

CLRSZR

CLRMZR

LDICOUNTER,$13

LDIZDVUG,$14

LDIR19,$0E

OUTDDRC,R19

SBIPORTC,2 ;ВСТАНОВЛЕННЯ CИГНАЛУ S

SBIPORTC,1 ;ВСТАНОВЛЕННЯ CИГНАЛУ D

SBIPORTC,3 ;ВСТАНОВЛЕННЯ CИГНАЛУ C

CBIPORTC,3 ;СКИД СИГНАЛУ C

CBIPORTC,1 ;СКИД СИГНАЛУ C

RJMPSTART

; ПІДПРОГРАМА ЗЧИТУВАННЯ ЦИФРОВИХ ЕКВІВАЛЕНТІВ СЗРІ МЗР З EEPROM

.def ADR=R19

.def VAGA=R20

EEPROM_READ:

OUTEEAR,ADR

SBIEECR,0

INVAGA,EEDR

RET

START:

; ВИКОНАННЯ ЗЧИТУВАННЯ ЗНАЧЕННЯ З КОМПАРАТОРА

M2:INR21,$1

ANDIR21,$1

BREQL1

SBIPORTC,3

CBIPORTC,3

RJMPL2

;ПЕРЕВІРКА ЛІЧИЛЬНИКА КІЛЬКОСТІ ТАКТІВ ПЕРЕТВОРЕННЯ

L2:TSTCOUNTER

BRNEM1

DECCOUNTER

RJMPM2

;ВИКОНАННЯ ЦИФРОВОГО ОБЧИСЛЕННЯ ВАГ РОЗРЯДІВ

L1:

.def TEMP =R23

.def TEMP1 =R24

;ВЕКТОРИ ПЕРЕРИВАНЬ

RJMP RESET

RJMP INT0

RJMP INT1

RJMP TIMER1_CAPT

RJMP TIMER1_COMP1

RJMP TIMER1_OVF

RJMP TIMER0_OVF

RJMP SPI_STC

RJMP UART_RX

RJMP UART_UDRE

RJMP UART_TX

RJMP ADC

RJMP RDY

RJMP COMP

;RESET:

INT_0:

INT_1:

TIMER1_CAPT:

;TIMER1_COMP1

TIMER1_OVF:

TIMER0_OVF:

SPI_STC:

UART_RX:

UART_UDRE:

UART_TX:

ADC:

RDY:

COMP:

RETI

;ІНІЦІАЛІЗАЦІЯ ТАЙМЕРА

RESET:

LDI TEMP,0B01000000 ;ДОЗВІЛ ПЕРЕРИВАННЯ КОМПАРАТОРА

OUT TIMSK,TEMP

LDI TEMP,0B00000001 ;ТАКТОВИЙ СИГНАЛ = CK

OUT TCCR1B,TEMP

LDI R25,$00 ;ІНІЦІАЛІЗАЦІЯ КОМПАРАТОРА

OUT OCR1H,R25

LDI TEMP,$32

OUT OCR1L,TEMP

LDI TEMP,RAMEND ;УСТАНОВКА ВКАЗІВНИКА СТЕКА

OUT SPL,TEMP

LDI TEMP,0 ;СКИД ТАЙМЕРА

OUT TCNT1H,TEMP

OUT TCNT1L,TEMP

SEI ;ДОЗВІЛ ПРЕРИВАННЯ

;ВИКОНАННЯ ЦИФРОВОГО ОБЧИСЛЕННЯ ВАГ СЗР

MOVADR,COUNTER

RCALLEEPROM_READ

ADDSZR,VAGA

;ВИКОНАННЯ ЦИФРОВОГО ОБЧИСЛЕННЯ ВАГ МЗР

ADDADR,ZDVUG

RCALLEEPROM_READ

ADDMZR,VAGA

; ОБРОБЛЮВАЧ ПЕРЕРИВАННЯ КОМПАРАТОРА

TIMER1_COMP1:

LDI TEMP,0 ;СКИД ТАЙМЕРА

OUT TCNT1H,TEMP

OUT TCNT1L,TEMP

SBIPORTC,1

SBIPORTC,3

CBIPORTC,3

RJMPL2

;ВИВЕДЕННЯ ВАГ РОЗРЯДІВ У ВИГЛЯДІ ПАРАЛЕЛЬНОГО ДВІЙКОВОГО КОДУ НА ПОРТИ (ПОРТ D - СЗР; ПОРТ B - МЗР)

M1:.def TEMPP =R16

LSR MZR

LSR MZR

LDI TEMPP,$FF

OUT DDRD,TEMPP

OUT DDRB,TEMPP

OUT PORTD,SZR

OUT PORTB,MZR

NOP



Информация о работе «Мікропроцесорний АЦП порозрядного врівноваження із ваговою надлишковістю, що калібрується»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 48186
Количество таблиц: 2
Количество изображений: 9

0 комментариев


Наверх