Например TDA7294

Форум РадиоКот • Просмотр темы - "убийственный код" или танцы с бубном возле ATtiny2313
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт июл 29, 2025 04:07:14

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 48 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пн фев 11, 2013 13:47:56 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Для ibiza11
1. регистр mrak находится в области, для которой команды работы с непосредственными данными не допускаются (см. файл defname_flasher8u.txt )
2. подпрограмма сканера дисплея (он же программный ШИМ) работает автономно в фоновом режиме.
Для загрузки начальных данных, не нарушая общего алгоритма и используется такой вариант - но только на этапе инициализации начального состояния системы. Когда работа просто по переходу достаточно ret, но в рабочем режиме это точка выхода по прерыванию поэтому и стоит reti. Разрешение на запуск тамера дается только после всех процедур загрузки начальных значений данных/режимов работы, а затем уже разрешение прерываний по таймеру, глобальных, сброс предделителя (можно и без него) и запуск таймера.
Флаг OCF0A при начальном запуске равен 0 (см. даташит 8246B–AVR–09/11 стр 87).
:beer:
Кстати мняв и есть автор. :tea:

Engineer_Keen
Чего касательно задержек... всяких... тема отдельных тестов.
В том числе и работа с общими фрагментами только одного (не всех) каналов при остальных с линейным участком (без DR_CALL (оно же com_call kanalN,метка)).
Если подтвердится - харакири для тиньки... Но это опять по свободке. 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 12:18:58 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
С прискорбием соощаю о всеж-таки аппаратной проблеме у ATtiny2313...
Возможно это какой - то вариант сбоя антихакерской защиты (чтение программного кода программой пользователя).
Но для моего варианта применения такой "фокус" означает непригодность данного МК для простейшей "мигалки"... :cry:
Суть эффекта - при очередном обращении к памяти программ как к источнику данных в ячейки ОЗУ (куда эти данные должны помещаться) записывается блокирующий код 0хFF как-бы еще и с каким-то зарядом (равноценно если бы это было не ОЗУ а eeprom). Через час-полтора работы этот заряд рассасывается и канал начинает молотить свою программу, естесственно с определенной задержкой.
Только вот по каким принципам формируется эта пакость неизвестно - ведь у каждого МК свои каналы (ячейки ОЗУ) блокируются. Добраться до сути вероятно помогла бы отладка на живом кристалле с помощью внутрисхемной отладки - но такими возможностями не располагаю, да и надо-ли копать, все равно аппаратный дефект выполнения от его понимания не устранить.
Прийдется переводить программу на mcs51! 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 12:31:57 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Не верю...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 13:02:02 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Для неверующих - в начале темы схемка и архив с проектом - можно проверить 8)
Только проект настроен для размещения на диске D.
Для пакости даже полностью разделял используемые регистры.
Кстати, насчет заряда в ... области - через час-полтора с момента включения "блокированные" каналы оживают и начинают спокойненько работать (естественно с соответствующим смещением по времени).
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 13:03:02 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
уть эффекта - при очередном обращении к памяти программ как к источнику данных в ячейки ОЗУ (куда эти данные должны помещаться) записывается блокирующий код 0хFF как-бы еще и с каким-то зарядом (равноценно если бы это было не ОЗУ а eeprom). Через час-полтора работы этот заряд рассасывается и канал начинает молотить свою программу, естесственно с определенной задержкой.

Бред. Напишите проверочную программу (максимально простую) для демонстрации эффекта. Убедитесь, что это не так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 14:47:10 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Бред-не бред, а ФАКт проверенный макетом... :facepalm:
Выполнение безусловного прыжка (выполняется всегда без замечаний) отличается от проблемного только записью адреса возврата в собственную область ОЗУ т.е. что там, что там прыжок по ПЗУ со считыванием новой порции кодов... Да и не все каналы ведут себя одинаково, а только "избранные", причем от кристалла к кристаллу эта "избранность" меняется.
Особо спорить не буду - просто отмечаю событие, кому захочется поглубже выяснить - не вопрос, но использовать LPM в сложных переходах буду с большой подозрительностью. Всеж-таки в моей задаче не простое чтение данных, а частоповторяющийся доступ к разным участкам ПЗУ в произвольном порядке.
:beer:


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 14:54:50 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
Особо спорить не буду

