ATTiny85 Yikes! Device signature = 0x000000

DragonII
Offline
Зарегистрирован: 02.03.2015

Здравствуйте.

Пригляделся пост хабре, про музыкальный подарок.

Захотелось соорудить нечто похожее только со своими светодиодами и моторами.

Баловался, сделал включение от фоторезистора, якобы при открытии этого нечто начинает играть музыка, всё шло очень хорошо, пока не случилось вот это (использую Freeduino Nano как программатор и SinaProg как оболочку):

avrdude -C avrdude.conf -c avrisp -P com7 -b 19200 -p t85 -U flash:w:"C:\Users\Daniil\YandexDisk\attiny\prj\mb\mb.hex":a -q

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
        Double check connections and try again, or use -F to override
        this check.

avrdude done.  Thank you.

К счастью у меня несколько тинек, вынул старую, вставил новую и начал опять фантазировать, пока в этот же день не получил опять такое же сообщение. К слову, до получения 1ый раз такого сообщения я баловался где-то недели 2.

Призадумался, но продолжил менять на новые мк, пока они не кончились.

Сходил в магазин, купил ещё 1(последний в магазине). Разделил схемы программатора и моего нечто, думал случайные процессы что-то случайно делают и случайно 5ый мк подряд перестаёт работать штатно. Попробовал подключать кварц(кому-то с мегами это помогло).

Сломав и его я обратил внимание, что только при загрузке кода это происходит(фьюзы шьются нормально).

Никто не встречался с такой же проблемой? Если варианты оживить эту кучку микроконтроллеров? Может объём кода вылез за рамки?

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

 

Не читается подпись чипа,а это не есть хорошо.Программатор на непропай проверяли?Соединения все проверили?

DragonII
Offline
Зарегистрирован: 02.03.2015

Соединение есть, проверил от выводов мк на ардуине до выводов тиньки (именно выводов мк проверял, а не выводов ардуины). Проверял тестером в режиме прозвона. Проверил MISO, MOSI, CLK, SS, Gnd и Vcc. Собираю пока на беспаячной плате.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

У Вас, похоже, ресет до чипа не доходит... Или доходит, но не вовремя.

http://inet-deal.mpa.ru/articles/pro_mini_cp2102.html

Цитата:
- при подключении USBASP или другой платы по ISP (11,12,13 (MISO MOSI SCK), rst, vcc, gnd) - линию RESET надо подключать не к GRN/DTR, а к ноге с надписью RESET, которая имеет прямое соединение с чипом, а не через керамический конденсатор. Иначе вылезают различные глюки с чтением сигнатуры:
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature .......
... хотя, по внешнему виду, плата вроде бы даже и перегружается...

DragonII
Offline
Зарегистрирован: 02.03.2015

К сожалению решиение, которое приведено там, не подходит. По ссылке выше говорится о подключении по ISP к ардуино Мини, у меня Нано(нет вывода DTR). Там прошивается Мини, а я прошиваю с помощью Нано.

Вот что происходит, при подключении RST тини к RST ардуины:

avrdude -C avrdude.conf -c avrisp -P com7 -b 19200 -p t85 -q

avrdude: stk500_program_enable(): protocol error, expect=0x14, resp=0x50
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.

avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

avrdude done.  Thank you.

Ошибка инициализации.

P.S. При подключении RST тини к GND, то avrdude сообщает об отсутствии связи (sync)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

DragonII пишет:

Вот что происходит, при подключении RST тини к RST ардуины:

P.S. При подключении RST тини к GND, то avrdude сообщает об отсутствии связи (sync)

Вы прошиваете Тини через Нано при помощи скетча ArduinoISP? Там же ясно написано, что к Reset прогаммируемого МК нужно подключать 10 пин ардуины:

// slave reset: 10               
// MOSI:        11             
// MISO:        12         
// SCK:         13

