Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/45: Рейтинг темы: голосов - 45, средняя оценка - 4.80
OTPYMI
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
1

ATMega8: Виснет "Free Running Mode" (решено, просто туплю)

06.07.2010, 19:15. Просмотров 8132. Ответов 9
Метки нет (Все метки)

Настраиваю АЦП: опорное AVCC, выровнить по левому краю, канал ADC5
Код
OUTI ADMUX, (0b01<<REFS0) | (1<<ADLAR) | (0b0101<<MUX0)
Включаю непрерывное преобразование (Frii Running Mode):
Код
OUTI  ADCSRA,(1<<ADIM)|(1<<ADIE)|(1<<ADSC)|(1<<ADFR)|(3<<ADPS0)
Вектор прерывания естественно уже выставлен:
Код
.ORG   ADCCaddr      ; ADC Conversion Complete
RJMP ADC_Complete
Результат: где-то пол секунды все работает (сыпятся прерывания), а потом АЦП как будто "виснет". Сам контроллер работает, выполняет основной цикл и отзывается на кнопку. А вот АЦП не функционирует. Пробовал делать одно преобразование, и в обработчике прерывания запускать его снова - получается непрерывное. Но это уже обходной путь. Хотелось бы знать, в чем дело именно с Frii Running Mode.

Как думаете, в чем может быть загвоздка?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2010, 19:15
Ответы с готовыми решениями:

The system is running in low-graphics mode
Здравствуйте. Решил посмотреть, что такое Ubuntu, записал образ на диск, установил, установка...

Ubuntu Is Running In Low Graphics Mode
Установил Убунту на ноутбук. На следующий день подключил к нему кабельный интернет (настроил)....

The system is running in low-graphics mode
Доброброго времени суток Увожаемые форумчане, прошу помоши в решении моей проблемы: Дано:...

The system is running in low-graphics mode
Установил Винду 7 и Линукс Убунту в качестве 2 ОС на ноуте. Сначала всё идёт хорошо. Подключил...

[РЕШЕНО] Откровенно туплю с КР142ЕН12А.
Вот схемка. Знаю, не хватает конденсаторов, но я сейчас на макетке - думаю, это не критично. ...

9
miktofyt
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 156
06.07.2010, 19:21 2
Такое может быть если не вычитал до конца данные. Т.е.
прочел младший байт, а старший не успел до конца следующего
преобразования. В этом случае лочится доступ к регистру
данных со стороны АЦП. Ему писать некуда. :) Хотя наверное
могут быть и еще варианты.
0
OTPYMI
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
06.07.2010, 19:23 3
А что, данные обязательно надо считывать? я ADCH/ADCL вообще не трогаю... ну-ка, щас трону.

upd.: тронул, безрезультатно.
0
miktofyt
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 156
06.07.2010, 19:31 4
Неее. Только если ты вычитал не все данные. Если вообще
не трогал, то тупо пропадут. А вот если прочитал младший
байт, а старший не успел, то тогда могут быть траблы.
0
OTPYMI
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
06.07.2010, 19:35 5
Угу, об этом я читал, что при чтении ADCL происходит блокировка ADCH. В моём случае АЦП 8-битный, выравниваю его по левому краю и читаю сразу ADCH. Так что дело не в этом.

Не, серьёзно, что вообще может вдруг взять и остановить АЦП??
0
xroymom
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
06.07.2010, 19:42 6
А других прерываний, которые выше приоритетом и могут заглючить, нету?
0
miktofyt
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 156
06.07.2010, 19:42 7
Т.е. другие прерывания работают? Или ты кнопку в основном
цикле опрашиваешь?
0
OTPYMI
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
06.07.2010, 19:51 8
Только два прерывания, АЦП и кнопка на INT1.
Прерывание INT1 работает корректно, не глючит, т.к. его обработчик инкрементирует число, за которым я слежу. И инкрементируется оно только при нажатии на кнопку.
Основная программа только дёргает ножками, моргая светодиодами. И вообще, тут всё на уровне Hello World
0
xroymom
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
06.07.2010, 19:57 9
а ты покажи весь код, может кто что и углядит
0
OTPYMI
0 / 0 / 0
Регистрация: 07.04.2010
Сообщений: 880
06.07.2010, 20:16 10
Перед показом кода дай, думаю, почищу его от всякой тупизны, оставлю только то что надо. Почистил. Заработало :) Оказывается где-то там была по ошибке незакомментированная команда от первых проб с АЦП, которая и мешала.
0
06.07.2010, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2010, 20:16

Ошибка the system is running in low-graphics mode
Обновил убуету 14.04 , и при загрузке вылезает окно the system is running in low-graphics mode,...

Ошибка в цикле for(скорее туплю просто)
Вот часть кода лабораторной работы, в которой создаётся и вводится треугольная матрица: #include...

Текстовые файлы.Вроде бы очень просто.Но я почему то туплю
Посчитать в файле с исходным текстом модуля(.vb) кол-во переменных типа массив.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru