Помогите начинающему!Пытаюсь сделать АЦП путем использования компаратора и измерении времени заряда конденсатора до значения входного напряжения.(Пример из AVR400). Моделирую пока в VMLABe.Работать не хочет.
С железом еше не связывался.
Заранее большое спасибо.
Вот программа.
- Код: Выделить всё • Развернуть
- .include "C:\VMLAB\include\1200def.inc"
 ;***** Константы
 .equ preset=192 ;Предустановленный код смещения T/C0 (256-64)
 .def result=r16 ;Результат пеобразования и промежуточные данные
 .def temp=r17 ;Временный регистр
 .cseg
 .org 0x0000
 rjmp Reset
 .org OVF0addr
 rjmp ANA_COMP
 .org ACIaddr
 rjmp ANA_COMP
 Reset:
 cbi DDRB,1
 rcall convert_init ;Инициализация АЦП
 sei ; Глобальное разрешение прерываний
 ldi result,0xFF
 out DDRD,result
 Delay:
 clr result ;Очистка временного счетчика 1
 ldi temp,0xf0 ;Очистка временного счетчика 2
 loop1:
 inc result ;Увеличение на 1 временного счетчика 1
 brne loop1 ; и ожидание его переполнения
 inc temp ; Увеличение на 1 временного счетчика 2
 brne loop1 ; и ожидание его переполнения
 rcall AD_convert ; Запуск преобразования
 Wait:
 brtc Wait ; Ожидание завершения преобразования
 out PORTD,result ; Вывод результата на порт B
 rjmp Delay ; Повтор преобразования
 ANA_COMP:
 in result,TCNT0 ;Загрузка значения таймера 0
 clr temp ;Останов таймера 0
 out TCCR0,temp
 subi result,preset+1 ;Вычисление результата преобразования
 cbi PORTB,PB2 ;Запуск разрядки конденсатора
 set ;Установка флага завершения преобразования
 reti ;Выход из прерывания
 convert_init:
 ldi result,0x0b ;Разрешение работы компаратора
 out ACSR,result ; и разрешение его прерывания
 ldi result,0x02 ;Разрешение прерывания таймера
 out TIMSK,result
 sbi PORTB,PB2 ;Настройка линии заряда/разряда как выход
 ret
 AD_convert:
 ldi result,preset ;Очистка счетчика результата
 out TCNT0,result ;и загрузка кода смещения
 clt ;Сброс флага окончания преобразования (t)
 ldi result,0x02 ;Запуск таймера 0 с предделением на 8
 out TCCR0,result
 sbi PORTB,PB2 ;Включение режима заряда конденсатора
 ret ;Выход из процедуры
И проект VMLab
- Код: Выделить всё • Развернуть
 .MICRO "AT90S1200"
 .PROGRAM "AVR400.asm"
 .TARGET "AVR400.hex"
 .TRACE ; Activate micro trace
 .POWER VDD=5 VSS=0 ; Power nodes
 .CLOCK 1meg ; Micro clock
 .STORE 250m ; Trace (micro+signals) storage time
 R1 PB2 PB0 100k
 C1 PB0 VSS 10n
 V1 PB1 VSS SLIDER_1(0 2)
 D1 VDD PD0
 D2 VDD PD1
 D3 VDD PD2
 D4 VDD PD3
 D5 VDD PD4
 D6 VDD PD5
 D7 VDD PD6



 
 