ATtiny13 и 85 "сломал" загрузчик
- Войдите на сайт для отправки комментариев
Ср, 12/02/2020 - 20:40
Всех приветствую.
Начал увлекаться Тиньками 13 и 85. Скачал необходимые файлы чтобы прошивать через Arduino IDE. В роли программатора использовал UNO. Работало, прошивал скетчи, было всё хорошо. Но тут решил поменять тактовую частоту и на просторах интернета везде пишут мол просто нажми "Записать Загрузчик". Загрузчик не запишется в силу его отсутствия, а частота поменяется и прочее...
После записи загрузчика теперь постоянно выдаёт ошибку:

Перевод:
avrdude: ожидаемая подпись для ATtiny85 - 1E 93 0B
Дважды проверьте чип или используйте -F для отмены этой проверки.
Теперь скетч не загрузить, при попытке прошить загрузчик - такая же ерунда.
Подскажите, что делать дальше и где я шагнул не так? Как использовать -F для отмены проверки?
так какую сигнатуру то выдает? - если одни нули, то значит чип не отвечает и опция -F не поможет.
По секрету скажу - опция -F вообще практически никогда не помогает
так какую сигнатуру то выдает?
0xff00ff
Более подробный отчет
avrdude: Version 6.3-20190619 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "D:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" Using Port : COM8 Using Programmer : stk500v1 Overriding Baud Rate : 19200 AVR Part : ATtiny85 Chip Erase delay : 400000 us PAGEL : P00 BS2 : P00 RESET disposition : possible i/o RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 12 4 0 no 512 4 0 4000 4500 0xff 0xff flash 65 6 32 0 yes 8192 64 128 30000 30000 0xff 0xff signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 Programmer Type : STK500 Description : Atmel STK500 Version 1.x firmware Hardware Version: 2 Firmware Version: 1.18 Topcard : Unknown Vtarget : 0.0 V Varef : 0.0 V Oscillator : Off SCK period : 0.1 us avrdude: AVR device initialized and ready to accept instructions Произошла ошибка при загрузке скетча Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0xff00ff avrdude: Expected signature for ATtiny85 is 1E 93 0B Double check chip, or use -F to override this check. avrdude done. Thank you.На какую частоту настраивал тиньку прошлый раз?
И да, при многократных попытках записать скетч, все время меняется
"0" и "f" меняются местами и кол-вом.
На какую частоту настраивал тиньку прошлый раз?
Максимальная. У 85 - 20 Mhz, у 13 - 9,6 Mhz.
Хотел замерить потребление тока на максималках и минималках.
В фузах был установлен кварц, скорее всего. Соответственно без кварца ничего работать не будет в принципе. Соответственно, нужно его припаять. С конденсаторами. Но проще выкинуть.
Решил проблему!
Подробно https://habr.com/ru/post/249967/ и можно тут https://tsibrov.blogspot.com/2019/04/unlocking-attiny85.html
Вместо биполярника использовал N-полевик.
85-ая завелась, ща 13-заведу.
UPD: 13-ая тоже завелась - всё в норме!
P.s. Дефолтные фьюзы 13-ой тиньки подсмотрел в симуляторе Atmel Studio 7
В фузах был установлен кварц, скорее всего. Соответственно без кварца ничего работать не будет в принципе. Соответственно, нужно его припаять. С конденсаторами. Но проще выкинуть.
Если во фьюзах был "установлен кварц", то паять его не обязательно. Достаточно подать тактовую от внешнего генератора на соответсвующую ногу.
А частота берётся с UNO программатора.
А частота берётся с UNO программатора.
Можно поподробнее.
Решил проблему!
Подробно https://habr.com/ru/post/249967/ и можно тут https://tsibrov.blogspot.com/2019/04/unlocking-attiny85.html
Вместо биполярника использовал N-полевик.
85-ая завелась, ща 13-заведу.
UPD: 13-ая тоже завелась - всё в норме!
P.s. Дефолтные фьюзы 13-ой тиньки подсмотрел в симуляторе Atmel Studio 7
Интересный способ подачи 12 Вольт - замыканием его на землю когда нужно выключить.
Странные люди, они наверное никогда не видели и не слышали про 817-ый оптрон....
А частота берётся с UNO программатора.
Таймер1 или 2 настраивает на выдачу 1..8 мгц, подключаете.
Смотря какой источник. Если с брелка, то не очень.)
Но ведь сработало же... Результат превзошел все ожидания.
А лучше, нарисуйте правильную схему и порядок действий. Я себе, и не только я наверно, на заметку возьму.
пожалуй подпишусь, батарею 12v видимо надо перевернуть плюсом на ресет
Решил проблему!
Подробно https://habr.com/ru/post/249967/ и можно тут https://tsibrov.blogspot.com/2019/04/unlocking-attiny85.html
Вместо биполярника использовал N-полевик.
85-ая завелась, ща 13-заведу.
UPD: 13-ая тоже завелась - всё в норме!
P.s. Дефолтные фьюзы 13-ой тиньки подсмотрел в симуляторе Atmel Studio 7
Так ещё и 12 вольт вверх ногами. Или мне кажется? У батареи длинный плюс,короткий минус.
Эх, опередили.)
Схема косячная, не спорю)
Вот истинная причина "сломанного" загрузчика. Всё дело в SPI.
Для этого на Usbasp перемычка есть. JP2
Если загонишь в низа, то и перемычка не поможет.(
Дядя, не надо так категорично.
Если загонишь в низа, то и перемычка не поможет.(
для таких задач, када-то давно, я купил TL866A и теперь вус недую.
Вот, https://aliexpress.ru/item/4000068668665.html , но надо дешевле поискать, я за 1400 брал, примерно.
Теперь, когда плотно занялся тиньками, понял, какой я был малодец, что заказал
AVReal (почти 5 проводов)) запрограммирует из любого состояния - можно и тактировать, и задать любую скорость. 866-го у меня нет, но как то приходилось использовать для экзотики, выручил.
Покопался в даташитах attiny13 и 85 и увидел раздел 6.4.2 CLKPR – Clock Prescale Register
Согласно описанию из даташита настроил регистр CLKPR. Далее написал простенький код и проверил в Протеусе
#include <avr/io.h> #define F_CPU 9600000UL #include <util/delay.h> int main(void) { CLKPR = 0b10000000; CLKPR = 0b00000000; DDRB |= (1<<1); PORTB |= 0b00000000; while (1) { PORTB |= (1<<1); _delay_ms(1000); PORTB &= !(1<<1); _delay_ms(1000); } }Если код запустить без
То из-за активированного фьюза CKDIV8, логическая единица в 1-ом бите порта "В" будет чередоваться с нулём раз в 8 секунд не смотря на наш _delay_ms(1000).
Но, включив данный регистр и настроив его биты по первой строчке согласно таблички
мы получили чередование 1 и 0 раз в 1 секунду. Отсюда возникает 3 вопроса:
- Настройкой битов CLKPS0...3 мы настраивам CKDIV8?
- Повлиял ли я на частоту работы МК?
- Не заблочится ли мой SPI при настройке CLKPS0...3 в нули как в случае отключения фьюза CKDIV8?
Какие то странные вопросы... Если стоит CKDIV8, то частота будет 1200, а т.к. delay(1000) указан для F_CPU 9600, то реально будет в 8 раз длиннее. Ну, и коль CLKPR настроили на 1:1 и стало 9600, повлияли ли на частоту?)
Хотите "сломать" МК? Поставьте хотя бы 1:128.
Какие то странные вопросы... Если стоит CKDIV8, то частота будет 1200, а т.к. delay(1000) указан для F_CPU 9600, то реально будет в 8 раз длиннее. Ну, и коль CLKPR настроили на 1:1 и стало 9600, повлияли ли на частоту?)
Просто порыскав в инете я ни где не сталкивался с этим видом настройки CKDIV. Везде пишут что его отключают или включают через высковольтный программатор и всё, а тут заглянул в даташит и на тебе.
Я новичек в этом деле. Перехожу с Ардуино на прямое управление регистрами.