Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Помогите с АЦП в Асме. Листинг в сообщении. Постепеннно повышаю инверсный Ш...{+}(+)

Отправлено Fantomas 09 сентября 2008 г. 22:11


Текст заголовка сообщения полностью: Помогите с АЦП в Асме. Листинг в сообщении. Постепеннно повышаю инверсный ШИМ, зачитываю АЦП, при достижении уровня хочу остановить процесс. Но на самом деле постоянно проходит цикл он малого до максимума и снова... и снова..

Помогите с АЦП в Асме. Листинг в сообщении. Постепеннно повышаю инверсный ШИМ, зачитываю АЦП, при достижении уровня хочу остановить процесс. Но на самом деле постоянно проходит цикл он малого до максимума и снова... и снова..

Заранее благодарен за советы !

.include "tn13def.inc"

.def tempL = r16 ; присваиваем регистру R16 имя tempH
.def tempH = r17 ; присваиваем регистру R17 имя tempL
.def Temp0 = r18 ; Temp
.def Temp1 = r19 ; Темр
.def BC = r20 ; Button Counter
.def Cnt =r21 ;временный регистр Cnt
.def Del =r22 ;временный регистр Del
.def Tc =r23 ;временный регистр Таймера
.def Tm =r24 ;временный регистр TuneMode
.def ADC_Value =r25 ;ADC_Value

.DSEG

.cseg

rjmp RESET
rjmp EXT_INT0
rjmp PCINT0_
rjmp TIM0_OVF
rjmp EE_RDY
rjmp ANA_COMP
rjmp TIM0_COMPA
rjmp TIM0_COMPB
rjmp WATCHDOG
rjmp ADC_INT

;RESET:
EXT_INT0:
PCINT0_:
TIM0_OVF:
EE_RDY:
ANA_COMP:
TIM0_COMPA:
TIM0_COMPB:
WATCHDOG:
;ADC_INT:
reti

RESET:
;=========================================INIT=========================================;
ldi r16,LOW(RAMEND) ; Инициализируем стек
out SPl,r16

; Define pull-ups and set outputs high
; Define directions for port pins
ldi Temp0,(0<<PB4)|(0<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0)
ldi Temp1,(0<<DDB4)|(0<<DDB3)|(0<<DDB2)|(1<<DDB1)|(1<<DDB0)
out PORTB,Temp0
out DDRB,Temp1
ldi Temp1,(0<<ISC01)|(0<<ISC00) ;Прерывание по Low Level //(not возростанию фронта)
out MCUCR,Temp1
ldi Temp1,(1<<INT0) ;Прерывание 0 Разрешаем
out GIMSK,Temp1

; Установка минимального ШИМ
ldi Temp0,0b10000011 ; Установка уровня выхода
out TCCR0A,Temp0
ldi Temp0,0b00000010 ; Установка предделителя (/8)
out TCCR0B,Temp0
ldi Temp0,0b00000100 ; Разрешаем выход ШИМ "А"
out TIMSK0,Temp0

ldi Temp0,0b11111111 ; Заносим значение @@@ в регистр OCR1A
out OCR0A,Temp0

;Инициализация переменной ВС, выбор режима...))
rcall EEPROM_Read ; Вызываем подпрограмму чтения константы из памяти
andi BC,0b00000011
;Инициализация переменной Tm...))
ldi Tm,0b00000000

; Тут будем инициализировать АЦП
ldi Temp0,(1<<REFS0)|(1<<ADLAR)|(1<<MUX1)|(1<<MUX0) ;Установили внутреннее опорное напряжение 1.1В
out ADMUX,Temp0 ;Ровнение по Левому краю и ADC3 вход

ldi Temp0,(1<<ADEN)|(1<<ADIE) ;Инициализируем АЦП, разрешаем прерывания.
out ADCSRA,Temp0

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

Tune:
ldi Temp0,(1<<ADC0D)|(1<<ADC2D)|(1<<ADC1D) ;Заперщаем все, кроме одной, лапки АЦП.
out ADCSRA,Temp0

sbi ADCSRA,6

ldi Temp0,0
ldi Temp1,30
Pause1:
dec Temp0
brne Pause1
dec Temp1
brne Pause1

cpi ADC_Value,0b01000101
;10111010-0.8
;(0b10110011 - 0,77V) (0b10101110 - 0,75V)
;cpi tempH,0b10101110
BRSH main
in Tm,OCR0A ; Заносим значение ---> в регистр OCR0A
dec Tm
out OCR0A,Tm

rjmp Tune


;=========================================MAIN=========================================;

ADC_INT:
in ADC_Value,ADCH
reti

main:
rjmp main
*******************************************


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите из двух единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru