ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

Программа для анализа работы АЦП на 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
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей.
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

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

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