Лучше не надо. Я просто уверен, что у вас происходит срыв стека, или что-то в этом роде. Потому, что повторить это на тестовой программе вы не сможете. Так что разбирайте код.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 16:07:01 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Было б хорошо, если б эта ошибка в симуляторе также как и в макете вылазила - однако такового не наблюдается - все работает "по правилам" - и стек на своем месте и данные откуда надо берутся и куда им указанно попадают и перекрытия регистров нету - а единственное прерывание по совпадению даже в симуляторе правильно выполняется.
Дело как раз в том, что в реальном макете такого благополучия не наблюдается, а ведь симулятор простые команды выполняет все-же правильно, да и содержимое регистрового файла, ОЗУ, выделенной области стека и РСФ вполне однозначно видны в соответствующих окнах.
В том то и заморочка - теоретически и на прогоне в IDE эффекта нет, а на практике - вполне ощутимо наблюдается. Да и закорачивание обесточенной ИС с логической точки зрения бессмысленно, однако дает ощутимый результат на практике...
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 16:24:19 
Родился

Зарегистрирован: Ср ноя 24, 2010 12:44:54
Сообщений: 10
Откуда: Одесса
Рейтинг сообщения: 0
Обычная ошибка использования озу и стека.
Симулятор не показывает ошибок, т.к не отслеживает содержимое стека.
У 2313 всего 128 ячеек. при активном использовании подпрограмм и прерываний напалзание гарантировано.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 16:25:05 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
BOB51 писал(а):
В том то и заморочка - теоретически и на прогоне в IDE эффекта нет, а на практике - вполне ощутимо наблюдается.

Да ну полно уже...
А то вы не знаете об ограичениях симуляторов...
Смахивает на... "В Протэзе робит, а в железе - не!"...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 16:44:44 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
ur5fia
"Симулятор не показывает ошибок, т.к не отслеживает содержимое стека."
- вот это абсолютный бред - AVRstudio4.19 в окошке memory -> data прекрасно показывает все, что касается текущего содержимого ОЗУ. В том числе и содержимое стека (касается как avr simulator так и avr simulator2).

HHIMERA
Об ограничениях симулятора относительно модулей периферии мне прекрасно известно, но ни разу не попадалось информации об ограничении на правильность выполнения команд симулятором
(иначе нафига оно тогда нужно). Кроме того симулятор -дебаггер при трассировке - это не шпрот, проверить верность выполнения ассемблерной команды достаточно просто (если известно чего ищеш).
А "точки срыва" мне вполне известны - но... выполняются правильно с завидной стабильностью.
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 17:14:22 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13490
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
BOB51, да напишите вы уже цикл из 10 строк, пишущий/читающий по-вашему проблемные области. Чтобы мы могли воспроизвести. И я либо ткну носом в ошибку, либо достану свой пыльный программатор и зашью им 2313.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 19:58:20 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Вот еще раз :
Вложение:
nevers_rep.rar [26.5 KiB]
Скачиваний: 158

