沒有玻璃板這該怎麼辦呢?
測試 001.
手邊也沒有辦法找到那麼洽當可以當墊底的東西,直到找上了那本前公司某同事沒帶走,卻被我拿回來的天心寫真集,它的封面紙板硬度還夠、長寬也還能滿足條件,用它當墊底的,然後在鋪上一張噴墨用的印表紙,就這樣小試了一下。
沒有玻璃板這該怎麼辦呢?
手邊也沒有辦法找到那麼洽當可以當墊底的東西,直到找上了那本前公司某同事沒帶走,卻被我拿回來的天心寫真集,它的封面紙板硬度還夠、長寬也還能滿足條件,用它當墊底的,然後在鋪上一張噴墨用的印表紙,就這樣小試了一下。
…
還好五金行老闆幫忙湊了好一陣子,總算還能幫忙湊出四跟 M3 14 ~ 16 mm 不等規格的螺絲讓我將就著用,順道問老闆拿了把可換頭的攻牙刀。
既然有了攻牙刀,要用來轉平台底座 OID 024 這六個孔,難度就不算太高了;雖然這樣講,可是還是在其中一孔發生了慘劇,第一次鑽紋路的部份打得不夠深,球頭轉不進去了,使盡我熱愛著海賊王的傻勁,用力轉,還是轉不動 ~ .~
攻牙刀這東西應付塑膠這東西是這個樣子的,第二回合進出的螺紋,不見得能和第一回合的穩合,也就是說第二回合的攻牙,剛好把第一回合的紋全磨崩是常有的事,在這工具使用的邏輯上不難被理解,所以才會在這個出問題的孔上用力試轉看看,既然喝奶的力氣都使盡了也轉不動,就只能動用第二回合了,而且毫無意外的崩牙了 GG ~ 順便買回來的快乾,馬上派上用場 ~
為了比較順暢的安裝流程,在這個時候就順便把 滑塊機構 OID 023(x3) 共六個 M4 要裝球頭的孔都順便鑽一鑽了,以防又鑽的太淺,這次都刻意鑽比較深一點,不過就怕深到破孔而出就事了。
由於更之後的幾個組裝步驟,如集線盒、LCD 之類的,或多或少都會和擠出頭平台有組裝上的相依性在,滑軌則是獨立的系統,所以在準備弄好擠出頭平台之後,再轉進開始處理滑軌與馬達的部份 ~
本來以為,在準備收心的過程裡頭,再花一些時間,幫同學把他這台停滯有點久的 ATOM 3D Printer 的 DIY 追趕一下進度;在問過他之後,確確實實的從他手中把 DIY 的樂趣剝奪走了啊!
因為他同意讓我來完成後續的部份啦。結果又是花掉了相當多的時間在這上頭啊 ˊ_>ˋ
不過,也多虧他已經先把主框架的部份都完成了, 感覺 這樣子我應該就可以避開需要力道才能完成的作業項目了。
稍微地,額外的拿 AVR Transistor Tester 來測 最主要標的物 ,也就是,可能知道它們是什麼東西,可是壓根不曉得數值,或者是壓根兒不曉得它是什麼東西;在這種情況之下,也就等同該零件是無法使用的情況。
所以,若能透過這個裝置,得到它的相關資訊,這樣就有機會可以拿這些零件來用了!
使用 AVR Transistor Tester 來抓零件的資訊,順便測試一下這個裝置的功能,不過,手頭上的零件種類並沒有那麼多可以試的。
先從零件本身就能找到數值資訊的類型下手。也因為它們本身有標示資訊,所以比較容易比對出所謂的誤差值;不過,這邊的誤差值就不單純的只是 Tester 得到的值本身的誤差,還有廠商製作零件時所產生的誤差,所以,以整體數值來講,就是一種相對性的參考值。除非讓我去找到了什麼可以拿來校正誤差的東西。
基本上,個人對於線路、零件和 MCU 程式內容,尚未進行非常深入的研究,因此整個架構都是和上文中所提到的二改作者的是一樣的。
只不過是基於 ~ 嗯 ~ 究竟可以這樣固執的使用 25x15 規格的電木板到哪一種程度上,自己也挺好奇的啦 ~ .~
一片 30x30 的 電木板 NTD 12.0,一片 25x15 的則為 NTD 10.0,所以並沒有因為用的規格比較小片,就讓整體的製作價格減少,完全就只是固執的想要這樣試試看而已。
不然的話,就照著原二創作者的電路圖,只要再把 PCB 板上零件和線路的部份搞定就好了 ~
在感覺上停擺了好一陣子的 上一回合 - Arduino's 多功能電子元件測試電表 ─ 前傳 之後,其實是又找到些相關的資料,以及很不幸運的無法在實驗的安裝過程裡,得到正常的結果。還不得不用菜英文在該裝置的二創作者在討論區上詢問所遇到的問題。
※ 據 README 內容的理解,這位二創的仁兄無法在原創公佈的資訊當中,獲得任何授權相關的資訊,也無法與原創連繫上,用以確認此韌體授權的相關問題;為此,這個裝置的正式授權問題,暫時懸而未決,直到 2016 之後,二創作者好像會再進行相關的變更動作。
會決定中離的原因,就是因為和該二創作者詢問後的最終結論,可能是出在上傳到 MCU 裡頭的程式在認證的部份會出現問題,所以沒有辦法正常運作,所以才會跑去製作 實作 USBasp 電路圖 這個裝置的 ~
當完成 USBasp 這個裝置的初號機之後,腦袋裡頭就開始打轉的幾個令我好奇的問題:
因為之前玩過的裝置或者是 Arduino 本身,裡頭的電路基本上都是包含 石英振蕩器 這一顆零件的,若是這種狀況之下,究竟燒錄的當下,除了 MCU 本身的這些基本構成的零件,究竟需不需要存在?
在 Arduino UNO R3 原版本的裝置和電路圖上,都還有另外一顆其實也挺重要的 IC ATMega16U2 的存在,如果搭配這一顆 IC,似乎就會讓 Arduino UNO 在上傳草稿碼 sketch 變得很容易;不用像自製型簡易版那種方式,縱使透過了 USB2TTL 這一條連接線的幫助,在上傳前,還得看準時機按個 Reset 才行(而且,還是要本來就有把 Reset 考慮進去的狀況下)。如果,我使用 USBasp 的架構來替換掉這一顆 ATMega16U2,這樣也能省略掉之後的這個動作了啊,而且不用再透過 USB2TTL 這一條線;那,在這樣的狀態之下,如果兩顆 MCU 都各自使用各自的 石英振蕩器,雖然沒什麼不對,不過,不曉得能不能讓兩顆 MCU共用同一顆 石英振蕩器 的訊號?這樣可以省下一顆的費用。
讓大仁哥瘋了的歐陽修的 三上 經常是人生獲得重大 天啟 的時刻啊!
老天爺可能常給你,也可能經常不理你 ~
睡醒後,關於 USBasp 這個裝置,想到的問題是萬一重組一次還是遇到相同的狀況,豈不悽悽慘慘悽悽 ~
不然先試著用麵包板的環境,把拆下來的元件逐一換上去試看看吧!
構成 MCU 運作的主要線路上的 電阻、電容和石英震盪器 實在不想認為它們可能會出問題,所以還是先把問題重心擺到了和 USB 接頭上的 pin 腳,有主要連結關係的那幾顆元件上面好了。
在完成上一回合的 MCU Fuses 相關資訊確認後,而且確認這個 USBasp 裝置可以在目前的環境狀態之下完成,於是開始進行 使用 Fritzing 進行元件位置確認以及佈線的規劃。
經過了一番奮戰,終於得到了第一個版本,然後又對照著上頭的線路,慢慢的把這些元件和線路焊到「洞洞板」上面。
但是!本回合都完成了才遇到了這個但是!
接到電腦後依舊顯示為unknown device!
只好重新查對線路,反覆的查了好幾回合,都沒看到有焊錯的地方,也不曉得是哪一個元件出了問題?
動用三用電表來進行基本的狀態測試,以能目前腦袋裡頭的資訊能理解的狀態,這些零件應該都還能正常的工作才對。
在還不是特別清楚是哪一個環節出問題的狀況下,只好想辦法在麵包板上再重製另一個 USBasp (還好,手邊的零件還有辦法組出另一塊出來檢查)。
測試的方式:
把 MCP 燒個最簡單的 Arduino LED blink 來檢查是不是 MCU 的主要線路出問題。然後把 pin 19 & GND 的線路額外接出來測(PS 1),LED 會閃,那問題至少不會是在主要那幾個 pin 腳和 19 上頭。
讓麵包板上的 USBasp 透過其它接線來檢查是不是連接 USB D+ / D- 這兩條主要資料傳輸的線路上出問題。試著讓麵包板與電木板上頭的 pin 14 & pin 15 腳位相連,然後再將本來要連接到 USB D+ / D- 線路透過測試勾連回麵包板上頭。結果就造成麵包板上的 USBasp 也一起 unknown device 了。 =..= 所以問題可能在這 ~
和上面的方式類似,不過是反過來讓電木板上使用麵包板上本來就正常的 pin 14 & pin 15 腳位的線路。結果竟然還是得到了 unknown device 啊啊,這樣不就又表示問題可能不在 pin 14 & pin 15 上面了嗎 ~‧ ~
反覆在這些方式之間找問題點,卻都沒有找到那隻卡在這裝置和我腦袋裡頭的那隻笨虫啊!!!!
有路試到沒步,這樣在這邊打轉也得不到新花樣啊,於是在搞了三天後的睡前,把它給全拆了 ~
PS 1:都不曉得這樣倒底算運氣好還是運氣不好,ICSP 腳位剛好有 pin 19 & GND
PS 2 : USB pinout

