Внимание!!! Баг контроллера!

Обсуждаем контроллеры компании Atmel.
Ответить
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

Плюсую за терпение
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Однозначно!
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Kavka писал(а): Bit 4 – ADIF: ADC Interrupt Flag
This bit is set when an ADC conversion completes and the Data Registers are updated. The
ADC Conversion Complete Interrupt is executed if the ADIE bit and the I-bit in SREG are set.
ADIF is cleared by hardware when executing the corresponding interrupt handling vector. Alter-
natively, ADIF is cleared by writing a logical one to the flag. Beware that if doing a Read-Modify-
Write on ADCSRA, a pending interrupt can be disabled.
This also applies if the SBI and CBI
instructions are used.
Это может объяснить то, что не работает счетчик внутри обработчика АЦП. (хотя 1 раз он срабатывает)

А как объяснить то, что в 168-ой не работает счетчик в основной программе? ))

И как объяснить влияние на появление бага команд обращения к стеку? ))) Без них-то все работает. ))

К тому же, если сдвинуть момент срабатывания таймера в небольших пределах (чтобы прырывания не накладывались, но по-прежнему не работало) - то это описание не подойдет. ))

Вот и развеян ещё один баг контроллера. :)))

PS: Ставим плюсы, кому не жалко. :tea:
Плюс я Вам поставлю за пытливость ума и доскональность изучения ДШ. )) Но вопрос еще остается открытым. ;)
Последний раз редактировалось ИС-пытатель Сб мар 15, 2014 15:29:01, всего редактировалось 1 раз.
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

А вообще да.. Ваша конструкция имеет место быть.
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1811
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Т.е. заработало во всех случаях?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Пока не проверял. В понедельник проверю. Я имел в виду, что для наложенных друг на друга прерываний эта конструкция актуальна. Но я "двигал" время срабатывания таймера, когда проверял в прошлый раз. Для блокировки счетчика диапазон OCRA0 был примерно от 12 до 19. (точно не помню). В понедельник проверю и отпишусь. И даже если заработает, все равно не очень понятно, причем здесь стек?... +блок счетчика в мейне Mega168...
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1811
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

ИС-пытатель писал(а):В понедельник проверю.
Я думаю, что выражу мнение всех, кто следит за этой темой - подождём результатов проверки :)
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Нужно переименовать тему из "Баг контроллера" в "Баг прямоты рук". :))) А я так надеялся, что они все-таки прямые... )))

Да, все работает. И там, и там. ))) Действительно, мой косяк! Вам, Kavka, ОГРОМНОЕ СПАСИБО за то, что нашли мою ошибку. (Не ожидал, что такое возможно) Буду теперь еще умнее. :)))

P.S. А вообще все-таки странно, почему в 168-й блокировался счетчик в мейне.. И эти push/pop не дают мне покоя.. )
Мудрый кот
Аватара пользователя
Сообщения: 1811
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

ИС-пытатель писал(а):Нужно переименовать тему из "Баг контроллера" в "Баг прямоты рук". :))) А я так надеялся, что они все-таки прямые... )))
В таких случаях учиться (получает новые знания) не только тот кто просит помощи, но и тот кто помогает - каждый получает свой опыт.
Ну, и, конечно, те кто читает форум и мотает на ус. :)
ИС-пытатель писал(а):P.S. А вообще все-таки странно, почему в 168-й блокировался счетчик в мейне.. И эти push/pop не дают мне покоя.. )
Вы просто не представляете какие вообще глюки возможны при ошибках типа "race condition/data race". Понять логику происходящего бывает практически невозможно. Вы, видать, просто ещё не сталкивались с подобными вещами. При программировании многопоточных программ учёт таких ситуаций это очень важный аспект. Причём лучше делать это заранее, а то потом искать замаешься. Вы в одном МК запутались, а представьте сложный параллельный алгоритм работающий, скажем, в нескольких десятках потоков на 32 ядерном серваке - и что там где глючит... :)
ИС-пытатель писал(а):Да, все работает. И там, и там. ))) Действительно, мой косяк! Вам, Kavka, ОГРОМНОЕ СПАСИБО за то, что нашли мою ошибку. (Не ожидал, что такое возможно) Буду теперь еще умнее. :)))
Было интересно.
Рад, что помог!
Удачи!
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Kavka писал(а):
а представьте сложный параллельный алгоритм работающий, скажем, в нескольких десятках потоков на 32 ядерном серваке - и что там где глючит... :)
А Вы и таким занимались? )) Там можно вечность ковыряться. )
Kavka писал(а): При программировании многопоточных программ учёт таких ситуаций это очень важный аспект
При программировании многопоточных систем Вы заранее знаете, что идут параллельные процессы и предусматриваете это в коде. А в моем случае я просто этого не ожидал. Понадеялся на "авось". Дурная привычка просчитывать вплоть до такта когда пишешь на ассемблере и особо "не парится" об этом, когда пишешь на СИ.

P.S. Буду считать Вас своим сенсеем! )))
Мудрый кот
Аватара пользователя
Сообщения: 1811
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Занимался маленько. Имею представление.
Ковыряться вечно можно и в более мелких проектах не зная что искать. :)

Как я уже писал ранее, в данном случае, объектами, так сказать, внимания являются основная программа, прерывания и работа периферии. Достаточно, того чтобы рассматривать их как несколько параллельных взаимодействующих процессов различной природы (программных и/или аппаратных). Вот вам и почва для ошибок.

Про сенсея - не стоит. Но благодарность принимается. :beer:
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Ответить

Вернуться в «AVR»