это архивчик с проектом AVR studio базовое размещение в корневом каталоге диска D (просто там у меня все папки проектов - если интересно переделаю под размещение на C ).
проблемный участок - выполнение модуля перехода на "общий фрагмент" по тексту
" dr_call:2" (строка 186) в разделе (файле) preparing8ut.txt, возможно какой-то сбой после его выполнения на участке
repin:
-----
-----
ret (строки 121-139 того же файла) выражающийся в заполнении ячеек tmp_lev_N и cnt_frame_N какого-либо из каналов ( N=0-7).
В последующем обработчик
komsel:
----(строки 100-109 того же файла)
не в состоянии длительное время изменить содержимое в соответствующем cnt_frame_ (это единственное с моей точки зрения основание для зависания на время более 12секунд, кроме еще менее вероятного декремента из ранее считанного из cnt_frame_ значения 0)
Честно говоря меня сей казус таки достал... :kill: Оно просто из принципа - неужто где-то чегось упустил... так перед написанием темы достаточно много тестов провел, в том числе и с вариациями схемотехники (и кварц и сброс и дросселек в цепи питания)... :solder:
По отдельности каждый из фрагментов работает нормально, проблемка вылазит, когда все 8 каналов одновременно хотят на "общий фрагмент" прыгнуть... и прыгают... только вот какой-то (или несколько) "зависают" на часик-полтора. Потому здесь 10 строчками не обойтись - требуется полная нагрузка и обязательно с вариантом общего фрагмента с сохранением адреса возврата ("линейный" прыжок такого действа не производит) - это в тестовом образце программы рисунка (progpak_tst1.txt).
Надо на время от этого дела отключиться - мож вылежится, чего и прояснится... хоша, если я прав... там уже ничего не поможет... жаль... :dont_know:
Просто похоже легче на 51-ю перевести будет - там работа с данными в области памяти программ на такой режим более подготовлена. :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 20:32:07 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Посмотрел в тексте и симуляторе - где инициализация стека - не нашел - извиняюсь уже нашел
И где такой стиль написания программ применяется никогда не видел - txt файлы вместо asm или inc.
Равнялся в ассемблере для AVR на Чена - типа как тут: http://elm-chan.org/works/rsm/report_e.html
На подобный баг tiny2313 не нарывался - не хвастаюсь, тысячи устройств на сабже работают годами не выключаясь, как и подобные на tiny13.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 21:06:23 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
oleg110592

Инициализация указателя стека в файле hard_set8ut.txt , хотя согласно даташиту на ATtiny2313 этого и не требуется - по умолчанию после сброса там автоматически установлен конец ОЗУ.
А вот касательно стека возврата из "общих фрагментов" - то уже в другом месте (preparing8ut.txt).

Касательно стиля написания - мой собственный вариант на основе обработки заголовочных файлов microchip и рекомендаций В.Тимофеева ( http://pic24.ru/doku.php/articles/list ) + особенности работы с ассемблером c51asm для mcs51 от atmel - работаю со всеми тремя семействами pic-avr-mcs51 вот и слепил, чего получше (с моей "колокольни") 8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 15, 2013 21:46:10 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
По возрасту (50) или по ленивости не пишу уже на ассемблере - пользую Си компиляторы (там своих багов хватает), для тини и мега48 еще и AB применяю вместо ассемблера. Рекомендую для вылавливания бага в вашей программе задействовать USART для вывода отладочной и другой информации - мне очень помогает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт фев 22, 2013 22:54:08 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1472
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15110
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Век живи, век учись - а дурнем все равно будеш... :cry:
Перекопал я программу под mcs51 (конкретно под AT89C2051), естесственно с учетом ее особенностей упора на акумулятор... пришлось несколько переделать анализатор задач... :roll:
Работает... Быстродействие конечно - не разгонишся, зато все прекрасно выполняется.
Затем провел обратную адаптацию под тиньку и... все прекрасно заработало! :write:
Для симулятора что первый вариант, что последний - абсолютно одинаковы, а вот "железо" все-же так не считает... :dont_know: Вывод - не усложнять код без наличия предварительных макетных испытаний (кто знает, на какие нюансы напороться можно). :cry:
Для любителей закопаться архивчики проектов.
:sleep:


Вложения:
Комментарий к файлу: ATtiny2313
nv8_avr.rar [298.75 KiB]
Скачиваний: 150
Комментарий к файлу: AT89C2051
nv8_51.rar [20.65 KiB]
Скачиваний: 256
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Вт мар 05, 2013 08:58:59 
Открыл глаза
Аватар пользователя

Карма: 1
Рейтинг сообщений: 2
Зарегистрирован: Чт дек 22, 2011 22:22:46
Сообщений: 47
Откуда: Тольятти
Рейтинг сообщения: 0
На схему вам правильно указали - нельзя так кнопку ставить, после дросселя. Я в свое время пожег много памяти РУ5, когда проверял, как срабатывает защита блока питания от КЗ. Если надо именно коротить питание - ставьте тиристор. Ключ+дроссель+дребезг кнопки = повышающий преобразователь, после чего КМОП может склеить ласты, но если выживет, могут начаться чудеса.

Ваш код я не смотрел и не буду, своих тараканов в голове хватает. Такие глюки случались и в моей практике. Были и поражения. Поэтому сильно умничать и хвастаться мне нечем. Ваш случай очень похож на использование ОЗУ без инициализации, т.к. состояние зависит от обесточивания процессора. Статическое ОЗУ после выключения питания (а конкретнее, после снижения напряжения ниже 1.5 вольт) сохраняет состояние примерно 10-20 секунд.

У меня был случай потяжелее, но я вовремя понял, что потеряю много времени и успех не гарантирован, и пошел в обход с предыдущей точки. Была проблема в том, что один регистр почему-то не сохранял состояние при уходе в прерывание по таймеру. Потерял пол-дня, разозлился, наставил контрольных точек с выводом на дисплей, и вижу - до прерывания одно значение, а сразу в прерывании - другое. Вот тогда мне взгрустнулось :)