#USBasp, #AVR
MCU Fuses 搭配的必要性
對於這個問題的疑問,追根究底的還是會回到 為什麼我插出來的 TransistortesterAVR 完全不給點正常反應,是不是除了硬體和韌體之外,這個 Fuses 的調整是必要的?
抱持著這樣的疑問,然後手邊又多出了這個 USBasp 的裝置,可以用來燒錄其它 MCU,應該可以從這當中得到答案吧!
這些實驗的過程,遇到的問題並不會比較少,不過以最後的試完之後,得到的結論,大致上都是因為這些 Fuse 設定數值上的差異,以及原本就已經有燒錄 bootloader 的 MCU 和沒有燒錄的差別,當然,過程裡頭還是會因為一些好奇心發作的關係,又讓要聚焦問題的過程,又擴散開了。 比方,對於已經擁有 bootloader 的 MCU 執行了 -e 這樣一去不回頭的參數。
因為打算讓電腦重新啟動了,所以就順便將整個 cygwin 給移除掉,可是這軟體,竟然有夠機車的沒有送上 uninstall 的,這是要人怎麼移除?這種軟體既然是透過了安裝的過程裝上來的,總不可能像綠色軟體那種方式,把目錄給砍了就成事了的吧?
還好有合理的懷疑到這種問題,就順到在這邊附上從網路上找來的 cygwin 的移除手段:
※ 通常前面兩個會跑一堆檔案,端看之前究竟裝了多少 package 而定;後面那兩個就不一定會有啥動作了,要看有沒有執行它的 server 程式吧~ 吧~ 吧~ 吧~ (因為我實在不懂它)。
※ 然後在寫這記錄時才想到,雖然昨天有看到清除機碼的動作,不過昨天忘了;所以就順便執行 regedit.exe 到上頭去把和 cygwin 相關的機碼都給砍了 ~
也從裝置管理員那邊,把這個 unknown device 的整個驅動程式給砍掉;並順道進去 windows 系統目錄裡頭,看看有沒有沒被清乾淨的,和 libusb 相關的 sys or dll 檔,都給清了。
把韌體上傳成功的 Atmega328p 改裝到 USBasp 線路的這一塊麵包板上面,然後開始了關於 libusb 的一連串的實驗 ~
以為自己對於這樣子的畫面應該是挺能應付的,以往在安裝電腦或是新的配備的時候,經常遇到的嘛!!!!
一將裝置插到 USB 延長線之後:

