Hôm nọ tôi đang viết một chương trình cho ATtiny2313 . Khi nó hoạt động, tôi quyết định thử nghiệm nó ở các tốc độ đồng hồ khác nhau có sẵn và được lập trình thông qua cài đặt LFUSE như được mô tả trên trang 158.
- Tốc độ xung nhịp mặc định là 1 MHz;
- Vì vậy, tôi đã thử 8 MHz tiếp theo và tất cả đều hoạt động tốt;
- Sau đó, tôi đặt tốc độ xung nhịp cho 4 MHz với / 8-prescaler dẫn đến xung nhịp 500kHz.
Mặc dù bộ điều khiển chạy chương trình với tốc độ mong đợi, lập trình viên của tôi từ chối lập trình lại bộ điều khiển kể từ đó. avrdude
(5.11.1) chỉ cần ném một cái tên nổi tiếng: 'Yike!':
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Tôi đã thử thêm -F
cờ, nhưng tất nhiên là không được.
Dưới đây là một số đoạn mã tôi đã sử dụng và thay đổi tốc độ xung nhịp như mong đợi:
// 0.5MHz
FUSES = { .low = 0x62 , .high = HFUSE_DEFAULT , .extended = EFUSE_DEFAULT , };
// 1MHz (default)
FUSES = { .low = 0x64 , .high = HFUSE_DEFAULT , .extended = EFUSE_DEFAULT , };
// 8MHz
FUSES = { .low = 0xe4 , .high = HFUSE_DEFAULT , .extended = EFUSE_DEFAULT , };
Để lập trình, tôi sử dụng một Arduino với bản phác thảo ArduinoISP (phiên bản 04m3) đi kèm với Arduino IDE 1.0.1.
Đây là lệnh để lập trình flash:
avrType=attiny2313
avrFreq=1000000
programmerDev=/dev/ttyUSB003
programmerType=arduino
avrdude -p$(avrType) -c$(programmerType) -P$(programmerDev) -b$(baud) -v -U flash:w:$(src).flash.hex
Đây là lệnh để lập trình các cầu chì:
avrdude -p$(avrType) -c$(programmerType) -P$(programmerDev) -b$(baud) -v -U lfuse:w:$(src).lfuse.hex
Câu hỏi của tôi có hai mặt:
- Lý do tôi không thể lập trình bộ điều khiển sau khi đặt nó thành xung nhịp 500kHz (trong khi chương trình trong bộ điều khiển dường như chỉ chạy tốt);
- Các tùy chọn của tôi để lập trình lại các cầu chì mà không cần sử dụng một lập trình viên HV là gì? Có lẽ tôi đã bỏ lỡ bất kỳ cờ hữu ích
avrdude
?
BTW: Có cùng một vấn đề một lần với ATtiny45 @ 128kHz. Lập trình HV giải quyết nó, nhưng tôi muốn ngăn chặn tình trạng HV.