2013-02-17 2 views
2

Я пытался записать программу в ATtiny2313A-PU с помощью Arduino Uno R3, используемого в качестве программиста. Сначала я попытался запрограммировать его из Arduino IDE 1.0.1 (Windows 7), и он, казалось, перекрыл эскиз, но программа мигания не работала. Тогда я нашел Michael Holachek's tutorial и следовал его указаниям:Невозможно запрограммировать ATtiny2313a с Arduino. Мой чип кирпич?

  1. загрузил ArduinoISP эскиз на мой Arduino Uno
  2. проводной схемы на макете
  3. установлен WinAVR на моем под управлением Windows 7.
  4. загруженного файла шаблона Майкла (Makefile и main.c) и отредактировал Makefile в соответствии с моими настройками (внешний кристалл 8 МГц). Я использовал this online fuse calculator для получения правильных параметров предохранителей.
  5. затем, в cmd.exe, изменил каталог в каталог, где сохранен файл сборки и main.c и побежал 'сделать вспышку'

Makefile

DEVICE  = attiny2313a 
CLOCK  = 8000000 
PROGRAMMER = -c arduino -P COM5 -b 19200 
OBJECTS = main.o 
FUSES  = -U lfuse:w:0x5e:m -U hfuse:w:0xdd:m -U efuse:w:0xff:m 


###################################################################### 
###################################################################### 

# Tune the lines below only if you know what you are doing: 

AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE) 
COMPILE = avr-gcc -Wall -Os -DF_CPU=$(CLOCK) -mmcu=$(DEVICE) 

# symbolic targets: 
all: main.hex 

.c.o: 
    $(COMPILE) -c $< -o [email protected] 

.S.o: 
    $(COMPILE) -x assembler-with-cpp -c $< -o [email protected] 
# "-x assembler-with-cpp" should not be necessary since this is the default 
# file type for the .S (with capital S) extension. However, upper case 
# characters are not always preserved on Windows. To ensure WinAVR 
# compatibility define the file type manually. 

.c.s: 
    $(COMPILE) -S $< -o [email protected] 

flash: all 
    $(AVRDUDE) -U flash:w:main.hex:i 

fuse: 
    $(AVRDUDE) $(FUSES) 

install: flash fuse 

# if you use a bootloader, change the command below appropriately: 
load: all 
    bootloadHID main.hex 

clean: 
    rm -f main.hex main.elf $(OBJECTS) 

# file targets: 
main.elf: $(OBJECTS) 
    $(COMPILE) -o main.elf $(OBJECTS) 

main.hex: main.elf 
    rm -f main.hex 
    avr-objcopy -j .text -j .data -O ihex main.elf main.hex 
# If you have an EEPROM section, you must also create a hex file for the 
# EEPROM and add it to the "flash" target. 

# Targets for code debugging and analysis: 
disasm: main.elf 
    avr-objdump -d main.elf 

cpp: 
    $(COMPILE) -E main.c 

main.c

main.c

Ниже выход я получил:

C:\Users>cd /D D:\electronics 

D:\electronics>cd nikon/mi 

D:\electronics\nikon\mi>make flash 
avr-gcc -Wall -Os -DF_CPU=8000000 -mmcu=attiny2313a -c main.c -o main.o 
main.c:6: error: stray '\342' in program 
main.c:6: error: stray '\200' in program 
main.c:6: error: stray '\250' in program 
main.c: In function 'main': 
main.c:9: error: stray '\342' in program 
main.c:9: error: stray '\200' in program 
main.c:9: error: stray '\250' in program 
make: *** [main.o] Error 1 

Я подозреваю, что мог бы наложить на предохранитель на Attiny 2313a. Если это так, я думаю, мне придется строить this AVR rescue shield. Возможно, файл Makefile был настроен неправильно? Как определить проблему? Как я могу проверить, жив ли чип?

+1

Я не вижу, как ошибка компилятора будет иметь какое-либо отношение к сломанной микросхеме. Вместо этого ваш код сломан. – 2013-02-18 06:32:41

ответ

3

Вы получаете ошибки компиляции. Я бы проверил содержимое main.c на то, что компилятор говорит вам проверить. Похоже, что в копии и вставке кода что-то было потеряно. Также

PORTD ^= (1 << PD6); // toggle PD6 

можно заменить

PIND = (1 << PD6); // or _BV(PD6), since you should be using avr-libc anyway. 

как в технических описаниях фирмы Atmel.

+0

Вы правы, TRON. Я обнаружил два странных символа в main.c (например, символ квадратного символа Юникода). Я думаю, что они не позволили мне скопировать код main.c на этот форум правильно. Я просто не мог получить правильное форматирование. Вот почему код не был добавлен в мой первоначальный вопрос. – Olexiy

+0

Теперь я добавлю скриншот main.c к исходному сообщению. Итак, после удаления этих двух символов результат сильно изменился.Теперь это работает, но есть еще одна проблема: avrdude не может найти мой чип 2313a в его файле конфигурации. 'avrdude: AVR Part" attiny2313a "not found.' Думаю, мне нужно будет отредактировать avrdude.conf. Я прав? – Olexiy

0

Хорошо, я немного искал googled и нашел, что наиболее распространенное решение, когда чипы идентичны, но имеют разные суффиксы (например, attiny2313 и attiny2313a) - использовать ключ -F для переопределения проверки подписи. Итак, я добавил ключ в Makefile DEVICE = attiny2313 -F, и мой attiny2313a был запрограммирован успешно! TRON, спасибо, что указал мне в направлении main.c! К сожалению, я не могу поддержать ваш ответ, потому что моя репутация - 11. Я все еще удивляюсь, как туда могли попасть эти квадратные символы?

Смежные вопросы