點了它之後,就跳出了個其實不太常看到的視窗:
這視窗和一般 M$ 給使用者操作的視窗功能不太一樣啊,並沒有辦法透過點擊視窗上面這一個 unknown device 的 list ,然後透過它來進行驅動成式的更新換者是安裝的動作。 =..=
所以還是得透過電腦或是控制台的選單進入到可以作業的地方。
然後就是透過比較熟悉的安裝過程來進行驅動程式更新的動作了。
不過,運氣當然沒有這麼好,再經過了各種選項試點啦,砍掉裝置列表上的 unknown device 啦、重新拔插 USB 連接啦 ‧‧‧
也覺得可能是電路圖上面,從 MCU pin14(PB0) 和 pin15(PB1) 出來的這兩條線路,可能在還沒確定 USB pinout 規格的狀況之下接反了之類的啦 ‧‧‧
上傳韌體到 MCU以及驅動程式的安裝。Atmega328p,所以這顆 MCU 裡頭也早已經透過 Arduino IDE 安裝了它所提供的 bootloader 了。先來點類似開胃菜的楔子 ‧‧‧
由於之前玩了好幾個星期的 TransistortesterAVR,到上週為止,仍然無法順利的讓 MCU 晶片正常運作,
而在與網友亦或是該裝置作者的問答往返當中,暫時得到的結論是,仍然得確認上傳的資料是無誤的。
而這個問題,應該也就是一開始學著使用 avrdude 指令,然後透過 Arduino as ISP 的方式進行資料上傳時所遇到的問題:
avrdude: verifying ...avrdude: verification error, first mismatch at byte 0x00000x03 != 0x08avrdude: verification error; content mismatch
這樣的問題,當時該網友也提供一些意見,他在自己所使用的 arduino2560 這版子上也有遇到過,但是事實上對於上傳的韌體內容,並沒有造成太大的問題!
拉回到上傳韌體時卻遭遇認證機制錯誤的問題上面,暫時能想到的就是,想辦法弄到一個專門拿來燒錄韌體到 MCU 上面的裝置。
然而,手邊有機會拿來當晶片燒錄器的東西,也就只有 Arduino UNO R3 這塊板子而已!
在這邊小小小慶幸一下的事情是,因為在找問題解答的過程裡頭,也發現了個 USBasp 的裝置,好處是,它也是利用 ATmega 系列的晶片就可完成的裝置,而且可以燒錄的晶片也包含相當多的 ATtmel AVR 的晶片。
也發現網路上有相當多的產品,都是依此為基礎開發出來的自製 USBasp,雖然它現在幾乎已經沒有在更新的了。
從網站上可以下載到的目前最新的檔案: usbasp.2011-05-28.tar.gz
※ 看日期就知道,也算是有夠老的了,而且很久沒更新了。
& 這個壓縮檔裡頭已經包含了驅動程式了,所以可以不用額外下載。
解壓縮後可以看到的主要檔案目錄:
| Name | Sub Dir | Descript |
|---|---|---|
| bin | firmware | 已編譯完成的韌體版本 |
| linux-nonroot | linux 驅動程式 | |
| win-driver | windows 驅動程式 | |
| circuit | 電路圖 | |
| firmware | 韌體原始碼 |
然後,決定先嘗試用獲得的任務道具 USBasp_schematics.pdf, 依照此電路圖的線路,把裝置給插出來 ~
過程當然還是免不了一番波折的啦 ~
玩到現在覺得,容易出狀況的,或多或少地可能是在麵包板上面把電路圖實作出來的時候;不過,大多數的問題都是來自於韌體或者是軟體上面。
就像在製作這個 USBasp 的時候也是這樣子的。
USBasp 在麵包板上的蠢樣/USBasp on breadboard
真正的打擊遭遇戰,並不是在這裡 ‧‧‧
#Arduino, #USBasp, #AVR
![]() |
| LM 386 耳機放大器在平時狀態下的波形 |
![]() |
| LM 386 耳機放大器透過麥克風接收到外部聲音時的波形 |
| LM 358 麥克風放大器連接軟體示波器外掛裝置和 Arduino 微電腦板 |