並行編程
最早的編程方法
功能最強大
但需要連接較多的引腳
通常需要
V~
V的高壓
以示區別
下面稱為 高壓並行編程
ISP(In System Programmability) 在系統編程
簡稱為 串行下載
IAP(In Application Programing) 在應用編程
BootLoader也是類似的意思
ISP雖然利用了SPI接口(例外
M
/M
為UASRT
接口
Tiny
等沒有SPI接口)的引腳
但只在復位時起作用
而且下載完成後合格的下載器會自動斷開端口的連接
對正常工作時沒有影響的( 在產品應用中
下載器一定是不會一直粘在上面的)
雖然高壓並行下載能修復任何熔絲位
但對於貼片封裝來說是很不現實的
所以ISP接口是最常用的下載方式了
雖然IAP是一種新的升級方法
但IAP程序本身也是要先用高壓並行下載或ISP來燒進芯片裡面才行
Tiny
等少管腳AVR芯片因為管腳實在太少了
有ISP
但沒有[高壓並行編程]而特制了[高壓串行編程]
所以
產品上一般都留有ISP接口插座
或更省位置的
留
個焊盤就行了
ISP的工作前提
芯片沒有物理損壞
芯片的SPIEN熔絲位=
使能ISP功能
芯片的RSTDISBL熔絲位=
RESET引腳有效 (假如芯片有這個熔絲位)
線路正常
接錯線? 短路?
下載器正常
特別要考慮 連線的接觸不良問題
電源
運行時鐘 ISP時鐘(必須低於運行時鐘的
/
)
Hz <
Hz //很變態的用法
外接
KHz晶體+CKDIV
不過AVRISP還是提供了
Hz這個速度了
//另一簡易解決辦法是 下載時在
KHz晶體並聯一個
MHz晶體
雙龍的下載線就配有一個
MHz的石英晶體
Hz <
Hz
KHz <
KHz //內部RC
KHz
MHz <
KHz //默認值(包括
MHz+CKDIV
)
所以AVRISP的ISP速度多為
KHz
MHz <
KHz
MHz <
KHz
運行時鐘不等於震蕩器的頻率
因為部分AVR芯片有系統時鐘預分頻器
可以對震蕩器進行
~
分頻
CKDIV
熔絲位決定CLKPS位的初始值
若CKDIV
未編程
CLKPS位復位為
;若CKDIV
已編程
CLKPS 位復位為
給出啟動時分頻因子為
AVRISP可提供的ISP時鐘
KHz
KHz
KHz
KHz
KHz
Hz
STK
可提供的ISP時鐘
MHz
KHz
KHz
KHz
KHz
Hz
時鐘設定 ISP方案
內部RC 選擇合適的ISP速度
外部RC 接上合適的電阻和電容
選擇合適的ISP速度
補救
外部時鐘源接到XTAL
外部RC 根本就沒有什麼意義
頻率精度/穩定度不高
成本也沒有降低
所以新的AVR芯片已經沒有這個選項了
各位網友要注意的是錯誤設定後補救方法
外部晶體 接上合適的晶體
選擇合適的ISP速度
補救
外部時鐘源接到XTAL
外部時鐘 接上合適的時鐘源
選擇合適的ISP速度
補救
外部時鐘源接到XTAL
外部時鐘源可以是 外部(
MHz)有源晶體輸出
其他MCU的XTAL
腳
各種方波振蕩電路(NE
)輸出等
大部分AVR芯片的ISP端口是 SCK
MOSI
MISO
RESET
而M
/M
的ISP端口是 SCK
PDI
PDO
RESET
而且M
/M
出廠默認兼容M
熔絲位M
C=
很多新特性不能使用
程序也可能不能正常運行
因為C編譯器通常默認自動把SP指向SRAM的末端
M
=
x
FFFH
M
/M
=
x
FFH
必然出錯!
AVR的所有熔絲位均是
未編程
多為不起作用的意思
編程
多為 起作用的意思
基於可編程工藝的都是這樣
PROM/EEPROM/FLASH都是出廠時和擦除後變為全
(
xFF)的
要編程才能變成
反過來就是了
跟CE/OE/INT都是[低電平有效]一樣
都是很常見
在ISP模式下永遠不能訪問(修改)SPIEN位
這是AVR芯片的硬件保護
有獨立RESET腳的M
/M
/M
/M
等
在ISP模式下根本就就不會令ISP無效
無論如何修改熔絲位
都能恢復正常
M
/M
/M
/M
/Tiny系列有RSTDISBL熔絲位可以令導致RESET失效而令ISP無法工作外
其他情況都能恢復正常
一般來說
只要滿足ISP的工作前提
再把XTAL
接到一個
MHz有源晶體的輸出
基本是萬試萬靈的
不要忘記
並行高壓編程的時鐘信號也是從XTAL
導入方波信號的
如果有源晶振的方法不行(除了ISPEN=
RSTDISBL=
情況外)
恐怕高壓編程也未必能奏效
JTAG的影響(M
M
M
等)
JTAG能訪問 SPIEN 和 JTAGEN
要是不小心同時改成SPIEN=
JTAGEN=
將會導致MCU鎖死
需要高壓並行編程才能恢復
DebugWIRE的影響
(M
M
M
T
等
數據手冊裡面的資料不是很詳細)
由於DebugWIRE使用RESET腳來通訊
所以跟ISP有所沖突
可以通過ISP或並行高壓編程來使能DebugWIRE功能[即DWEN=
]
使能DebugWIRE功能後
ISP功能失效
可以通過DebugWIRE來關閉DebugWIRE功能[即DWEN=
]
關閉DebugWIRE功能後
如果RSTDISBL=
SPIEN=
ISP功能有效
比較特殊的是 DebugWIRE調試中
斷點的使用會降低Flash 數據記憶時間 DebugWIRE調試用的器件不能發給最終客戶
JTAG MKII同時具備JTAG/DeubgWIRE/ISP三種功能
可以輕松實現DebugWIRE/ISP的切換
(軟件需要升級到
版以後 即對應AVRstudio
以後版本)
最新版本 JTAG MK
使用說明中文pdf(
)
設計使用debugWIRE 的系統時
必須進行下面的檢查
? dW/(RESET) 的上拉電阻不得小於
kΩ
debugWIRE 並不需要上拉電阻
? 將 RESET 引腳與 VCC 直接連接將無法工作
? 使用debugWIRE 時必須斷開與RESET 引腳連接的電容
? 必須斷開所有的外部復位源
From:http://tw.wingwit.com/Article/program/qrs/201312/30120.html