close


半年前, 因為台灣稔熟的那家沒有 20Mhz DIP8 的版本, 於是在淘寶, 深震賽格的一家買了20顆 ATTINY13, 郵寄收件後, 過了3個月才回家看到, 已經心知不妙.

WHY? 很簡單, DIP8 的 8 只腳都有 [整腳] 的痕跡, 就是上過錫, 再拆下來, 重新整理, 當新品賣. 不要懷疑, 大陸最多就這種, 尤其是淘寶的商家, 甚至親身去賽格, 都是馬上跑去不知道哪裡哪裡給你拿貨的, 特別是零買的, 批發的還好一些, 但有時被盜竊都不敢報案, 因為很多人偷賣電子廠的零件, 很多無良商人就靠這興家創業, 來源不明或不可告人的, 報案只會自找麻煩. 部分是拆舊板的零件販賣, 算是環保的一種, 買來 DIY 實驗用無所謂, 買來做產品就小心會有可靠性的疑慮. 所以估計這些 ATTINY13 應該燒寫過或鎖死, 一般的 ISP PROGRAMMER 無法讀取.

今日終於要用到, 一試果然中招, 選了三顆實驗, 完全無法連接.




不知道該不該把那些商人稱作 [死剷].......不過還是留點口德給自己加福氣好了.

動手實驗能否用高壓 PROGRAMMER 清理乾淨, 鬼佬稱之為 unbrick.

brick = 磚塊, 磚頭, 一塊無用之物

un-brick = 反意詞, 最初看到是 iPhone 改機時. 意思是讓一塊無用之物復活.




Google 看到以下人家的經驗.
http://www.vk2zay.net/article/167

http://home.ict.nl/~fredkrom/pe0fko/Fuse-restore-ATtiny45/




ATTINY13 的 DATASHEET 關於 高壓 PROGRAMMER 的描述




進入 高壓 PROGRAMMER 燒寫的方法

1) SDI, SII, SDO, RESET, VCC 接地
2) VCC 接到 4.5V - 5.5V, 保證 VCC 在20us 內超過 1.8V
3) 等待 20 - 60us, 然後 RESET 接 12V (最少 100ns)
4) 維持以上狀態最少 10us (此時應該已經進入了高壓模式)
5) 斷開 SDO 的接地, 避免搶奪, 短路
6) 等待最少 300us, 然後才操作 SDI 和 SII 對 ATTINY13 讀寫
7) 斷電離開或 RESET 接地便可脫離高壓模式



其中一位名為 Alan Yate 的仁兄 (http://www.vk2zay.net/article/167), 在他的網誌提供了源碼, 她的設計是用 LINUX 系統, 以 PC 的 LPT 連結 ATTINY13, 然後控制四條線的訊號, 完成清除和重設 FUSE BIT & LOCK BIT 的動作, 也就是完成 unBRICK, 讓他的 ATTINY13 能再次用普通的 ISP 讀寫. 可是他並沒有完全把線路圖的設計公開. 只是推敲他的源碼和基本資料的關連, 不難複製他的作品. 但為了省事, 還是到他的 BOLG 留言, 希望他能公開更多的細節, 方便複製, 但是也不期望可以如願, 畢竟願意分享是幫忙, 不願意是正常.


所以簡單的看看人家的源碼, 雖然用 C 語言寫的東西很多都看不明白, 但大致上還可以理解, 以下再以簡單對比, 看看 C 寫的和 x86 的 ASM 有何關係, 看完就大概理解人家做過什麼, 仿製的成功機會有多高.








對照研究後, 原來 C 語言也不太難明白. 例如,

~, 補數, 或 NOT
|, 加數, OR
&, AND



所以, d &= ~SCL, 這一條C的語言, 電腦CPU執行的步驟是,

1) SCL = 4, 先取得補數, 原理如下,

數字4, 8位元 或 8 bit, 二進制就是 0000-0100, 補數就是把0變成1, 把1改做0,

00000100, 二進制, 8位元 或 8 bit, 十六進制寫成 0x04 或 04h
11111011, 二進制, 8 位元, 十六進制寫成 0xFB 或 0FBh

因為現在的 X86 CPU 是 32bit, 所以 0x04 或補數可以寫成如下
00000000-00000000-00000000-00000100 = 04h
11111111-11111111-11111111-111110111 = 0FFFFFFFBh

2) d = d & 4的補數

3) 執行以上運算後, d 的值已經更新, 完成



稍稍學了一點 C 語言
http://en.wikipedia.org/wiki/C_%28programming_language%29



下一步要把線路搭起來, 實際看看能不能用.

2009-09-12
今日看看原作者的網頁, http://www.vk2zay.net/comment/167
留言發表了, 可是還沒有回應.

所以自己搭起個棚之後, 研究了基本資料, 稍微修改了線路的結構. 運氣不錯, 直接在 LINUX, TERMINAL 內執行以下,
sudo ./ hv-programmer

結果是 OK 的, 所以源碼裡面有些瑕疵的句法也懶得修改了.



改完 LOCK BIT 之後, 把這些解鎖的 ATTINY13 再放到普通的 ISP 讀寫也順利成功了.



後話 :
 12V 的上升要有一定的 DAMPING, 不然還是無法進入高壓模式, 20顆其中的一顆, 無論如何都無法讀取, 可能是壞掉, 也有可能是自己搭起那個棚不是完全滿足 DATASHEET 寫的要求, 唯有丟在旁邊, 暫時不理.

完畢.

arrow
arrow
    全站熱搜

    xiaolabaDIY 發表在 痞客邦 留言(1) 人氣()