1 / 1 / 0
Регистрация: 05.10.2016
Сообщений: 51
1

Симуляция работы АЦП в AtmelStudio 7 на ATmega328

10.01.2017, 18:48. Показов 1798. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можно как то организовать симуляцию работы АЦП в 7-ке, чтобы какие то результаты преобразования в регистры ADCL(H) записались.
Как понять когда заканчивается преобразование?
Бит ADCS (регистра ADCSRA)запускает преобразование, когда преобразование заканчивается он сам потом выставляется или это надо программно организовать.
Каким битом выставляется многоразовое преобразование (кстати в этом режиме ADCS как работает, его только один раз выставить надо , а потом он автоматом перекидывается?)
Можно в 7 студии как то организовать что бы в ADCL(H) регистры записывались результаты преобразования , допустим опорное Vcc (5в) ну и на входе выставляем руками 1 типа 5вольт. ну и туда 255 записывается, на вход выставляем "0" в ADCL пишется 0...
Ну и если с примером то на asm.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2017, 18:48
Ответы с готовыми решениями:

Мултиплексор АЦП Atmega328
Всем доброго времени суток. Такое недопонимание у меня возникло: сколько разрядов имеет...

Atmega328, проблемы с АЦП
Здравствуйте, народ. Какие могут быть идеи по следующим симптомам: - всегда 1023 - сам МК...

АЦП ATmega328 и функции генерируемые CodeVisionAVR
CV для работы с АЦП генерирует функцию:unsigned int read_adc(unsigned char adc_input) . Функция...

Начало работы с atmega328
Здравствуйте, помогите подобрать программатор для прошивки otmyko328P. Интересует, сколько стоит,...

Алгоритм работы с ацп АЦП STM32F103
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста алгоритм работы с ацп. Допустим мне надо...

8
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,013
10.01.2017, 19:29 2
Цитата Сообщение от vasiaFPV Посмотреть сообщение
результаты преобразования в регистры ADCL(H) записались
Лапками.
1
1 / 1 / 0
Регистрация: 05.10.2016
Сообщений: 51
11.01.2017, 05:23  [ТС] 3
Бит ADCS (регистра ADCSRA)запускает преобразование, когда преобразование заканчивается он сам потом выставляется или это надо программно организовать?
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,013
11.01.2017, 11:13 4
Этот бит запускает преобразование. Нужно его взводить. Сам по себе он не изменится.
0
1 / 1 / 0
Регистрация: 05.10.2016
Сообщений: 51
11.01.2017, 16:25  [ТС] 5
Цитата Сообщение от pyzhman Посмотреть сообщение
Этот бит запускает преобразование. Нужно его взводить. Сам по себе он не изменится.
А когда преобразование заканчивается он автоматом сбросится? И вообще сколько тактов уходит на преобразование и как понять когда оно заканчивается
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,013
12.01.2017, 08:14 6
Открываем даташит. Читаем:
• Bit 6 – ADSC: ADC Start Conversion
In Single Conversion mode, write this bit to one to start each conversion. In Free Running
mode, write this bit to one to start the first conversion. The first conversion after
ADSC has been written after the ADC has been enabled, or if ADSC is written at the
same time as the ADC is enabled, will take 25 ADC clock cycles instead of the normal
13. This first conversion performs initialization of the ADC.
ADSC will read as one as long as a conversion is in progress. When the conversion is
complete, it returns to zero. Writing zero to this bit has no effect.
0
1 / 1 / 0
Регистрация: 05.10.2016
Сообщений: 51
12.01.2017, 18:46  [ТС] 7
Цитата Сообщение от pyzhman Посмотреть сообщение
instead of the normal
вроде как преобразоавание продолжается 25 циклов? но что значит "вместо нормального".