PS. Позволил себе потерять 10 минут, чтобы просмотреть ваш код. Эх, за что же вы так себя-то не любите? Такой код надо показывать заказчику или начальству, чтобы уважали, платили, и не задавали лишних вопросов. А для себя, любимого, надо писать так, чтобы через год можно было быстро понять структуру, выдрать полезности, поправить и т.п.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт апр 18, 2014 18:15:39 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
прочитал, ничего не понял :) в глюк исполнения ядром МК каких-то команд не верю... но вот какой вопрос снова возник у меня (ранее я над этим думал сам, но тестировать было лень) - кто-нибудь знает ответ на конкретный вопрос: существует ли в AVR разница между reti и sei; ret ? соответственно, обратный вопрос: допустимо ли использовать reti вместо ret в обычных подпрограммах, если состояние флага i безразлично или как раз должно устанавливаться?

что-то мне сильно-сильно кажется, что использование "хакерских" приемов с reti тогда, когда не надо, выбивает микропрограммный автомат МК у топикстартера - оттуда и все его "загадочные" проблемы.

почему я об этом подумал? например, потому, что в доках на семейство MCS51 написано, что команда возврата из прерывания не аналогична команде возврата из подпрограммы с установкой разрешения прерываний, т.к. помимо установки флага она еще "приводит в чувство" блк контроллера прерываний. правда, есть одно но: у MCS51 система прерываний с приоритетами, а у AVR - без них, поэтому, возможно, "приведение в чувтсво" и не потребуется - но кто уверен в этом на 100%? я - нет.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: "убийственный код" или танцы с бубном возле ATtiny2313
СообщениеДобавлено: Пт апр 18, 2014 18:19:50 
Вымогатель припоя
Аватар пользователя

Карма: -2
Рейтинг сообщений: 105
Зарегистрирован: Ср июн 19, 2013 08:10:48
Сообщений: 577
Откуда: Москва, СПб, Липецк, Рязань
Рейтинг сообщения: 0
Но везде в описании reti на AVR говорится, что она аналогична sei; ret; За исключением, конечно того, что между этими двумя командами не может влезть прерывание. Скорее всего, они как-то одновременно делаются..


Последний раз редактировалось ИС-пытатель Пт апр 18, 2014 18:23:02, всего редактировалось 2 раз(а).

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 48 ]    , 2,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y