Здравствуйте! Балуюсь с тини85. Алгоритм моих действий такой: пока не получу удовлетворительный результат повторять: {Прошиваю программу тестю подправляю программу} конец алгоритма. Для этого использую Arduino Nano как программатор, а оболочка для avrdude SinaProg. В какой то момент появилась ошибка: Код (Text): 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. Не подскажете в чём проблема? Пока решаю её с помощью замены тини85. Но новая не продержалась и недели, как появилась ошибка.
Стало совсем плохо - беру новый МК, прошиваю, больше он не работает? фьюзы не прошиваю, не успеваю. Что это может значить?
Вынес все MISO, MOSI, CLK, SS, GND, Vcc на отдельную плату, прошил на ней. Пробовал подпихивать кварц. (на arduino.ru читал, что у кого то фьюзы сбивались). Купил последнюю тиньку в чип и дипе. Код (Text): ATtiny85 memory use summary [bytes]: Segment Begin End Code Data Used Size Use% --------------------------------------------------------------- [.cseg] 0x000000 0x001000 536 2630 3166 8192 38.6% [.dseg] 0x000060 0x000097 0 55 55 512 10.7% [.eseg] 0x000000 0x000000 0 0 0 512 0.0% Сигнатура не читается после заливки кода. Что может быть в коде, что так получается? Я вылезаю за допустимые рамки?
Судя по всему, что-то не то с программатором. Вообще, прежде, чем прошивать новый чип, сначала считывайте его с ключиками -v -v (подробный вывод: чем больше -v, тем подробнее) и никогда не пользуйтесь ключом -F. Если чтение прошло нормально и у вас совпадает сингнатура и есть корректное содержимое флэша, епрома, фьюзов и локов, только после этого можно начинать писать в контроллер. Если уже при чтении произошли ошибки, значит при записи проблема снова проявится и, вероятно, с худшими последствиями.
Спасибо за ответ. Я склонен полагать, что проблема была именно в программе (алгоритме), т.к. я решил заново создать проект (за основу взята всё таже программа dark_simpsona, но при этом более осторожно редактировал) - играюсь дальше, пока проблем нет.
Опять началось. Есть код, сгенерированный в CodeVisionAvr Код (Text): #include <io.h> #define SetBit(reg, bit) reg |= (1<<bit) #define ClearBit(reg, bit) reg &= (~(1<<bit)) #define InvBit(reg, bit) reg ^= (1<<bit) #define BitIsSet(reg, bit) ((reg & (1<<bit)) != 0) #define BitIsClear(reg, bit) ((reg & (1<<bit)) == 0) // Declare your global variables here // Pin change interrupt service routine interrupt [PC_INT0] void pin_change_isr(void) { // Place your code here } // Analog Comparator interrupt service routine interrupt [ANA_COMP] void ana_comp_isr(void) { // Place your code here if (BitIsClear(ACSR,ACO)) { ClearBit(PORTB,3); } else { SetBit(PORTB,3); } } void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 256 #pragma optsize- CLKPR=(1<<CLKPCE); CLKPR=(0<<CLKPCE) | (1<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Function: Bit5=In Bit4=In Bit3=Out Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB5) | (0<<DDB4) | (1<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit5=T Bit4=T Bit3=0 Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFF // OC1A output: Disconnected // OC1B output: Disconnected // Timer1 Overflow Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off PLLCSR=(0<<PCKE) | (0<<PLLE) | (0<<PLOCK); TCCR1=(0<<CTC1) | (0<<PWM1A) | (0<<COM1A1) | (0<<COM1A0) | (0<<CS13) | (0<<CS12) | (0<<CS11) | (0<<CS10); GTCCR=(0<<TSM) | (0<<PWM1B) | (0<<COM1B1) | (0<<COM1B0) | (0<<PSR1) | (0<<PSR0); TCNT1=0x00; OCR1A=0x00; OCR1B=0x00; OCR1C=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=(0<<OCIE1A) | (0<<OCIE1B) | (0<<OCIE0A) | (0<<OCIE0B) | (0<<TOIE1) | (0<<TOIE0); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-5: On GIMSK=(0<<INT0) | (1<<PCIE); MCUCR=(0<<ISC01) | (0<<ISC00); PCMSK=(0<<PCINT5) | (0<<PCINT4) | (1<<PCINT3) | (0<<PCINT2) | (0<<PCINT1) | (0<<PCINT0); GIFR=(0<<INTF0) | (1<<PCIF); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: On // The Analog Comparator's positive input is // connected to the Bandgap Voltage Reference // The Analog Comparator's negative input is // connected to the AIN1 pin // Interrupt on Output Toggle ACSR=(1<<ACD) | (1<<ACBG) | (0<<ACO) | (0<<ACI) | (1<<ACIE) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: Off // Digital input buffer on AIN1: Off DIDR0=(1<<AIN0D) | (1<<AIN1D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); // Global enable interrupts #asm("sei") while (1) { // Place your code here } } Добавил только обработку прерывания компаратора, прошиваю и опять после прошивки проблема с сигнатурой.
Сейчас ничего не менял в плане соединительных проводов, прошил старый проект на новый мк и всё в порядке...
Добрый день. Аналогичная проблема с прошивкой мк attiny85. Для этого нашел схему с пинами этой платы, прочитал и посмотрел множество статей и роликов. Решил залить на мк базовый скейч Fade, залил на свою Arduino Uno Arduino ISP, выбрал нужную мне плату и.... И тут началось самое интересное. При компиляции файла Fade выдала вот такую ошибку: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. Перепробовал множество вариантов: менял тиньку, менял arduino, менял конденсатор. Все без толку. В чем может быть проблема? (Пользовался второй схемой)
Не знаю( У меня прошивалось из ардуины, но потом я сразу начал писать программы на С. Прошивал без проблем. Потом перешел на асм, т.к. уже был готовый код на асме, но в какой то момент появились эти yikes. Создал новый проект, все туда скопировал и сделал минимальные правки, все прошивалось. Потом я решил, что нужен управитель этой системе, решил запрогать еще 1 мк, сразу начал на Си и сразу же yikes. Решил заново, но на асме - проблем не было долго, прошивал много раз, но в какой то момент опять yikes. Для тестов решил прошивать на отдельной схеме только для прошивания, но и там yikes( Я не еще не отследил причину такого эффекта. Думаю попробовать нормальным программатором, но пока не решился покупать, а до пайки еще не дошел, да и не знаю, решит ли это проблему. P.S. Си это avr studio 6 + CodeVision AVR (от hp). Асм это ассемблер avr studio 4. И в Си, и в асм имеется курение даташита, сайтов и пары книг.
Скорее всего прошивать с помощью ардуины надо как то аккуратнее. Я сменил программатор, пока нареканий нет.