HRP-N3 - серия источников питания с максимальной пиковой мощностью в 350% от MEAN WELL

Программа для анализа работы АЦП на AVR Atmel

Новичок
 
Регистрация: 10.05.2009
Сообщений: 1
Репутация: 10
 
11.05.2009 20:49 #1
программа для анализа работы АЦП на avr Atmel. нужно организовать вычитание двух потенциометров! ADC6-ADC7! вычитание происходит все горит, когда один в макс. а другой в мин. показвает максимальное значение 10! а надо чтобы показвал от -FF ДО FF! ПОМОГИТЕ НАЙТИ ОШИБКУ ИЛЬ ВАШ ВАРИАНТ......... СПАСИБО ЗАРАНЕЕ
разрядность входных сигналов: 10
система счисления: 16


.include "m8535def.inc"
;Назначим новые имена для регистров
.def count=r20 ;Счетчик, позиция
.def takt=r21
.def tmp=r19 ;Регистр буферный
.def znak=r29 ;Знак числа на вывод

.org $0 ;Начальный адрес
rjmp reset
.org $0E
rjmp in_ADC
.cseg ;Начало сегмента кодов (сама программа)
.org $200

;Вектор прерывания от АЦП
;Устанавливаем указатель стека на конец RAM
reset: ldi r16, low(RAMEND)
ldi r17, high(RAMEND)
out spl, r16
out sph, r17
;Конфигурация входов выходов
ldi r16, 0xFE ;0 бит порта А
out DDRB,r16 ;на вход
ldi r16, 0x00 ; все биты порта А
out DDRA, r16 ;устанавливаем на ввод
ldi r16, 0xFF
out DDRC, r16 ;Порт D и порт С устанавливаем
out DDRD, r16 ;на вывод
; out PORTA, r16 ;Подтягивающие резисторы
out PORTB,r16

ldi takt, 1 ;Начальное значение такта
ldi count,1 ;Начальное значение счетчика (позиции)

clr r22
clr r23
clr r25 ;Готовим для вывода знака

;Инициализация АЦП
ldi r16, 0x26
out ADMUX, r16 ;Выравнивание влево, канал 6
ldi r16, 0xEF ;Разрешение работы, циклическая работа,
out ADCSRA, r16 ;разрешение прерывания, КД=128

sei ;Разрешение прерываний

main:
nop
rjmp main ;Ожидание прерывания
;Подрограмма прерывания от АЦП



in_ADC:
in r27,SREG

kanal1:
cpi takt ,2
breq kanal2
ldi r16, 0x26
out ADMUX, r16 ;Выравнивание влево, канал 6
in r16, ADCL ;Младший байт в r16
in r17, ADCH ;Старший байт в r17


;lsr r17

;lsr r17
;формируем число в r17
;lsr r17

andi r17,0xFF
inc takt

rjmp super_prer

kanal2:
ldi r16, 0x27
out ADMUX, r16 ;Выравнивание влево, канал 7
in r22, ADCL ;Младший байт в r22
in r23, ADCH ;Старший байт в r23


;lsr r23

;lsr r23 ;формируем число в r23

;lsr r23

andi takt, 1 ;На первый такт

andi r23, 0xFF

rcall raznost

clr r16

rcall preobr_koda
rcall indic
rjmp super_prer

super_prer:

ldi r16, 0xEF ;Разрешение работы, циклическая работа,
out ADCSRA, r16 ;разрешение прерывания, КД=128
out SREG,r27
reti

raznost:

sbc r17, r23
brlo minus ;разность чисел
rjmp plus

preobr_koda:

subi r17, 0xFF
brlo preobr_chislo
inc r16
rjmp preobr_koda

preobr_chislo:

ldi r18, 0xFF
add r17, r18
swap r16
add r16, r17
ret


plus:
ldi znak,0x00 ;код темноты(плюс)
rjmp rezultat

minus:
ldi znak,0x40 ;код минуса
neg r17
rjmp rezultat



rezultat:
ret

indic:
cpi count, 2 ;Если позиция 2, то
breq cifir_2 ;на выдачу старшей цифры
cpi count, 3 ;Если позиция 3, то
breq cifir_3 ;на выдачу знака числа

cifir_1:
mov tmp, r16 ;Иначе выделяем младшую цифру
andi tmp, 0x0F
inc count
ldi r26,0x01
rjmp konec_rasch ;Переходим на конец выделения цифры

cifir_2:
mov tmp, r16 ;Выделяем старшую цифру
swap tmp
andi tmp, 0x0F
inc count
ldi r26,0x02
rjmp konec_rasch ;Переходим на конец выделения цифры

cifir_3:
mov tmp,znak
ldi count,1
ldi r26,0x04
out PORTD, r26 ;Выдача кода позиции
out PORTC, tmp
ret
konec_rasch:
ldi r31,$01
ldi r30,$00 ;чтение
add r30, tmp
clr tmp
lpm
mov tmp,r0

out PORTD, r26 ;Выдача кода позиции
out PORTC, tmp
ret ;Иначе сразу возврат из п/п прерывания
.org $80 ;запись в PZU
.db $3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F,$77,$7C,$3 9,$5E,$79,$71
Оценка
В многообразии литиевых батареек и аккумуляторов нет какого-то универсального или идеального варианта. Выбирая тот или иной вариант для питания устройства, разработчику приходится оперировать множеством параметров, используя наиболее оптимальное их сочетание для каждого приложения. Разберем параметры для различных приложений.
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 21:14.
Обратная связь РадиоЛоцман Вверх