Proteus + attiny25. Не обновляется значение АЦП.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

Имеется проект на attiny25 (работает).
Вырезка из кода:

Код: Выделить всё

void main(void)
{
  uint16_t adc;
  ...
  ADMUX = (1<<MUX1) | (1<<MUX0); // PB3
  DIDR0 = (1<<ADC3D);
  ADCSRA = (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | // enable, start, auto trigger
           (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // clk/128
  ...
  while(1)
  {
    adc = ADC;

    if(adc < 823) 
    {
       ...
    }
  }
}
Проблема в Proteus 7.7 SP2 заключается в том, что реакция на изменение напряжения на PB3 происходит только при перезапуске симуляции (стоп, старт).
1212121.jpg
(37.54 КБ) 592 скачивания
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

интересно ваше утверждение - "есть проект - работает". если работает - почему вопросы?

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

ARV писал(а):интересно ваше утверждение - "есть проект - работает". если работает - почему вопросы?

вы запустили АЦП один раз и хотите непрерывно получать из него меняющиеся данные? не выйдет...
Работает в железе.
Почему не выйдет?
ADCSRA <- ADATE - autotrigger mode
ADTS2..0 = 0 - free running mode
см. datasheet
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18675
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ну, помнить наизусть все режимы - это я, конечно, не помню... а код выглядел странно. но вообще говоря, ни разу не встречал такого, чтобы чтение ADC делалось не взирая на состояние процесса измерения... обычно считывание делают только ПОСЛЕ завершения преобразования...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

А что такого страшного в чтении значения (предыдущего) до конца преобразования?
В данном случае мне без разницы.

Я давал проект на mega8: http://radiokot.ru/forum/viewtopic.php?f=20&t=37439 (в самом низу страницы), так он в протеусе нормально работает в free running mode.
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Сообщение Roman Venom »

a_skr
так он в протеусе нормально работает в free running mode.
В протеусе часто работает то что в реале не работает/работает не так. АЦП тут лидирует:)
автор имеет в виду режим Auto Trigger Enable (ADATE)? Посмотрите регистр SFIOR.
Вложения
ADATE(ADFR).JPG
(94.84 КБ) 377 скачиваний
Успех - императив!
Реклама
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

Roman Venom писал(а):a_skr
так он в протеусе нормально работает в free running mode.
В протеусе часто работает то что в реале не работает/работает не так. АЦП тут лидирует:)
автор имеет в виду режим Auto Trigger Enable (ADATE)? Посмотрите регистр SFIOR.
http://radiokot.ru/forum/viewtopic.php?f=20&t=37439 - на практике не проверено. но в протеусе работает. делаю акцент на FREE RUNNING MODE (режим непрерывного преобразования).

начало этой темы - в железе работает, в протеусе - нет. вот почему тему создал.

ADATE - я так понял, нужно устанавливать (повторюсь, в железе работает).

ps. SFIOR - такого нету в tiny25 :))
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Сообщение Roman Venom »

a_skr
ADATE - я так понял, нужно устанавливать (повторюсь, в железе работает).
По "тини" не могу подсказать... В мегах надо настраивать SFIOR, тогда ADATE работает адекватно.
повторюсь, в железе работает
Ну тогда остаётся только поздравить:). Если так интересен этот режим, то можно взять мегу и поиграться с ним в полной мере.
Успех - императив!
Мучитель микросхем
Аватара пользователя
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль

Сообщение nictrace »

вот и я напоролся.
все симуляторы упорно сбрасывают злосчастный бит.
А когда без прерываний делал, опросом флажка - все работало :(
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 492
Зарегистрирован: Вс янв 11, 2009 09:29:08
Откуда: Ярославль

Сообщение nictrace »

бред какой-то! :evil:
http://www.avrfreaks.net/index.php?name ... c&p=670732

корифеи пишут, мол, не пользуйте free-run в режиме прерываний!
Типа, проверяйте флажок и в случае завершения преобразования забирайте результат!
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева! :)
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»