Gryphus
Участник-
Постов
45 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о Gryphus
-
Звание
Участник
- День рождения 30.09.1966
Контакты
-
Сайт
Array
-
В DIP-корпусе всего одно питание VCC. Наверное остальные две точки подачи питания уже разведены в корпусе?
-
Лучше бы это сделать прямо на плате резистором на постоянной основе, а не только на время прошивки. Не забывайте, что при подаче питания на МК до программной установки портов все выходы находятся в выключенном состоянии и подключенные к ним входы других компонентов в это время просто висят в воздухе, а это не фэн-шуй. Разве что, в самом радиомодуле уже есть подтяжка. А может вы перепутали вход с выходом последовательных данных у радиомодуля? По приведённой вами схеме это понять нельзя, поскольку у радиомодуля отсутствует нумерация выводов, а по рисунку платы тоже понять ничего нельзя. Ещё такой момент: по даташиту модуль находится в состоянии POWER DOWN, если на соответствующем входе присутствует 1. Нужно подать 0 на RESET контроллера, тем самым отключив его выходы, и посмотреть напряжения на выводах SPI модуля при SDN=1 и при SDN=0. По идее, если при этом nSEL=1, то выход SDO модуля должен быть отключен, т.е. висеть в воздухе, но всякое может быть.
-
По идее, сигнал выборки радиомодуля (цепь SS на схеме) должен иметь активное состояние в нуле (хотя, по вашей схеме это явно не видно), тогда, если на этом входе будет единица, то выход последовательных данных радиомодуля должен находиться в третьем (High-Z) состоянии и не должен ни на что влиять при прошивке. Говорите, он у вас подтянут к плюсу? Может, радиомодуль неисправен и и садит линии на землю? А последовательные резисторы в данном случае могут ухудшить фронты и привести к трудно обнаруживаемым ошибкам при передаче данных. Ещё вопрос: зачем у вас SS выведен на разъём программирования? Для прошивки МК он не нужен. МК может не отзываться по причине установки фьюза, который отвечает за тактирование кристалла, на внешний источник.
-
Всё верно. Я перепутал с 24-ой серией, где эта цифра на порядок больше, но тоже мало на самом деле. Ещё есть вариант потавить отдельную ПЗУшку от Ramtron для хранения адреса. У них неограниченное число перезаписей
-
Ну там ресурс же не 100000 стираний... :bb-offtopic: Сейчас хотел посмотреть у Атмела и обнаружил, что в их номенклатуре больше нет позиции DataFlash® Я что-то пропустил? Как дальше жить?! :crying:
-
2. Я в таких схемах делал опторазвязку на PC817 или подобных оптопарах. Тем более, насколько понимаю, быстродействия там не надо.
-
Точно! У меня так и было. Мучился, пока не догадался посмотреть генерируемый код. Переписал функции для собаки на ассемблере и всё пашет согласно дэйташиту.
-
ATmega164A - есть аппаратный TWI и 32 линии ввода-вывода. Легко увеличить память, поставив 324, 644 или 1284
-
Согласен, такой подход выгоден для удалённых и/или недоступных устройств (марсоход :)) в таких случаях на доп. флэш-памяти нельзя экономить Ну, не совсем. Не нужно вскрывать корпус, пользователи, как правило, ничего не знают ни о каких программаторах. Максимум, что они могут - это запустить утилитку на компе, который и так всегда подсоединён к устройству. Если файл зашифрован, то сильно снижается вероятность кражи прошивки. Если прошивка не удалась, в моём варианте, означает, что либо слетел бутлодер, либо само железо, но тут уже "по телефону" ничем не помочь.
-
Это где же столько оперативки взять, чтоб всю флэш туда вместить? Я, например, делаю так. hex-файл при помощи специально разработанной утилиты для PC компилируется в загрузочный файл с разбивкой на страницы с шифрованием (если требуется), туда добавляем информацию о принадлежности к устройству, CRC всей флэши и т.д. Затем, опять же при помощи спец утилиты, которая связывается с бутлодером контроллера и делает все необходимые проверки соответствия, содержимое флэши передаётся в контроллер постранично. Каждая страница идёт со своей собственной CRC16, проверяется бутлодером, им же расшифровывается и пишется во флэш. Другими словами, hex разбирается на большом компе, а пользователю отправляем только файл образа прошивки и маленькую утилитку.
-
Если флэш-память контроллера больше 64К, то в hex-файле будут включены специальные записи адреса сегмента памяти. Под сегментом здесь понимается кусок памяти в 64КБ. Это сделано потому, что в стандартных записях хекса адрес только двухбайтный. А порядок следования записей хекса есть следствие работы линкера и вполне может быть так, что записи не всегда могут идти подряд. Поэтому, лучше следовать букве стандарта, если хотите, чтоб бутлодер понимал любые файлы, сгенерированные любым линковщиком
-
Только сейчас решил этот вопрос -J2,crc=8005,m,,,,#0xFFFF=(CODE)0-(_..X_FLASH_END-2) Обратите внимание на решёточку (#) перед начальным значением. Без неё считает не так В документации на линкер этот момент как-то завуалирован: долго пытался понять, но безуспешно
-
Размещение данных в flash пзу
Gryphus ответил тема в MCS51, AVR, PIC, STM8, 8bit
А так не пробовали? __farflash char str[]="Hello, world!" указатель на строку должен иметь длину более двух байт -
Лучше сразу сделать на FT232R там и сигнал соответствующий есть и драйвер готовый и, главное, не требует софта и работает сразу. Даташит тут (см. с 28 по теме)
-
Как обычно, никто не в состоянии здесь сказать что-либо по моей проблеме :( Поэтому всё приходится делать самому. Короче, поставил в tiny25 фуз, отвечающий за деление тактовой частоты на 8 и всё встало на свои места. теперь работают на 90 кГц мастера и часы и тинька. Однако, хотя формально проблема решена, осадочек остался. ПОчему USI при тактовой частоте кристалла 8МГц допускает какие-то выверты на шине (видно по осциллоскопу), а при 1МГц - нет ??? Кто-нибудь с таким сталкивался?