мега16 в DIP40 и TQFP44 исполняют код по разному !?
мега16 в DIP40 и TQFP44 исполняют код по разному !?
Проблема: Есть код на СИ, написан в CVAVR. В протеусе работает адекватно, в AVR Studio работает адекватно, в макетке с мега16 в DIP40 работает адекватно, в целевом устройстве с мега16 в TQFP44 небольшая часть кода работает не правильно. Железо целевого устройства и макетки сделано аналогично, фьюзы и прошивка используются одни. Менял мегу16 в TQFP44 из последних партий (с широким диапазоном питания) на более старую - результат то-же. Отключал неиспользуемые части схемы, промывал плату - не помогает, в самом простом варианте оставлял только ЖКИ, на котором и видно как работает программа - бесполезно. Переписывал не работающую часть кода по другому варианту - бесполезно. Вопрос к знатокам: встречаются отличия работы МЕГИ 16 в различных корпусах, как они могут проявляться? Подробности пока не привожу, в первую очередь интересует в принципе наличие такой проблемы.
- Реклама
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18672
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
в принципе - это по-разному корпусированные одни и те же кристаллы.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
с даташитом я ознакомился. поэтому и не понимаю в чем заморочка...
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
В документации описаны отличия, касающиеся АЦП. Не с ним ли связана проблема?
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
АЦП будет задействовано в дальнейшем, но сейчас на этапе отладки в коде он не задействован, отключен, и фукнции под него еще не накодил, но уже по крайней мере, с Ваших слов я понимаю, что некоторые отличия есть, кроме коммутируемого тока портов. посмотрю внимательнее даташит, может что то пропустил.
- Реклама
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Может JTAG виноват? На порту С.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Goldsmith
это какие отличия? может вы с 8 мегой путаете?KavkaВ документации описаны отличия, касающиеся АЦП. Не с ним ли связана проблема?
Ну раз человек на дипе не забывает выключать JTAG, то и на TQFP наверное тоже.Может JTAG виноват? На порту С.
KIT
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Black писал(а):уже по крайней мере, с Ваших слов я понимаю, что некоторые отличия есть, кроме коммутируемого тока портов. посмотрю внимательнее даташит, может что то пропустил.
Не, я числа хорошо различаю. Особенно 8 и 16.O-LED писал(а): это какие отличия? может вы с 8 мегой путаете?
Качаем даташит: http://www.atmel.com/dyn/resources/prod ... oc2466.pdf
На первой же странице находим:
Далее, на странице 4:– 8-channel, 10-bit ADC
8 Single-ended Channels
7 Differential Channels in TQFP Package Only
Так что не все корпуса одинаково полезны. Хотя в данном случае, наверное, причина не в этом.10-bit ADC with optional differential input stage with programmable gain (TQFP package only)
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Фьюзы одинаковые, JTAG отключен. Соберу еще одно устройство - благо всё для этого есть, но сразу по ходу при минимуме обвязки буду проверять работу кода, и МК возьму из другой партии. Результаты доложу.
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Суть проблемы: при опросе матричной клавиатуры 4х8 три столбца опрашивались без проблем, четвертый никак, если в коде делать переназначение пинов, то проблема переходила на последний столбец в коде с уже новым назначенным пином, т.е. напрашивался вывод, что обвязка в порядке, выходы МК в порядке (после переназначения пинов в коде кнопки, которые не работали, начинали работать, и наоборот), при этом в макетке работало ВСЁ! Впечатление, что после сдвигов (использовал long int) после опроса столбцов происходила потеря данных в последнем опросе, в коде необходимые задержки для смены уровней сигналов были предусмотрены.... Потом, конечно, начал изменять код, пробовал различные варианты, и начались глюки - в некоторых случаях МК при начале опроса клавы вылетал в неконтролируемое (мной) состояние (на ЖКИ пропадала вся информация), а в макетке тот же код работал! в одном варианте кода я оставил только ЖКИ в обвязке, клаву отключил и имитировал её прямо на ножках МК, глюки были непонятные, а в макетке их не было... И всё таки проблема оказалась в обвязке - в клавиатуре! Последний (один из вариантов после переделки) опробованный код работал на грани стабильности (как я потом понял), на макетке из за практически полного отсутствия проводников на пинах это не проявлялось, а в девайсе оставались печатные дорожки до места подключение клавиатуры, это сбило с толку еще больше. ПРОБЛЕМА ЗАКЛЮЧАЛАСЬ в очень большой ёмкости мотажа клавиатуры (многослойная плата с контактами под резиновые кнопки), и моих мер для смены уровней было не достаточно, путем проб увеличил задержки (нопы) в коде по совокупности примерно в 15!!! раз. Опыт в программировании у меня очень не большой, это второй девайс в моей практике, поэтому описанные глюки я не смог адекватно оценить с ходу, но, блин, и глюки то с подвохом, хотя на то они и глюки....
Вопрос исчерпан, тему можно закрыть, хотя готов послушать комментарии опытных товарисчей ...
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Это что-то уж очень неправильно в программе, если непредвиденные сочетания сигналов на входах загоняют контроллер в ступор.
Тогда самое время подумать насчет его приобретения. Рекомендую почитать литературу по тестированию программного обеспечения, сбережет в итоге очень много рабочего времени. Непротестированному коду доверять нельзя.Black писал(а):Опыт в программировании у меня очень не большой
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
-
Foks
- Поставщик валерьянки для Кота
- Сообщения: 2108
- Зарегистрирован: Пт авг 29, 2008 16:28:19
- Откуда: Киев
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
При матричном сканировании клавиатуры задержку nop'ами не делают. В прерывании таймера, по которому производится сканирование, сперва считывают состояние предыдущей строки (столбца), затем выбирают новый, и только по следующему срабатыванию прерывания он будет прочитан.
Лепить десятки-сотни NOP'ов в прерывание неправильно, т.к. Вы при этом зря занимаете процессорное время. (так бы во время задержки мог выполняться другой код).
Лепить десятки-сотни NOP'ов в прерывание неправильно, т.к. Вы при этом зря занимаете процессорное время. (так бы во время задержки мог выполняться другой код).
Giggity giggity goo!
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Конечно согласен, что код нужно проверять, я это делаю, и как результат - выявил вышеописанную проблему, она же у меня проявилась не в законченном девайсе... Нопы применил только для выявления проблемы, в рабочий код включу другой алгоритм, вариант с опросом столбцов отдельно по прерываниям приму к сведению, спасибо за подсказку. Нопы в моем случае не только процессорное время отжирают (хотя в этом случае это не критично, и для пользователя абсолютно не заметно, однако в целях правильного программирования этого нужно избегать), но и память МК, после компиляции размер кода увеличился на 0,5% по мнению CVAVR. Кстати, в коде я ухожу на прерывание с максим. предделителем, для антидребезга клаву сканирую два раза, во втором сканировании делаю сравнение с первым и получаю скан код, с моим кварцем скан код с учетом двойного сканирования обновляется примерно раз за 48 мсек. Имею два ухода в прерывание для обновы скан кода, а если уходить после каждого столбца, то как минимум четыре прерывания нужны, да еще антидребезг нужно учесть либо в доп. прерываниях, либо выставить приемлемый интервал таймера для четырех прерываний... Пока не успел посчитать, как оба случая влияют на процессорное время с учетом всех необходимых мер, может у кого уже есть готовый ответ?
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Проверка и тестирование - совершенно разные вещи.Black писал(а):Конечно согласен, что код нужно проверять, я это делаю
Если пишете на C, есть возможность использовать одну из сред модульного тестирования. Для ассемблера пока с этим делом пока хуже, среды тестирования находятся еще в разработке.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Goldsmith, среда модульного тестирования для МК существует? Или нужно использовать программы, предназначенные для ПК и адаптировать их под задачи МК? Тема модульного тестирования меня заинтересовала, спасибо за подсказку.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18672
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
неоднократное сканирование и есть защита от дребезга, поэтому в процедуре сканирования не нужно никаких дополнительных защит от дребезга контактов. сделали первый проход, обнаружили замыкание кнопки К1, через некоторое время сделали второе сканирование и сравнили результат с предыдущим - если совпали, значит К1 на самом деле нажата, если не совпали - это был дребезг, результат в игнор.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Goldsmith
- Опытный кот
- Сообщения: 736
- Зарегистрирован: Пн янв 10, 2011 03:06:36
- Откуда: Ростов-на-Дону
- Контактная информация:
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Специально заточенных под МК вроде бы нет, но есть вполне пригодные для этого. Например, среда Unity, которую я сейчас использую, достаточно компактна, чтобы модульные тесты при необходимости умещались в памяти МК. Есть еще одна, которую надо бы попробовать, но она ориентирована на C++, а с ним возможны проблемы на младших моделях МК.Black писал(а):Goldsmith, среда модульного тестирования для МК существует? Или нужно использовать программы, предназначенные для ПК и адаптировать их под задачи МК?
Я недавно перевел пару статей о применении современных технологий программирования для проектирования встроенного программного обеспечения. Можете для начала посмотреть их, они выложены здесь: http://club.shelek.ru/viewart.php?id=335 и http://club.shelek.ru/viewart.php?id=337 . В обозримом будущем планирую написать о собственном опыте в этой области.
Это действительно весьма стоящая тема, хотя ей уделяют очень мало внимания. Видимо, слишком мало программистов умеют держать в руках паяльник и слишком мало электронщиков стремятся научиться программированию на профессиональном уровне. Получается, что firmware сейчас - практически ничья территория.Black писал(а):Тема модульного тестирования меня заинтересовала, спасибо за подсказку.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
Что то подобное было: была схема на МК --- работала, поменял МК на другой(тот же тип и рабочий) ----не пашет. Дооолго я возился и не мог понять в чем дело все одинаково, даже корпуса. Причина была в разных ревизиях(партиях), а заглянуть в эрраташит как то не додумался. Может у вас подобный случай?
Re: мега16 в DIP40 и TQFP44 исполняют код по разному !?
могут быть отличие, если новый чип выполнен с индекцом "А".
Это версия, у которой исправлены мелкие недочеты.
Это версия, у которой исправлены мелкие недочеты.
[url=http:///]
[/url]


