Страница 4 из 4

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

Добавлено: Пт мар 14, 2014 22:49:01
urry
Плюсую за терпение

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

Добавлено: Пт мар 14, 2014 22:56:14
ploop
Однозначно!

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

Добавлено: Сб мар 15, 2014 15:01:10
ИС-пытатель
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:
Плюс я Вам поставлю за пытливость ума и доскональность изучения ДШ. )) Но вопрос еще остается открытым. ;)

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

Добавлено: Сб мар 15, 2014 15:10:03
ИС-пытатель
А вообще да.. Ваша конструкция имеет место быть.

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

Добавлено: Сб мар 15, 2014 15:44:42
Kavka
Т.е. заработало во всех случаях?

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

Добавлено: Сб мар 15, 2014 17:28:44
ИС-пытатель
Пока не проверял. В понедельник проверю. Я имел в виду, что для наложенных друг на друга прерываний эта конструкция актуальна. Но я "двигал" время срабатывания таймера, когда проверял в прошлый раз. Для блокировки счетчика диапазон OCRA0 был примерно от 12 до 19. (точно не помню). В понедельник проверю и отпишусь. И даже если заработает, все равно не очень понятно, причем здесь стек?... +блок счетчика в мейне Mega168...

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

Добавлено: Сб мар 15, 2014 22:17:12
Kavka
ИС-пытатель писал(а):В понедельник проверю.
Я думаю, что выражу мнение всех, кто следит за этой темой - подождём результатов проверки :)

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

Добавлено: Пн мар 17, 2014 08:29:45
ИС-пытатель
Нужно переименовать тему из "Баг контроллера" в "Баг прямоты рук". :))) А я так надеялся, что они все-таки прямые... )))

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

P.S. А вообще все-таки странно, почему в 168-й блокировался счетчик в мейне.. И эти push/pop не дают мне покоя.. )

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

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

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

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

P.S. Буду считать Вас своим сенсеем! )))

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

Добавлено: Пн мар 17, 2014 11:50:53
Kavka
Занимался маленько. Имею представление.
Ковыряться вечно можно и в более мелких проектах не зная что искать. :)

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

Про сенсея - не стоит. Но благодарность принимается. :beer: