AVR. Учебный Курс. Конфигурация FUSE бит
В прошлых статьях я советовал тебе не лезть к этим битам. И на это были свои основания, так как неправильно выставив эти биты ты можешь наглухо заблокировать контроллер для дальнейшей перепрошивки или вообще какого либо использования.
Но без знания этой особенности контроллера далеко не уедешь. Так что распишу все по порядку. У разных версий контроллеров число FUSES разное, какие то могут отсутствовать, но основные есть всегда. Вот по ним и пройдемся.
Конфигурационные биты находятся в особой области памяти и могут быть изменены только с помощью программатора при записи контроллера. Есть старший байт и младший байт. Младший байт обычно отвечает за частоту, а старший за всякие фенечки.
Итак, главное:
В Atmel AVR принята следующая нотация: сброшенный в ноль fuse bit считается активным, т.е. включенным.
Пример Бит RSTDSBL, как можно догадаться из названия, это RESET DISABLE. Включил эту опцию и у тебя нога RESET превращается в порт ввода-вывода, но за это ты теряешь возможность перешить контроллер через ISP.
Так вот, чтобы выключить RESET (и получить большое западло с прошивкой в обмен на мелкую подачку в виде дополнительной ножки) в этот бит надо записать 0.
С одной стороны нелогично и криво. Как бы во всем мире принята нотация, что ноль это выключено, а тут, понимаешь, наоборот. С другой стороны, это их контроллер, что хотят то и делают. Один раз запомнить и все. Да и вообще, в электронике часто за сигнал берут ноль.
Однако контроллеры делают электронщики, а прошивающие программы — программисты. Как бы логично. И вот эти программисты взяли и заварили адскую путаницу с галочками. Нет бы им раз и навсегда принять за стандарт, что галочка это 1, а не ВКЛЮЧЕНО (что, напомню, является нулем). И поэтому в одних прошивающих программах галочка означает, что опция включена (в FUSE бит записывается 0),в других, обычно написанных электронщиками, галочка означает единицу. Т.е. с точностью до наоборот.А что будет если перепутать? А будет ОЧЕНЬ плохо. Контроллер войдет в неправильный режим и может заблокируется наглухо. Т.е. раз прошил и все. Приехал.
Нет, спасти его можно, но для этого тебе потребуются дополнительные ухищрения в виде высоковольтного программатора, JTAG адаптера или генератора тактов. Все зависит от того в какой режим ты загонишь контроллер своими неправильными настройками.
Новичку, обычно, бывает проще сходить и купить новый МК, чем оживить заблокированный. Но не спеши отправлять его в помойку. Пометь и отложи на будущее, разберешься оживишь.
Конфигурация тактового сигнала
По умолчанию все контроллеры AVR (кроме старых серий AT90S2313, AT90S8535 итд) сконфигурированы так, чтобы работать от внутреннего источника тактов. Т.е. стоить подать на них питание и они начинают работать. Ничего больше и не нужно.За источник тактов отвечают биты CKSEL
Выставив их правильным образом можно выбрать частоту работы контроллера, а также источник тактового сигнала.
- CKSEL3…0 = 0000 — Внешний источник сигнала.
Т.е. на вход XTAL1 подаются прямоугольные импульсы. Такое иногда делают в синхронных системах, когда несколько контроллеров работают от одного генератора.
Техническое отступление
В этот режим часто попадают, когда пытаются выставить контроллер на работу от внешнего кварца (CKSEL=1111), но либо путают нотацию, либо из-за прикола с обратной нотацией битов во всяких извратских прошивающих программах. Раз и кристалл заблокировался. Но, на самом деле, наглухо, с помощью CKSEL, заблокировать кристалл нельзя. Обычно все решается напайкой кварца и запуском от этого кварца. Худшее же что может случиться — потребуется внешний генератор тактов. Который бы оживил кристалл. Делается он за пять минут из любой микросхемы ТТЛ логики, например из К155ЛА3 — схем в инете навалом. Или на таймере 555, либо можно взять второй МК и на нем написать простую программку, дрыгающую ножкой. А если есть осциллограф, то с него можно поиметь сигнал контрольного генератора — его клемма должна быть на любом осциле. Землю осцила на землю контроллера, а выход генератора на XTAL1.Но что делать если зуд нестерпимый, контроллер залочен, а никакой микросхемы для реанимации под рукой нету? Тут иногда прокатывает метод пальца. Прикол в том, что на тело человека наводится весьма нефиговая наводка частотой примерно 50Гц. Всякий кто хватался за щупы осциллографа руками помнит какие шняги тут же возникают на экране — вот это оно! А почему бы эту наводку не заюзать как тактовый сигнал? Так что припаиваешь к выводу XTAL1 провод, хватаешься за него рукой, и жмешь на чтение или запись контроллера :) Предупреждаю сразу, метод работает через жопу, далеко не с первого раза, читает долго и порой с ошибками, но на перезапись FUSE битов в нужную сторону должно хватить. Пару раз у меня такой фокус получался.
CKSEL3…0 = 0100 – 8 MHz от внутреннего генератора(обычно по умолчанию стоят такие)
Для большинства AVR такая конфигурация CKSEL означает тактовку от внутреннего генератора на 8Мгц, но тут могут быть варианты. Так что в этом случае втыкай внимательно в даташит. В табличку Internal Calibrated RC Oscillator Operating ModesИногда нужно иметь внешний тактовый генератор, например, чтобы его можно было подстраивать без вмешательства в прошивку. Для этого можно подключить RC цепочку, как показано на схеме и подсчитать частоту по формуле f = 1/3RC, где f будет частотой в герцах, а R и С соответственно сопротивлением резистора и емкостью конденсатора, в омах и фарадах.
- CKSEL3…0 = 0101 – для частот ниже 0.9 MHz
- CKSEL3…0 = 0110 – от 0.9 до 3 MHz
- CKSEL3…0 = 0111 – от 3 до 8 MHz
- CKSEL3…0 = 1000 – от 8 до 12 MHz
Данная табличка справедлива только для ATmega16 у других МК может отличаться. Уточняй в даташите!
Проблема у внутреннего генератора и внешних RC цепочек обычно в нестабильности частоты, а значит если сделать на ней часы, то они будут врать, не сильно, но будут. Поэтому иногда полезно запустить контроллер на кварце, кроме того, только на кварце можно выдать максимум частоты, а значит и производительности проца.
- CKSEL3…0 = 1001 — низкочастотный «часовой» кварц.
На несколько десятков килогерц.
Используется в низкоскоростных устройствах, особенно когда требуется точная работа и низкое потребление энергии.Для обычных кварцев ситуация несколько иная. Тут максимальная частота кварца зависит также и от бита CKOPT когда CKOPT = 1 то:
- CKSEL3…0 = 1010 или 1011 — от 0,4 до 0.9 MHz
- CKSEL3…0 = 1100 или 1101 — от 0,9 до 3 MHz
- CKSEL3…0 = 1110 или 1111 – от 3 до 8 MHz (либо от 1 до 16Мгц при CKOPT=0)
А если CKOPT равен 0 то при тех же значения CКSEL можно поставить кварц от 1 до 16MHz.
Разумеется, кварц на 16MHz можно поставить только на Мегу без индекса ”L”. (Хотя, как показывает практика, Lку тоже можно неслабо разогнать. У меня ATMega8535L заработала на 16Мгц, но были странные эффекты в работе. Поэтому я не стал так извращаться и разгон снял). Опять же, все выше сказанное в точности соответствует только Меге 16, у других может незначительно отличаться.
Бит CKOPT задает размах тактового сигнала. Т.е. амплитуду колебаний на выходе с кварца. Когда CKOPT = 1 то размах маленький, за счет этого достигается меньшее энергопотребление, но снижается устройчивость к помехам, особенно на высоких скоростях (а предельной, судя по таблице выше, вообще достичь нельзя. Точнее запуститься то он может запустится, но вот надежность никто не гарантирует). А вот если CKOPT активизировать, записать в него 0, то размах сигнала сразу же станет от 0 до питания. Что увеличит энергопотребление, но повысит стойкость к помехам, а значит и предельную скорость. При оверклокинге МК тем более надо устанавливать CKOPT в 0.
Также стоит упомянуть бит SCKDIV8 которого нет в Atmega16, но который часто встречается в других контроллерах AVR. Это делитель тактовой частоты. Когда он установлен, т.е. в нуле, то частота выставленная в битах CКSEL0…3 делится на 8, на чем в свое время прилично застрял Длинный, долго пытаясь понять чего это у него западло не работает. Вся прелесть в том, что этот делитель можно отключить программно, записав в регистр CLKPR нужный коэффициент деления, например один. Весь прикол в том, что SCKDIV8 активен по дефолту! Так что внимательней!
Биты SUT задают скорость старта МК после снятия RESET или подачи питания. Величина там меняется от 4ms до 65ms. Мне, за всю практику, пока не довелось эту опцию использовать — незачем. Так что ставлю на максимум 65ms — надежней будет.
Бит RSTDISBL способен превратить линию Reset в одну из ножек порта, что порой очень нужно когда на какой-нибудь крошечной Tiny не хватает ножек на все задачи, но надо помнить, что если отрубить Reset то автоматически отваливается возможность прошивать контроллер по пяти проводкам. И для перешивки потребуется высоковольтный параллельный программатор, который стоит несколько тысяч и на коленке сделать его проблематично, хотя и возможно.
Второй заподлянский бит это SPIEN если его поставить в 1, то у тебя тоже мгновенно отваливается возможность прошивать по простому пути и опять будет нужен параллельный программатор. Впрочем, успокаивает то, что сбросить его через SPI невозможно, по крайней мере в новых AVR (в старых, в AT90S*** было можно)
WDTON отвечает за Собачий таймер, он же Watch Dog. Этот таймер перезагружает процессор если его периодически не сбрасывать – профилактика зависаний. Если WDTON поставить в 0, то собаку нельзя будет выключить вообще.
BODLEVEL и BODEN — это режим контроля за напряжением. Дело в том, что при определенном пороге напряжения, ниже критического уровня, контроллер может начать сильно глючить. Самопроизвольно может запортачить, например, EEPROM или еще что откосить. Ну, а ты как думал, не покорми тебя с пару недель — тоже глючить начнешь :)
Так вот, для решения этой проблемы есть у AVR встроенный супервизор питания. Он следит, чтобы напруга была не ниже адекватного уровня. И если напруги не хватает, то просто прижимает RESET и не дает контроллеру стартовать. Вот эти два фуза и рулят этой фичей. BODEN включает, а BODLEVEL позволяет выбрать критический уровень, один из двух. Какие? Не буду раскрывать, посмотри в даташите (раздел System Control and Reset).JTAGEN — Включить JTAG. По умолчанию активна. Т.е. JTAG включен. Из-за этого у MEGA16 (а также 32 и прочих, где есть JTAG) нельзя использовать вывода порта C, отвечающие за JTAG. Но зато можно подключать JTAG отладчик и с его помощью лезть контроллеру в мозги.
EESAVE — Защита EEPROM от стирания. Если эту штуку включить, то при полном сбросе МК не будет стерта зона EEPROM. Полезно, например, если в EEPROM записываются какие-либо ценные данные по ходу работы.
BOOTRST — перенос стартового вектора в область бутлоадера. Если эта галочка включена, то МК стартует не с адреса 00000, а с адреса бутсектора и вначале выполняет бутлоадер. Подробней про это было написано в статье про прошивку через лоадер.
BOOTSZ0..1 — группа битов определяющая размер бут сектора. Подробней смотри в даташите. От контроллера к контроллеру они отличаются.
Lock Bits
Это, собственно, и к фузам то отношения не имеет. Это биты защиты. Установка этих битов запрещает чтение из кристалла. Либо флеша, либо ЕЕПРОМА, либо и того и другого сразу. Нужно, только если ты продаешь свои устройства. Чтобы злые конкуренты не слили прошивку и не заказали в китае более 9000 клонов твоего девайса, оставив тебя без штанов. Опасности не представляют. Если ты заблокируешь ими кристалл, то выполни полное стирание и нет проблемы.Характерной особенностью установленных лок битов является считываемая прошивка — в ней байты идут по порядку. Т.е. 00,01, 02, 03, 04… FF, 00… Видел такую срань? Значит не судьба тебе спереть прошивку — защищена =)
Техника безопасности
И главное правило при работе с FUSE битами — ВНИМАНИЕ, ВНИМАНИЕ и ЕЩЕ РАЗ ВНИМАНИЕ! Не выставляйте никогда FUSE не сверившись с даташитом, даже если срисовываете их из проверенного источника.Мало ли в какой нотации указал их автор, в прямой или инверсной. Так что если повторяете какую-либо конструкцию, то перед тем как ставить фузы, проверьте то ли вы вообще ставите!
Обязательно разберитесь что означает галочка в прошивающей программе. Ноль или единицу. Включено или выключено! Стандарта нет!!!
Если фуз биты задаются двумя числами — старший и младший биты, то выставляются они как в даташите. Где 0 это включено.
Второе, железное, правило работы с FUSE. Запомните это навсегда и не говорите, что я не учил.
ВНАЧАЛЕ ЧИТАЕМ ТЕ ЧТО ЕСТЬ, ПОТОМ ЗАПИСЫВАЕМ ТЕ КОТОРЫЕ НАДО НАМ
Чтение — модификация — запись. ТОЛЬКО так. Почему? Да просто часто бывает как — открыл вкладку FUSE, а программатор попался тупой и сам их не считал. Как результат — у тебя там везде пустые клеточки. Довольный, выставил только те, что тебе надо SKSEL, а потом нажал WRITE. Тут то и наступает, Обычно, кабздец. Т.к. в контроллер записываются не только те, что ты изменишь, а ввобще вся секция. С теми самыми пустыми клеточками. Представь какой трешняк там будет. То то же! А потом бегут жаловаться по комментам и форумам, мол я ничего такого не трогал — оно само. Ага, щаз!
Так что, еще раз — Чтение, Модификация, Запись!
Подсказка:
Как с одного взгляда определить какого типа (прямые или инверсные) fuse биты в незнакомой прошивающей проге?
Дедуктивный метод: Нажмите чтение Fuses и посмотрите на состояние бита SPIEN Этот бит всегда активен, а если он будет сброшен, то программатор контроллер даже определить не сможет. Если SPIEN в 1 — значит фьюзы инверсные, как в PonyProg. Если ноль — значит по нотации Atmel.142 комментария: AVR. Учебный Курс. Конфигурация FUSE бит
Во-первых, респект за фокус с тактовой наводкой с тела!
> Второй заподлянский бит это SPIEN
На случай отключения этой заразы есть JTAGEN, который обычно активен по умолчанию — хотя надо признать, джитаговые средства тоже не так просты, как СПИ.
По поводу установки фузов вообще. В AVR Studio есть отличное окошко, где можно натыкать фузы визуально, а потом проверить байтовые значения — и наоборот, ввести байтовые значения, и посмотреть, что из этого получилось.
Она работает со всеми AVR в DIP корпусах, и решает следующие из вышеописанных проблем:
1. Имеет разводку для высоковольтного программирования — чип практически невозможно залочить насмерть (если конечно вообще его не убить)
2. Имеет встроенный и управляемый генератор тактовых импульсов от 0 до 3.6864 МГц — неважно, что ты натворил с битами тактования, вариант запуска чипа найдется. Есть также набортный слот для внешнего кварца.
Из вкусностей:
1. Имеет встроенный управляемый источник питания чипов — любой вольтаж от минимума питания до 5 с лишним вольт. Причем референсный вольтаж для ADC может управляться отдельно, или вообще отсоединяться.
2. Цепляется к компу по СОМ-порту, и управляется из бесплатно доступного AVR Studio — включая установки вольтажа питания чипа, все его фузы (причем визуально, через чекбоксы), настройки бортового тактового генератора, итп.
3. Встроенная защита от КЗ по питанию — ага, ее можно перемкнуть, и оно просто начнет мигать лампочкой (сам не пробовал, но документация говорит, что можно).
4. Восемь лампочек и восемь кнопок, которые цепляются проводком на любой порт чипа по выбору.
5. Набортная разводка чипового UARTа на отдельный СОМ-разъем, ессно через МАХ.
Стоит все это счастье что-то в районе 2500 руб, иобычно доступно вот тут
Они принимают оплату только по безналу (что элементарно решается через Сбербанк), зато доставляют в любой регион России. Пишется письмо на shop@efo.ru с указанием, чего надо, в каком количестве, и куда отправить (надо еще указать, что заказ на физ. лицо). Получаешь счет, оплачиваешь его в сбере или еще где, и ждешь железку. Ребята работают ультра-надежно, и у них к слову обычно в наличии масса вкусного Атмеловского добра, включая чипы, которые в том же ЧиД ни за что не найти. Я там не работаю — просто это чуть ли не единственная контора, которая продает отладочные комплекты по вменяемым ценам.
Как человек, который в свое время намаялся без СТК-шки, рекомендую всем — вместо очередной мобилы потратьте 2.5-3 тысячи, и облегчите себе жизнь на порядок. Минус только один — после этого захочется уйти и дальше — тогда прямая дорога на отладчик JTAG ICE MkII, и когда он вам наконец придет, все башевские баяны про линейку ночами и проваленную сессию будут вам попросту смехотворны :)
Вот только я не нашел это в студии. Похоже без родного девайса (STK500 или других атмеловских) добраться до этого фуз калькулятора нельзя.
Да, добраться туда можно только через то, что поддерживает хотя бы протокол STK500 — но он открыт для всех, и я видел наколенные программаторы, которые поддерживают этот протокол. Чипы для них тоже надо прошивать, но это можно сделать через Pony Prog и иже с ним. Вот пример:
Но конечно проще и надежнее потратиться один раз на СТК.
Блин, я совсем забыл, что в Студии есть такая кнопочка «Disconnected mode». Tools->Program AVR->Connect, потом ту кнопку, и получаем тот же калькулятор на вкладках Fuses и Security, только без возможности считывания/прописывания этих битов в чип. Не забыв выбрать нужный чип на первой вкладке, натыкиваем нужную конфигурацию на своей вкладке, и смотрим значение байт внизу окна.
Ух ты. Не знал.
Штука в самом деле классная,но денег мне на нее жалко-о-о
а может ли кто-нибудь помочь как стереть мегу 8 в программаторе стк500?
настройки студии и самого стк?
НАсчет студии ХЗ, я никогда не пользовался совместимымыми со студией программаторами. Но тот же AvrDude должен знать Стк500
А в чем собственно проблема? Если стирать по ISP, то всех коннектов — только 6-ногий кабель подцепить. Если ISP отключен или вылетел, то HVSP — там сходу не опишешь, но в доке на стк500 все есть весьма подробно. PDF доки есть на Atmel.com. В студии просто открывается интерфейс программатора, выбирается чип, способ общения с ним (ISP или HVSP), кликается Verify Signature (чтобы проверить, что студия его видит), потом кликается Erase Memory. Все :)
ну там определенным образом нужно провода подсоединить
я вроде делаю все правильно но эффекта нет
в режим программирования не входит грит failed
вот думаю где я ошибся
насчет сигнатуры он считать ее не может
пишет одни 00
У нас народ делает и продает в треть цены от STK500 вот такие штуки:
Тот же STK500 но без слотов с FTDI’евским чипом и без возможности HV программирования. Т.е. они просто самым наглым образом содрали кусок STK500 и добавили опторазвязку + usb. Логично, что прошивается он той же прошивкой, что и STK500.
Не зря. Вот такая вот штука лежит передо мною))))) У меня не было другого выхода — ноутбук, соответственно никаких LPT, COM. А прошивать у друга с «возможностью» спалить порт я не рискую. Думаю для новичка который вообще ничего не прошивал — купить такой программатор правильный выбор!
Тогда уж лучше сразу Arduino и не мучаться :))))))
Кстати, есть неплохой программатор(и очень простой),позволяющий в AVRках восстанавливать RSTDSBL,SPIEN(т.н.высоковольтное программирование).Я себе сделал,проверил.Работает,несколько раз выручал.Особенно АTTiny2313.Главное ,что он мегу8 поддерживает.Для начинающих — самое то .Автору- почет и уважение.
Ссылка:pol-sem.narod.ru/paraprog/paraprog.htm
А может этот программатор уже всем известен…тада звиняйте
«В Atmel AVR принята следующая нотация: сброшенный в ноль fuse bit считается активным. С одной стороны нелогично и криво»
Это как раз логично. Что такое fuse? это как проволока. Когда бит не запрограммирован, то проволока целая и проводит (единица). Как только ее разорвали, то значение переходит в 0.
Так работают все фьюзы, с которыми мне приходилось иметь дело.
Кстати, NAND Flash работает на таком же принципе (erase state = 1)
Согласен, технологической точки зрения тут все верно. Я совсем и забыл про методику стирания флеша.
Но Мы же рассматриваем конфигурацию кристалла, а в таком деле все должно быть логично с точки зрения человеческого восприятия, а тут оно как раз наизнанку. И если нельзя изменить способ стирания флеша, то вполне можно было изменить его отображение. Например, назови фуз SPIEN наоборот — SPIDSBL и смысл был бы сразу иным — поставил галку, заблокировал spi. Что видим то и получаем. А так имеем противоречие того что видим — галки нет и того что есть — SPIEN. Все юзеринтерфейсы, всех компов к которым мы привыкли построены на этом принципе — 1 это включено, 0 выключено. Это окружает нас с детства, от выключателей на стене до навороченного софта и тут такая подстава.
А по поводу проволочки… тут мне вообще аналогия непонятна. Почему FUSES? Это ведь не предохранитель, как они его назвали, а биты конфигурации! Они самопроизольно же не меняются и ни от чего кристалл не предохраняют. ПОчему не CONFIG?
Никто же не называет предохранитель в телевизоре конфигурацией включения.
Согласен что с человеческой точки зрения это не логично и вполне можно было или назвать эти биты по-другому или поставить внутренние инверторы.
А насчет FUSEs — есть технология (мы ее тоже используем) по которой транзистор физически пережигается. Это много дешевле и эффективнее флеша. А так же более отвечает требованиям security.
Надо же, я думал эта технология архаизм и давно забыта.
все кто занимается цифровой электроникой долгие годы — что называется с молоком матери всосали -
отсутствие сигнала — ЕСТЬ 1.
в ТТЛ логике даже нормой считалось — оставлять входы не подключенными — в них по умолчанию 1 была.
когда пришла ТТЛШ — начали подтягивать резисторами.
так что это для новичков нет сигнала значит 0.
а для ветеранов нет сигнала значит 1.
даже линии связи так — 1 долго значит линия свободна , ноль долго — обрыв линии.
Вообще это и сейчас используется в какой-то мере… тот же ввод с кнопок на МК обычно делается «active low» — т.е. если 0 — то активен. Опять же UART так работает (на TTL уровне), линии стробов на LCD экранах, итп.
Как раз нет. Технология embedded flash очень медленная и объемная (большой размер транзисторов). Что приводит к существенному удорожанию продукта.
Афтору мега-респект за происходящее на этом сайте и за логи киберсатаниста!!
Поделюсь своим опытом. Я всегда путаюсь с PonyProg, немогу запомнить всегда мозг напрягаю неподецки, у меня ещё плюс ко всему планар идёт. Ща работаю с Мегой 128 в Студио. Непомню правда но помоему там по человечески, галку ставишь значит активный, а так ежели чё ориентируюсь на галку Джитаг (он по умолчанию активен) от этого отталкиваюсь. не есть гуд канешна.
Пони падла, мозг запудрила. У меня в серию идут тиньки 23-и я сделал распечатку где какие галки стоят в Пони и храню как синицу ока.
Не знаю мож поможет кому, ведь когда микрухи «голые» в них записано $FF (1111 1111 B) програмная память и расширенная(если есть). Также и фузы 1 — неактивен, 0 — активен.
Лучше всегда указывать фьюзы в HEX формате :) Обычно подсчитаю их один раз, укажу в avrdude и не парюсь.
Раз пошла такая пьянка, расскажу про еще одну штуку, мимо которой могли пройти уважаемые коллеги —Atmel AVR Dragon
Стоит около 50 уе, преспокойно программирует большинство чипов с размером флэша до 32Кб — причем как по SPI, так и по High-Voltage, а кроме этого — еще и по JTAG с debugWire. Да-да, это самый что ни на есть форменный эмулятор/отладчик! Работает с AVR Studio, и минус у него только один — нет никаких кроваток, так что приходится руками кидать все проводки для программирования/отладки. Но за такую цену… :) Я юзал его для отладки ATmega16. Искать можно тут:
я в своей жизни эти фьюзы юзал только смены частоты )
у меня много знакомых, которые «около программирования». все говорят «будь осторожен с фьюзами!».
а когда я начинаю в шутку расспрашивать про это, то сразу никто ничего не знает )
зы! кстати, я забыл пароль, а новый мне на почту не приходит ( пишет «функция mail не действительна». как бы его снова поиметь для удобства? )
я долго работал с байт бластером — он работает через командную строку. поэтому для каждого проекта я создавал свою папку со всеми прогами и один раз тщательно прописав фузы в командную строку — забывал о них.
сейчас подумываю преходить на усб программатры.
но большие заводские программаторы не приемлю.
они тока для новичков хороши. в осталном я на макетке сразу распаиваю схему и мне практически
только шнурок к процу и нужен. а дальше методом раскрутки — вначале проверям адресацию всего подключенного. потом по частям запускаем модули и на последок самое сладкое и мучительное как все это работает в куче не мешает ли друг другу.
смысла в больших программаторах не вижу абсолютно
DI HALT, я хотел у меги8535 выставить частоту работы от кварца 12 МГц. Пользовался uniprof. Считал fuse-биты, SPI был снят (как ты и учил :) )… нашел в даташите, что 0 — programming. Т.е. сделал вывод — по даташиту 0 — снята галочка, 1 — стоит… В даташите нашел External Crystal/Ceramic Resonator 1111 — 1010 (для CKSEL3..0)
Далее нашел таблицу, в которой написано было CKSEL3..1. Для частоты 1-16МГц стояли занчения 111, 110, 101. И CKOPT 0. Изначально галочка CKOPT стояла. Я снял ее, и выставил CKSEL3, CKSEL2. CKSEL0 трокать не стал. В результате МК перестал видеться прогой uniprof.
Подскажи, пожалуйста, где я накосячил и как это теперь исправить. Пробовал танцы с бубном типа припаивания на XTAL1 проводка и держась за него — не помогает…
Эээ чет не понял что ты там куда выставил? Напиши четко какие галки на CKSEL ты выставил.
Для унипрофа, на 12мгц кварц выставить надо было так:
CKSEL=1111 (или 1110 монопенисуально, так запускаться будет чуть быстрей на пару милисекунд, но нужен более качественный кварц)
CKOPT=0 хотя я никогда ее не трогал у меня и на CKSEL=1111 CKOPT=1 Lмодификация Меги8535 (8мгц максимум) запустилась на 16МГЦ %)
Теперь о косяках. Какие ты выставил конденсаторы? Рекомендуется от 12-22pF
Флюс смыл? Дело в том, что если ноги кварца загажены остатками флюса, то он может и не запуститься. Тщательно промой плату. ПРоверь все пайки.
У тебя может попасться голимый кварц (бывают кварцы на разные гармоники к тому же). Попробуй поставить другой кварц или кварц на более низкую частоту, скажем на 3мгц.
Фузы выставил так:
CKSEL3 — галка
CKSEL2 — галка
CKSEL1 — нет галки
CKSEL0 — по умолчанию (не помню, кажется там была галка)
CKOPT — нет галки
По поводу кондеров и кварца. Я прошивал МК в простяцком программаторе на COM-порт с твоего сайта, а в нем нету ниче «лишнего». Т.е. втыкаю МК в панельку программатора, подключаю к компу, запускаю uniprof, а тот мне выдает, что ничего не видит на COM1 (до этого все виделось)… Попробую прошить в устройстве, там стоит кварц на 12МГц и кондеры по 22пФ. Просто получается, что если я выставил внешний источник тактовых импульсов (ну RC цепочку или Кварц), то в программаторе я им уже рулить не смогу без этого источника импульсов?
Странно. ПО идее должен был завестись. Попробуй поставить для пробы кварц на 3мгц.
Поставил кварц на 4 МГц и кондеры на 22пФ, микроконтроллер увиделся :) Пасиб.
жду с нетерпением обещщаный простой оживлятор на К155ЛА3
Мега16 в коме….
Люди!
http://valery-us4leh.narod.ru/dlpt.html
Те,кто ПОНИМАЕТ….
посмотрите вот эту програмку для LPT
…там, на вкладке TEST есть 50Гц генератор от ножки LPT
как вы думаете,можно ли его попробовать в качестве оживлятора,а?
…. это ж всё-таки не палец….
хотя…..
пальцев у нас 20(у некоторых 21),а LPT чаше всего один….
вдруг сгорит ещё….
Да, потянет. Частота правда сильно мала. Будет меееееееееедлееееенно. Но зато стабильней пальца :) Главное питание возьми с компа, а землю возьми от LPT порта. Вообще у меня в компе земля везде одна, но тут товарищи говорят, что это не всегда так. Поэтому лучше не рисковать.
Нет,неполучается у мну ничё((
Окошко Fuses & Lock серое как дверь…
ни прочитать,ни записать((
Я с AVR не работал, но вот как думаю по поводу фьюзов и их активного уровня. Тут ведь всё зависит от описания. Вообще fuse по-английски — это предохранитель или, если более точно, то «плавкая вставка». Соответственно если в описании написано (а что там написано я не знаю), что такой-то фьюз отрубает к чертям такую-то фичу, то вполне логично, что активный уровень у него ноль. Ведь если предохранитель выдернули (ноль), то то, что через него включено и не должно работать. А если он на месте (единица), то и оборудование (фича) функционирует.
А вот если в описании написано, что по нулю фича наоборот включатся, тогда действительно не логично.
Но это так, мысли вслух…
ТАк в том то и дело, что по официальной нотации нулем врубаем :)
Приветствия всем присутствующим
Я, почитав все заметки, убежден что повторюсь, но дабы убедиться полностью что я понимаю суть вопроса и быть уверенным что я мыслю правильно всеже спрошу
у меня SPIEN и RSTDISBL в сером состоянии тоесть не меняются и галочка отсутствует (пользуюсь PonyProg и LPT прошивателем )
как сказано в о-писании отсутствие галочки соответствует активному состоянию тоесть бит=1 , тоесть как надо.
Но я не знал о свойствах PonyProg и воспользовался кнопной выделить все что привело к расстановке галочек везде даже в «серых местах»
в итоге устройство не видится больше программатором — но при втыкании говорит что он USBasp хотя прога для его юзания сее устройство не узнает даже после скармливания ей дров.
я выковырял из панельки контроллер и вставил туда другой чистый — но программатор не узнал его
- каков диагноз????????????????
1) выбросить порт или прошиватель и сваять другой
2) вылечить кривые руки и таки оживить незаслуженно удаленный из устройства зашитый контроллер
3) Ваш вариант
В понипроге нотация «через жопу» в смысле активное состояние это не 0, а 1 (за это их убить надо, счет залоченных контроллеров изза этой самодеятельности PonyProg идет на сотни тысяч)
Если ты в понипроге выставил все галочки, то скорей всего ты 1) выставил SPIEN в 1 (он и так был в единице, по Поневской нотации) и отрубил RESET, а вот это ЖОООПА! и тут тебе тока высоковольтный программатор поможет.
2) скорей всего ты спалил порт. Раз чистый МК не видится.
Вот зря народ ведется на легкость 5ти проводков. Крайне вредный программатор.
3) можешь поменять пины в LPT порту и прошить UniProf ом.
С помощью (метода пальца) удалось запустить Attiny 2313, после неправильной прошивки фуз…, а от Atmega 8 и 16 не получается, думаю что с помощью генератора получится, может кто схемку подкинет???
Позырь у меня в готовых устройствах регулятор скорости вращения вентилятора на 555 таймере. Оторви силовой транзистор, запитай от 5 вольт и поставь скважность 50% — вот тебе и генератор.
Доброго времени суток)
По своей невнимательности поставил в 1 второй заподлянский бит — SPIEN. И теперь через SPI (по простому) не могу прошить свою 16-ти МГц-ную 8-ую мегу.
Кто что скажет по этому поводу? — Есть ли способ реанимировать мк?
Заранее спасибо :)
Отложи его пока в коробочку до лучших времен. Для реанимации этого МК нужен высоковольтный программатор. Схему его я все же наверное скоро выложу. МОжешь сам поискать в инете пока. Зовется HVprog и Paraprog
в тему stk500
http://www.der-hammer.info/hvprog/index_en.htm Advanced version (v0.5)
просьба оценить ибо посоветовали собрать именно его а не например парапрог
объясните пожалуйста чем отличается от реального стк500 чем лучшехуже, чего нехватает в отличии от оригинала стк500
Доброго времени суток
Нечайно выставил CKSEL3…0 = 1000
Подскажите что делать?
«Пальцевым методом» не помогло.
Контроллер Mega 8535. Смотрел даташит, CKSEL биты выставляются так же, как и в табличке выше.
Если надо RC генератор делать, то не подскажите что куда цеплять?
Какой прогой шил?
UniProf
кстати у меня похожая траббла с тини2313.
висит на кварце 16МГц. ошибся с этими фьюзами, шил естессно такой, где всё «наоборот» с пони — uniprof )
за все годы работ с аврами — реально первый такой случай )
как это на самом деле лечится?
Тоже «Штуку» поставил? Ну так повесь RC внешнюю и будет тебе счастье
что поставил — не помню, т.к. отвлекли.
вроде 0101.
размеры маленькие, поверх ничего вставить не получается. пока что с отпаянным и запаянным кварцем — не пашет. про RC — ещё не ставил.
И не поможет.
А в даташит поглядеть на предмет того что же ты там выставил не судьба? У тебя щас «External RC Oscillator» вешай вместо кварца RC цепочку и будет тебе счастье. В даташите все есть на этот счет.
Спасибо за совет! МК проснулся!
Мужики покупайте программатор «WizardProg77USB» горя знать небудете.И извращайтесь с фузами как вам угодно.Стоимость около 3500р.Дорого! ,но он того стоит.С ним идёт диск с собственным ПО .
Парапрог обойдется намного дешевле :)
значит я поторопился с покупкой программатора.Просто в нашем маленьком городе выбора нет ,што было то и купил.
Штука полезная, но крайне редко пригождающаяся. Кстати, а он ISP умеет? Или только через свою панельку?
только через свою панельку .А вообще зверь машинка умеет прошивать несколько сотен видов МК,Пзу,тестировать стандартную логику.
Это для ремонтников хорошо.
Обычно из этих сотен видов МК ты в продаже найдешь только самые популярные, а они шьются запросто и схемами аля 5 резисторов да один диод. Кстати, он умеет шить семейство микроконтроллеров ST7 ?
умеет шить,семейства 87с.AT.DS.SST.STC.SM.MSU.GMS.I87.P87.W78.PIC.MDT.V87.CR80.T80.IS89.
Черт, ну вот так всегда. :( А единственный программатор сампальный на ST7 который я нашел — собран на базе той же ST7
DI HALT если тебе нетрудно расскажи о фузах в ATtini15.
Чет сайт Атмела зажал полный даташит на 15тиню и словно никогда ее не делал.
Ребята помогите оживить 16 мегу! беда в том что не помню фьюзов CKSEL3-0 :)
Помню дерево! и мужик) вобщем трогались только эти 4 фьюзы, CKOPT по умолчанию. А эти в uniprof были сняты галки. (теоретически) :)
Контроллер видится методом пальца через раз, изменить фьюзы не удается, читает их один раз из 10 и то все врем по разному :) вобщем лагает. Пробовал кварц на 10мгц, на 16 мгц, внешний такт от тестера (кстати когда одну ногу тестера на ноль а генерирующую частоту на XTAL1 и подаешь питание — тестер умерает :) ) Помагает только метод пальца и то в очень редких случаях.. кто знает варианты — помогите плз.. Походу еще не пробовал режим 3-8 мгц.. но разве на 10 не запустилось бы? еще RC цепочка.. как рассчитывать 1/(3RC) ? какие порядки, герц = 1 / 3*Омы*нанофорады? Тыкните в схему генератора простого на счетчике..
Спасибо!
Если 0000 то это внешний генератор. Тем более пальцем заводится хоть и через раз. Что подтверждает это.
Генератор можно сделать на чем угодно хоть на 555 таймере, хоть на К155ЛА3 была тема про создание ШИМ наиболее простым способом.
http://easyelectronics.ru/prakticheskaya-zadachka.html
там в комментах генераторов вагон.
Благодарю, еси заведется — отпишусь ) Если стоит режим 3-8мгц, от кварца 10мгц стартануть должно? (спрашиваю для уменьшения вариантов) :) Еще по поводу РЦ цепочки, все правильно с определением частоты? резюк и кондер расчитываются в омах и нанофарадах и получаем частоту в герцах?
Должен завестись. Расчет RC цепочки приведен в даташите. считается ЕМНИП в омах и фарадах.
Доброго времени суток всем присутствующим! Мужики, помогите пожалуйста!
По «незнанке» забил в свою Мегу8-16PU фузы как для PonyProg2000, забивал с помощью UniProf (Соответственно получилось всё с точностью до наоборот), в итоге программатор (5 проводов) не видит Мегу!Внешний кварц на 8МГц не помог! Подскажите пажалуйста реально ли её оживить? Что такое «Метод пальца» и RC цепочка и как их реализовать?
Тебе надо на XTAL1 подать тактовый сигнал, простой прямоугольный сигнал.
Метод пальца — это когда касаешься этой ножки пальцем и наводок 50гц хватает для того, чтобы прошить фуз биты.
Спасибо за быстрый ответ! Т.е. нужно просто к ноге XTAL1 подпаять проводок, вставить Мегу в программатор и дотронуться до провода рукой? В итоге программатор должен увидеть Мегу? я правильно Вас понял?
Может увидит, а может нет. Метод пальца это экстремальный способ. Не факт что получится, работает через раз и очень медленно.
У меня таким способом удается вернуть обратно фуз биты один раз из 10 случаев.
Лучше собери генератор из другого контроллера который просто будет выдавать на ножку сигнал с частотой где то 1мгц.
Если же у тебя зашилось на RC цепочку то в даташите есть подробное описание какие номиналы резистора и конденсатора тебе надо будет поставить, а также как это все подключить. Раздел даташита. ЕМНИП Clock Sources
Спасибо за пояснение! На счёт «генератора из другого контролёра» — у меня в наличие только эта Мега8, за другим контролёром надо на «Митино» пилить, а туда 150км (Раз уж всё равно придётся ехать, проще новую Мегу купить и не заморачиваться с генератором).
Ну в любом случае купишь. Вначале собери из нее генератор и оживи старую мегу — будет у тебя две :)
На «Митино» съездить не удалось (Машину «Хлопнул»), заказал две Меги8 по почте — первую из них благополучно «убил» почти тем же способом — при попытке задать 8МГц от внутреннего генератора отключил бит «SCOPT»(=1), а биты CKSEL3…0 выставил 0100. После чего контроллер перестал определяться 5-ю проводками.
Подскажите как его теперь запустить, внешним кварцем или другим генератором, если генератором, то киньте ссылку на тот что полегче!
DI HALT, спасибо за совет. Воспользовался методом синхронизации «от руки». Оживил мегу
С какой попытки получилось?
С первой. ATMega8. Но пришлось второй рукой «прихватить» AT-корпус компа. Без этой манипуляции, видимо, наводок не хватало.
Неужели никто не пробовал воспользоваться avreal32 с ключом -o?
Восстановил свою atmega32 именно этим способом.
Ссылка для интересующихся http://www.ln.com.ua/~real/avreal/index.html
Ди, то что ты написал CKSEL=1111 — это значит в юнипрофе галочки Должны стоять?
если это так — добавь в статью, так как я например не понял связи между «запрограммирован/не запрограмиирован «, галочкой и битом, который указыватеся.
н-да, залочил-таки мегу.
снял все cksel и ckopt
пальцем не получается :(
А зачем снимал не разобравшись наверняка как надо?
Я всегда говорю, что беру биты по даташиту. Т.е. в точности как там. Т.к. даташит это святое. Мог бы и сравнить с даташитом, т.к. у разных мег по разному биты CSEL выставляются на одну и ту же опцию. А в унипрофе с даташитом совпадают галки.
Да у меня был скриншот с унипрофа и готовая схема, и я толком не врубился, что нужно врубать, а что нет.. спасибо
/me ушел собирать генератор
Это значит так в даташите. А как в унипрофе это надо читать инструкцию к унипрофу. Да, должны стоять, т.к. нотация у них совпадает.
Отличный сайт, всегда находил ответы на все вопросы, которые у меня возникали! Но тут до меня чего то не доходит(
А что делать если кварц нужен на частоту большую, чем 16 МГц?
Мне например требуется запустить Мегу 16 от кварца 19,6608МГц (официально она поддерживает 20 вроде), как мне правильно выставить фюзы? Если не трудно, можно сразу в хексе и пнуть туда где написано как программировать эти фюзы через avrdude.
Кварц бывает двух типов — медленный и быстрый :) Все что выше 1мгц это быстрые, так что для своих 20мгц ставь фузы точно также как ставил бы для 16ти
Я так понял что надо писать во так:
avrdude -c nikolaew -P com1 -p m16 -u -U hfuse:w:0x9F:m -u -U lfuse:w:0xDF:m -U flash:w:tutorial.hex???
не хотелось бы запороть кристал…
Сдуру прошил тини2313 (неродной батник запустил)
CKSEL=0111
в даташите написано что
External Clock — 0000
Calibrated Internal RC Oscillator 4MHz -> 0010
Calibrated internal RC Oscillator 8MHz -> 0100
Watchdog Oscillator 128kHz -> 0110
External Crystal/Ceramic Resonator -> 1000 — 1111
Reserved -> 0001/0011/0101/0111
Принудительное тактирование непомогает, все остальные фьюзы по дефолту.
Есть советы кроме выбросить? =)
Что-то случилось, и мой программатор Громова сдулся. Сначала начал подвисать на прошивке, на 41%(debian/avrdude)
Раза с десятого прошивался, но грохался на верификации. Пробовал setserial’ом скорость ком порта до 9600 урезать(меньше не дает) — не помогло. В итоге, аврдьюд мне сказал — оппа, чето не так с lfuse, вернуть как было? Я тыкнул йес, но не помогло. Теперь мк вобще не определяется, с флагом -F кодовое число 0×0000
Пробовал другой мк, тотже 0×0000.
До этого все было норм. Что могло случится? Программатор весь прозвонил, на десять раз проверил на непропаи, вроде все ок. Так и не успел для USBAsp мк прошить:)
Вобщем нужна помощь, что мне в этом случае делать? Может я компорт спалил? И если да, то как проверить?
Некропостинг — но Буду отвечать везде, пока Ди не вставит примечание в статью про программатор Громова. Может, увидит кто нуждающийся.
Для стабильной работы в линуксе avrdude с Громовым надо ОТОРВАТЬ ПРОВОД ОТ 2 ВЫВОДА COM-порта. Без этого именно такие симптомы и есть — подвисает на прошивке/чтении и не проходит верификацию. Уже несколько линуксоидов на эту тему отписались.
Приветствую всех!Не знаю точно,фьюзы это или нет ,но — у меня МК работает как то криво.Первый раз такое -не работает кварц! Вообще.Как ни тыкай CKSEL в uniprof-e ,CKOPT -пофиг.На случай рядом генератор всегда стоит (4 Мгц) если чего не так- тыкаю его в XTAL2 и оживляю. Но не работает внешний кварц.А это и смешно и грустно-есть две меги 16 и 32,и парочка at90s2313.Есть также макетка для них со всем необходимым.Пишу прогу-но (!!!) работает как то не так,как нужно.Т.е. программлю таймер 1 (и нулевой пробовал) пишу в cvavr-таким образом ,что делитель максимум ,вызывающий прерывание — 11 с лишним кГц.Код таков
—начало прерывания таймера—
{
X++;
PORTB=X++;
}
получаем простое приращение,и младший разряд должен мигать с частотой в 2 раза меньшей чем 11 кГц (Кварц кстати — 12 Мгц).мигает…на глаз где то три раза в секунду,что ну НИКАК не килогерцы!
на всех МК такая же картина
по поводу этой программы. делал еще напрямую,без предделителя таймера- получается неизвестно что,кГц 2-8,не больше.ступор…
менял конденсаторы,ставил другие кварцы — не помогает.причем интересно так работает-кварц вытаскиваешь — программа останавливается.вставляешь — поехала дальше.на кандеры не реагирует ну никак.Скорость ее работы не зависит от номинала кварца — пробовал 14,10,8,5,1 мГц — абсолютно также все.Конденсаторы выпаиваешь — работает.кварц выпаиваешь-остановилось.А УАРТ почему-то работает нормально хоть и асинхронник,с компом туда-обратно без ошибок идет на 19200.Осцилом меряю на обоих XTAL — 3.5 вольта постоянки,вообще тупо стоит на месте.Перепробовал и кондеры разные — от 15 пф до 30 — нифига!Не пашет и все тут.И фьюзы не помогают.сижу 3 день…
Разозлился и сделал ВТОРУЮ такую ж макетку-может,емкости проводников или ошибка монтажа,в общем самые короткие проводники на xtal1,2 и все заоптимизировал ,чтоб емкости минимальные были,все тестером тщательно промерил на предмет ошибок-идеально все.Впаиваю(на этот раз новый кварц на 12 и кондеры на 22 пф) и светодиод с резистором 300 ом на порт(дабы видеть работу).Также!И кварцы опять менял потом и кандеры,и даже Мк новых пару мег16 купил…Что бы это могло быть,а?Фузы???
Напиши программу на ассемблере. Простейшую, чтобы ногу вверх ногу вниз. И одном цикле. Тыкнешь осцилом и сразу узнаешь на какой частоте у тебя что завелось.
На хтал ты осциллографом ничего не увидишь. Разве что у тебя не тектроникс с активными щупами. От касания обычного осцила генерация срывается.
Спасибо,буду пробовать.
От касания щупа генерация _кажется_ не срывается.Счетчик как считал так и считает(т.е. прога видимо пашет).А активный щуп из какой нибудь буферной микрухи можно самому сделать?В ДШ прописано,что можно через буфер забирать с xtal тактовый сигнал куда нибудь для других целей.
что то вроде 155тл1
Возможно прокатит. Я не проверял.
А как фузы то выставить в UniProf? — я нажимаю в меню программы на FUSE и просто пустое окно всплывает в котором ничего нет и ничего нельзя записать…
Так бывает когда унипроф не понял что за контроллер перед ним. Он должен сначала опознать тип МК (название МК загорится возле окна с хексами)
Подскажите плиз!
По умолчанию в меге8 фьюзы стоят (CKSEL3…0=0100)т.е.8мгц от внутреннего
генератора).Мне собственно нужно то же самое.Вопрос в УНИПРОФЕ при прошивке
нужно выставлять фьюзы или будет работать с заводской установкой???
И всетаки в УНИПРОФЕ совпадает 0 и галка с даташитом при установке фьюзов
а то я чот совсем запутался (если мне нужно =0100 то выствлять =0100 ,а не
=1011 в хелпе Унипрофа толком не нашел)
ЕМНИП в меге8 по умолчанию (CKSEL3…0=0010) — 1мгц внутренний.
Если не трогать то будет так. А В унипрофе галка это ноль!
СПАСИБО понял разобрался прошил РАБОТАЕТ
Хоть здесь можно задать вопрос и получить ответ безо всякого умничания
Спасибо огромное, вчера целый вечер мудохался с UART в Proteus, в терминале какой то бред, сверял скорость, стоп биты и т.п. по 500 раз, а дело в SCKDIV8. Сенкью вери мач!
А у меня вопрос. Допустим я делаю коммерческое устройство. И хочу чтобы никто не мог выдрать прошивку из МК. Я выключаю spi интерфейс. Но ведь кто то может высоковольтным программатором оживить МК и выдрать прошивку? Ножки что ли MISO и MOSI отламывать? Это ж по варварски. Может есть метод более щадящий?
На одной плате видел как микросхема сверху стерта вместе с маркировкой. Чтоб не догадались что за чип. Тоже интересный метод.
Фуз биты поставить. Все, в том числе и на запись/чтение разных бут секторов. Также отключить dw и jtag интерфейсы
Доброго всем времени суток.
Возникла такая проблема. Начал новый проект на Tiny85. При первом программировании (CodeVision), выбрал свой МК настроил фьюзы, залили прошу. И только при попытке второго программирования заметил что этот долбаный Вижн мне выставил все LockBits. Все попытки стирания через эту же прогу окончиваются одинаково: Ничем, грит, не могу помочь, LB0=0 LB1=0.
Как можно их сбросить?
Лок биты отвечают только за возможность считать прошивку врагами. На стирание МК они влиять не должны. ПОпробуйю другой программатор.
Дешевле купить новую МК. Чем собрать новый программатор.
Нашел вот это: http://www.rlocman.ru/shem/schematics.html?di=64952. Вроде 2313 где-то была. Попробую.
Ну или попробуй другую прошивающую программу.
Нечаянно прошил фусы не так… оказывается на внешную RC сделал… восстановил)
понравилась еще вот эта штука, как GUI к avrdude, которым прошиваю. Есть версия и под винду и под линукс. Хорошая штука. DI, gui которую ты описывал, только под винду к сожалению…
PS: для 5-проводков надо в папочке conf указать stk200, по умолчанию стоит stk500, порт указать /dev/parport0 и запускать через gksu, от имени root, иначе пишет запрещен доступ к порту.
http://www11.ocn.ne.jp/~maracas/avrfuse.html
Нечаянно прошил ATtiny2313-20 CKSEL=0000 SUT=10 и CKDIV8=1. Пробовал оживить её кварцами на 2,8,16Мгц, пальцем =) и потом воспользовался тактовым генератором от ftbb программатора. Подсоединил его к ноге XTAL1 и… ничего. Может я что-то не так делаю, или же придется паять генератор? У меня есть генератор на 50 гц на мультиметре, но я не знаю, как его юзать.
Шил вот эти фузы -U lfuse:w:0xe0:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m .
Заранее спасибо.
ты ее на тактовый генератор вкрутил. По идее с FTBB должно было ожить, только может у тебя там генератор не работает?
Хм… каким магическим образом он не работает. Ну во всяком случае сделаю отдельный тактовый генератор, а какая частота микросхеме нужна?
Да мегагерц вполне хватит.
Всем привет. Столкнулся я тут с такой бедой… По криворукости прошил фьюзы меги1280 CKSEL30 в [ 0100 ]. Это как я понял на внешний часовой кварц 32,768КГц. Купил в местном ларьке из спичечного коробка соответствующие деталюхи ( без маркировки и видно что не 1ой свежести ). Из 3х 2а оказались рабочими. Поставил, включил, работает, только в разы медленнее. А надо то мне всего-то переставить фьюзы. Использую мастеркитовские bm9010 и bm9009. Оба выдают ошибку аля «error entering in program mode». Пробовал программаторами из CodeVisionAVR, ПониПрогом, АВРеалом… Вижу как ресетится камень. Пробоввал шить другие камни — все ок. мега1280 покупал в дочерней плате BIGAVR MCU CARD. стоит оно 1,5к руб. Жалко очень. Где я неправ? с какой стороны еще подступиться? паралельного программатора в наличии нет.
Пожалуйста, помогите!
Просто твой программатор ломится в кристалл на большей частоте чем тот может переварить. ПОпробуй поискать там опции настройки частоты прошивки и выставить как можно ниже.
Спасибо. Прешил фьюзы при помощи AVReal на низкой частоте. Пациент жив, чувствует себя хорошо и готов гнать GPS данные по GSM ;)
Привет народ! В синапрог и в аврпрог при выборе источника тактирования возле времени старта есть еще загадочные циферки и буквы например:
1K CK +0 ms
1K CK +4 ms
1K CK +64 ms
16K CK +0 ms
16K CK +4 ms
16K CK +64 ms
258K CK +0 ms
258K CK +4 ms
258K CK +64 ms
Что это за 258К СК, 16К? В тексте вроде как об этом не говориться.
Это задержка запуска после ресета. Т.е. ресет сняли (или питание подали), а мк ждет тикая счетчиком заданое количество СК и только потом стартует. Полезно когда надо дождаться инициализации всякой периферии, окончания переходных процессов и прочее.
Ага спасибо, полезная информация. А скольким тактам равно допустим 258СК? Тем же 258 тактам?
Ну и в принципе, зачем нужны эти 258СК если я уже выбрал 64 ms? МК и так стартанет только через 64 ms.
Где ты выбрал 64мс? Там нельзя выбирать миллисекунды, можно только число тактов после ресета. Контроллер же не знает какой у тебя кварц запущен.
Ну да точно это не могут быть миллисекунды. Ступил. Просто в выпадающем списке есть например:
258K CK +64 ms или
16K CK +64 ms или
1K CK +64 ms
Так скольким тактам равны все эти числа? Везде стоит 64ms но разные СК.
Понятия не имею чо эти хачи имели ввиду. Открой даташит да посмотри.
По совету твоему открыл да посмотрел.
258K CK, 16К СК, 1К СК, длительность задержки при выходе из режима выключения и экономичного режима.
64ms это дополнительная задержка после сброса. Извини что напрег малек. Думал может помниш навскидку. В следующий раз буду всегда рыть сам, потом если что спрашивать.
Я на вскидку никогда вообще ничего не помню. Ну может быть разве что самые самые ходовые значения, вроде битов настройки таймера, да и те по символическим именам только. Предпочитаю по быстрому в даташит глянуть (главное знать куда!). Т.к. работаю одновременно с разными контроллерами (сейчас вот авр и армы двух видов, раньше был с51 и авр) и все в голове держать только мозги засорять.
Доброе ночи!
По глупости выставил на atmega8 неправильные фьюзы (по тактированию), ставил несколько разных кварцев с конденсаторами — все бестолку. Хотел уже идти к DI HALT`у с пивом (все равно в Челябе живем), но интересно восстановить самому. Потом нашел в загашнике at90s8535 и от неё прикурил мегу — заработало и стало определяться программатором. Пользуюсь UniProf`ом, читает флэш и фьюзы, но при попытке стереть или изменить фьюзы чтобы задать тактирование от внутреннего, все вешается в ноль. В чем может быть причина?
Приветствую.:)
Хотелось бы уточнить:
«JTAGEN — Включить JTAG. По умолчанию активна. Т.е. JTAG включен. Из-за этого у MEGA16 (а также 32 и прочих, где есть JTAG) нельзя использовать вывода порта C, отвечающие за JTAG. Но зато можно подключать JTAG отладчик и с его помощью лезть контроллеру в мозги.»
Тобишь, если твердо намериваешься пользоваться Jtag-ом, то на порт С нельзя вообще вешать никакую внешнюю переферию? Только разъем Jtag?
Или просто нельзя пользоваться внешней переферией подключенной к порту С (или где там висит Джтаг) во-время работы с Jtag-oм, т.к. оная может начать себя неадекватно при этом вести?
Не совсем так. Дело в том, что пока жтаг включен то эти линии порта не отвечают вообще ни на какие команды. Т.е. словно регистры порт, пин и ДДР не про них. Не весь порт, а только четыре линии отвечающие за жтаг. Причем жтаг можно вырубить программно, сняв бит в регистре вроде бы sfior.
Tiny2313
Были такие фьюзы:
[IMG]http://s16.radikal.ru/i190/1104/a1/8bc782bb22cb.png[/IMG]
Напаял кварц на 20Мгц, два дисковых конденсатора. Поставил такие фьюзы:
[IMG]http://s016.radikal.ru/i336/1104/fb/1b718a74da65.png[/IMG]
МК не откликается. Напряжение пробовал поднимать (вплоть до 4*1.5=6 Вольт от батареек), ничего не меняется, потребление 6 мА. Это я фьюзы не правильно выставил, или в монтаже кварца косяк?
А другая колонка (Fuse High)? Если ты записал в нее то, что я увидел на картинках (все нули), то ты убил кристалл. (выключил RESET) и это больше вроде бы не лечится. Т.к. в 2313 есть бага не позволяющая этот бит сбросить высоковольтным программатором.
http://s47.radikal.ru/i115/1104/57/062a54b3c5d5.png
Только low записал. Нашел косяк в монтаже. МК завелся на 20Мгц от 3.8 вольта.
Спасибо)
Хех знач унипроф шьет их не всем скопом. Хорошо. Но на будущее вначале читай все, а потом только правь.
Я восстанавливаю МК после косячных фузов -без танцев с бубном собрал простой девайс *fusebit doctor* нажал кнопочку секунда и камень новенький как с магазина!
Еще один калькулятор: http://flowcode.info/index.php/avr-fuses
Здравствуйте. Я использую программатор STK500, и среду AVR Studio, когда выставляю FUSE биты, то бит SPIEN стоит галочка в сером фоне и с красным знаком вопроса, снять галочку немогу и ето на любом микроконтролере. Хочу узнать это так должно быть или это какой глюк?
Зарание большое спасибо….
Di halt, прив! Читал даташит про FUSE, написано, что в регистре GISP бит IVSEL тоже имеет какое то отношение к конфигурированию Bootloadera.. но какое че т не вкурил(
в кратце не расскажешь?
Этот бит позвляет перебросить таблицу векторов в бутсектор, что дает возможность в бутлоадере использовать прерывания.
Здравствуйте. Я тоже накололся с различием фьюзов в uniprof и ponyprog. Выставил все с точностью наоборот в ATmega128 вместо этих фьюзов http://img24.imageshack.us/img24/9305/msavrsecbitshfusec4.jpg
Прошивку и фьюзы считать могу, а поменять их — нет. Что можно сделать в моей ситуации? Микруха в корпусе TQFP64, вряд ли мне поможет параллельный программатор…
Доброго времени суток!
Столкнулся с проблемой:
Нужно было запустить USART на mega8, написал программу выставил скорость скорость порта
под кварц на 4МГц, программатор AVR910USB от мастер кит, программа — AVRprog встроенная в AVR
studio. Прошил, usart не работает, замерил частоту на выводе МК XTAL — 1МГц, залез в секцию advenced там стоит «int RCosc, Frequency 1Mhz», поставил «ext EXTAL, Medium frequency», нажал write
После этого чип перестал откликаться, программа ругается: can t enter programming mode!.
Попробовал другой мк, откидывал кварц и синхронизацию — всё то же. Что делать?
Понять ,что сделал этот мастеркитовский клон с фузами. Попробуй внешний генератор подцепить, попробуй RC подцепить, кварц поставить. Что то одно да сработает.
Вопрос не совсем по фьюзам, но тем не менее: какую форму имеют колебания на выводах XTAL1-XTAL2 когда к ним подключен кварц и МК тактируется от него? Подключил часовой кварц 32768 Гц, всё работает, но смущает, что осциллограф показывает на XTAL1 практически чистую синусоиду, а на XTAL2 — немного несимметричную, с пологим подъемом и более крутым спадом. Насколько можно быть уверенным, что кварц работает именно на заданной частоте, что она не изменяется например за счет подключаемых активным фьюзом CKOPT внутренних конденсаторов по 36 пФ?
Ну так примерно и есть. На одной ноге чистый синус, а на другой всякая хрень. Возьми да по чистому синусу посчитай частоту.