P.S. Кондёр на 10uF между RST и GND на ардуине поставили?

DragonII
Offline
Зарегистрирован: 02.03.2015

Да, я понимаю, я же прошивал и не раз тиньку, поэтому подключал правильно, так как Вы и написали.

// slave reset: 10               
// MOSI:        11             
// MISO:        12         
// SCK:         13

Выдвинули предположение, я от бессилия решил проверить "а вдруг?".

P.S. Кондёр не ставил. (но до этого всё работало). Сейчас в наличии только 0,01 мкФ, если его поставить, то эффект тот же.

DragonII
Offline
Зарегистрирован: 02.03.2015

Попробовал прошить через Freeduino Uno, аналогичная ошибка.

Посмотрите, может с инициализацией беда?

.cseg
	; Interrupt Vectors (ATtiny45)
	rjmp	reset		; Reset
	rjmp	0		; INT0
	rjmp	0		; PCINT0
	rjmp	0		; TC1_COMA
	rjmp	0		; TC1_OVF
	rjmp	0		; TC0_OVF
	rjmp	0		; EE_RDY
	rjmp	0;Analog_Comp		; ANA_COMP
	rjmp	ADC_rdy	; ADC
	rjmp	0		; TC1_COMB
	rjmp	isr_tc0_coma	; TC0_COMA
;	rjmp	0		; TC0_COMB
;	rjmp	0		; WDT
;	rjmp	0		; USI_START
;	rjmp	0		; USI_OVF


;--------------------------------------------------------------------;
; Program Code

reset:
	clr	_0
	ldiw	X, RAMTOP		;Clear RAM
	ldi	AL, 0			;
	st	X+, _0			;
	dec	AL			;
	brne	PC-2			;/

;	outi	OSCCAL, 172		;Adjust OSCCAL if needed.

	outi	PORTB, 0b000000		;Initalize Port B
	outi	DDRB,  0b111111		;/

	outi	PLLCSR, 0b00000110	;Initialize TC1 in 250 kHz fast PWM mode.
	outi	TCCR1,  0b01100001	;Connect TC1 to OC1A
	outi	GTCCR,  0b01100000	;Connect TC1 to OC1B

	;outi	ACSR,	0b01001000;compare-on, 1.22 V
	;outi	DIDR0,	0b00000010

before_sleep: ;метка перед сном
	outi	OCR0A,	62		;Initalize TC0 in 32 kHz interval timer.
	outi	TCCR0A, 0b00000010
	outi	TCCR0B, 0b00000010

	;выключить перефирию, просмотрнть про диоды
	;outi	TIMSK, 0 ; Disable Timer0 interrupt
	
	outi	ADMUX,	0b00100000;вкл прерывание от АЦП
	outi	ADCSRB, 0b00000000
	outi	DIDR0,	0b00100000
	outi	ADCSRA,	0b11011111
	
	sei
	outi	CLKPR,	0b10000000 ; set 256
	outi	CLKPR,	0b00001000 ;
	outi	MCUCR,	0b00101000 ; Set sleep flag and set ADC NOISE REDUCTION
	;outi	ADCSRA,	0b11011111
	sleep
		sbis	0x18,	3
	rjmp PC-1 ;выход из сна - перепрыгнуть rjmp
	outi	MCUCR,	0b00001000 ; Clear sleep flag
	outi	CLKPR,	0b10000000 ; set 1
	outi	CLKPR,	0b00000000 ; set 256
	cli
	outi	OCR1A, 127 ; Place speaker in middle position
	outi	TIMSK, (1<<OCIE0A)


start_play:
.......

Вот проект, на ассемблере Я.Диск

Если подать ему на 1ый вывод (ADC0) лог. "1", то на динамик, подключённый к выводам 3 и 6 польётся музыка, если, конечно, я не испортил код) и на выводе 2 появится лог "1".

Проверьте, пожалуйста, может метки не там или у Вас прошьётся?