ATtiny13 и 85 "сломал" загрузчик

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Всех приветствую.

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

После записи загрузчика теперь постоянно выдаёт ошибку:

Перевод:

avrdude: ожидаемая подпись для ATtiny85 - 1E 93 0B

          Дважды проверьте чип или используйте -F для отмены этой проверки.

Теперь скетч не загрузить, при попытке прошить загрузчик - такая же ерунда.

Подскажите, что делать дальше и где я шагнул не так? Как использовать -F для отмены проверки?

 

b707
Offline
Зарегистрирован: 26.05.2017

так какую сигнатуру то выдает? - если одни нули, то значит чип не отвечает и опция -F не поможет.

По секрету скажу - опция -F вообще практически никогда не помогает

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

b707 пишет:

так какую сигнатуру то выдает?

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.

 

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

На какую частоту настраивал тиньку прошлый раз?

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

И да, при многократных попытках записать скетч, все время меняется

avrdude: Device signature = 0x00ff00

"0" и "f" меняются местами и кол-вом.

 

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

anatoli_nik пишет:

На какую частоту настраивал тиньку прошлый раз?

Максимальная. У 85 - 20 Mhz, у 13 - 9,6 Mhz.

Хотел замерить потребление тока на максималках и минималках.

rkit
Offline
Зарегистрирован: 23.11.2016

В фузах был установлен кварц, скорее всего. Соответственно без кварца ничего работать не будет в принципе. Соответственно, нужно его припаять. С конденсаторами. Но проще выкинуть.

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Решил проблему!

Подробно 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

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

rkit пишет:

В фузах был установлен кварц, скорее всего. Соответственно без кварца ничего работать не будет в принципе. Соответственно, нужно его припаять. С конденсаторами. Но проще выкинуть.

Если во фьюзах был "установлен кварц", то паять его не обязательно. Достаточно подать тактовую от внешнего генератора на соответсвующую ногу.

Green
Offline
Зарегистрирован: 01.10.2015

А частота берётся с UNO программатора.

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Green пишет:

А частота берётся с UNO программатора.


Можно поподробнее.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Beijo2908 пишет:

Решил проблему!

Подробно 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-ый оптрон....

Green
Offline
Зарегистрирован: 01.10.2015

Beijo2908 пишет:
Green пишет:

А частота берётся с UNO программатора.

Можно поподробнее.

Таймер1 или 2 настраивает на выдачу 1..8 мгц, подключаете.

Green
Offline
Зарегистрирован: 01.10.2015

trembo пишет:
Интересный способ подачи 12 Вольт - замыканием его на землю когда нужно выключить. Странные люди, они наверное никогда не видели и не слышали про 817-ый оптрон....

Смотря какой источник. Если с брелка, то не очень.)

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

trembo пишет:

Но ведь сработало же... Результат превзошел все ожидания.

А лучше, нарисуйте правильную схему и порядок действий. Я себе, и не только я наверно, на заметку возьму.

RG22EM
Offline
Зарегистрирован: 27.08.2016

пожалуй подпишусь, батарею 12v видимо надо перевернуть плюсом на ресет

bizzon
Offline
Зарегистрирован: 29.03.2016

trembo пишет:
Beijo2908 пишет:

Решил проблему!

Подробно 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-ый оптрон....

Так ещё и 12 вольт вверх ногами. Или мне кажется? У батареи длинный плюс,короткий минус.

Эх, опередили.)

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Схема косячная, не спорю)

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Вот истинная причина "сломанного" загрузчика. Всё дело в SPI.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Для этого на Usbasp перемычка есть. JP2

Green
Offline
Зарегистрирован: 01.10.2015

Если загонишь в низа, то и перемычка не поможет.( 

Green
Offline
Зарегистрирован: 01.10.2015

Beijo2908 пишет:


Дядя, не надо так категорично.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Green пишет:

Если загонишь в низа, то и перемычка не поможет.( 

для таких задач, када-то давно, я купил TL866A и теперь вус недую.

Вот, https://aliexpress.ru/item/4000068668665.html , но надо дешевле поискать, я за 1400 брал, примерно. 

Теперь, когда плотно занялся тиньками, понял, какой я был малодец, что заказал

Green
Offline
Зарегистрирован: 01.10.2015

AVReal (почти 5 проводов)) запрограммирует из любого состояния - можно и тактировать, и задать любую скорость. 866-го у меня нет, но как то приходилось использовать для экзотики, выручил.

 

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Покопался в даташитах 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);
    }
}

Если код запустить без

CLKPR = 0b10000000;
CLKPR = 0b00000000;

То из-за активированного фьюза CKDIV8, логическая единица в 1-ом бите порта "В" будет чередоваться с нулём раз в 8 секунд не смотря на наш _delay_ms(1000).

Но, включив данный регистр и настроив его биты по первой строчке согласно таблички

мы получили чередование 1 и 0 раз в 1 секунду. Отсюда возникает 3 вопроса:

- Настройкой битов CLKPS0...3 мы настраивам CKDIV8?

- Повлиял ли я на частоту работы МК?

- Не заблочится ли мой SPI при настройке CLKPS0...3 в нули как в случае отключения фьюза CKDIV8?

Green
Offline
Зарегистрирован: 01.10.2015

Какие то странные вопросы... Если стоит CKDIV8, то частота будет 1200, а т.к. delay(1000) указан для F_CPU 9600, то реально будет в 8 раз длиннее. Ну, и коль CLKPR настроили на 1:1 и стало 9600, повлияли ли на частоту?)

Green
Offline
Зарегистрирован: 01.10.2015

Хотите "сломать" МК? Поставьте хотя бы 1:128.

Beijo2908
Beijo2908 аватар
Offline
Зарегистрирован: 07.02.2019

Green пишет:

Какие то странные вопросы... Если стоит CKDIV8, то частота будет 1200, а т.к. delay(1000) указан для F_CPU 9600, то реально будет в 8 раз длиннее. Ну, и коль CLKPR настроили на 1:1 и стало 9600, повлияли ли на частоту?)

Просто порыскав в инете я ни где не сталкивался с этим видом настройки CKDIV. Везде пишут что его отключают или включают через высковольтный программатор и всё, а тут заглянул в даташит и на тебе.

Я новичек в этом деле. Перехожу с Ардуино на прямое управление регистрами.