Добавлено через 6 часов 0 минут
ADC это бермуды какие то. Что после чего, когда что начинается когда заканчивается. Попытался симулировать преобразование по совпадению регистра OCR0A с Т0. Ну и при совпадении программа ускакивает на соответствующий вектор TIMER0 COMPA. А мне вообще то надо что бы переход был на вектор "ADC - прерывание по завершению преобразования АЦП"......
0
1176 / 653 / 111
Регистрация: 15.05.2012
Сообщений: 4,013
13.01.2017, 09:53 8
The first conversion
- 25 тактов. Последующие - 13. Оно вам надо такие нюансы?
По прерываниям. Прерывание при окончании преобразования случится тогда, когда закончится преобразование И разрешено прерывание по окончании преобразования И разрешены глобальные прерывания.
0
1 / 1 / 0
Регистрация: 05.10.2016
Сообщений: 51
14.01.2017, 15:43  [ТС] 9
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.def temp= r16
        .def Desired  = r19
; -----------------------
.org 0x0000  jmp      RESET   ;0x0000   RESET - сброс
.org 0x002A  jmp   OPPA       ;0x002A   ADC - прерывание по завершению преобразования АЦП
 
 RESET:
 ldi temp,low(RAMEND)     ; Выбор адреса вершины стека 
 out SPL, temp            ; Запись его в регистр стека
 ldi temp, HIGH (RAMEND)  ;
 out SPH , temp  ;
 
 ldi temp,0b01100000
 sts ADMUX,temp           ;REFS-выбор Vcc опрное,ADLAR -выравнивание в лево, MUX0-2 вход ADC0
 ldi temp, 1<<ADEN|1<<ADSC|0<<ADATE|1<<ADIE|0<<ADPS1 ; ;ADEN- АЦП включен,ADSC-начать преобразование,
 
 sts ADCSRA, temp         ;ADIE-прерывание разрешено
 ldi temp,0<<ADTS1|0<<ADTS0         
 sts ADCSRB,temp          ; непрерывное преобразование
 
 
 Start:
   
     loop:       
    rjmp  loop            ;а если не закончилось  
    rjmp Start  ; снова задаем ADC0
 
    OPPA:
    lds Desired,ADCH         ; считываем 8-битный результат
    ldi temp,1<<ADEN|1<<ADSC|0<<ADATE|1<<ADIE ;        
    sts ADCSRA,temp          ;запускаем преобразование
    reti
Если можно, давайте рассмотрим одиночные или непрерывное преобразование. У меня не выставляет флаг I глобального разрешения прерываний. Ставлю I руками, прерывание от АЦП срабатывает, вроде по reti флаг I должен выставиться , но нет. Его что sei в каждом цикле выставлять.

Добавлено через 23 часа 37 минут
В "младших" ATmegax в ADCSR присутствует бит ADFR - выбор режима работы АЦП (однократное или непрерывное преобразование. В ATмеге328 есть биты ADTS2-0 если их выставить 000 то это типа режим непрерывного преобразования.
И есть бит ADSC - для запуска одиночных преобразований или первого в непрерывном преобразовании. Режим непрерывного преобразования а пока ADSC програмно не выставишь преобразование не начинается.С одной стороны непонятно какие биты надо выставить чтобы запустить одиночные преобразования(нет таких сочетаний битов) с другой стороны если вроде установлено непрерывное преобразование бит ADSC автоматом не взводится..
0
14.01.2017, 15:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2017, 15:43
Помогаю со студенческими работами здесь

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

Симуляция работы LM324DTBG в Multisim
Здравствуйте! Задумка следующая: собрать в мультисиме12 и протестировать работу индикатора уровня...

Симуляция работы схемы в EWB
Добрый день! есть задание оно написано на фотографии , нужно сделать две схемы и потом соеденить,...

Симуляция работы печи на FBD в WinCC
Здравствуйте! Сразу скажу, что я в этом деле новичок, поэтому мой вопрос может показаться глупым,...

Симуляция работы встроенного таймера в пошаговом режиме
здравствуйте Встроенный таймер Т/С0 начинает работать после установки флага TCON4 Timer100mcs: ...

Симуляция работы комбинационной логической схемы в Multisim
Доброго времени суток! Пытаюсь проверить свою КЛС в среде Multisim 12. Что-то не так с логическим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru