解法在這裡
https://tinkerboarding.co.uk/forum/thread-1735-page-2.html
wget https://snapshot.debian.org/archive/debian-security/20180701T015633Z/pool/updates/main/c/chromium-browser/chromium_67.0.3396.87-1~deb9u1_armhf.deb
sudo dpkg -i chromium_67.0.3396.87-1~deb9u1_armhf.deb
sudo apt-mark hold chromium
2018年11月14日 星期三
2018年11月13日 星期二
chromium kiosk mode on raspberry pi
在樹莓派
使用者目錄下的這個檔案裡面放檔案路徑
就可以開機自動執行
~/.config/lxsession/LXDE-pi/autostart
裡面要自動執行的程式必須給絕對路徑
使用者目錄下的這個檔案裡面放檔案路徑
就可以開機自動執行
~/.config/lxsession/LXDE-pi/autostart
裡面要自動執行的程式必須給絕對路徑
2018年10月7日 星期日
system workbench for STM32 一款基於eclipse的stm32整合開發環境,以及STM32CubeMX一款STM32系列程式碼產生器
STM32 CubeMX
System Workbench for STM32(SW4STM32)
下載與安裝都很無腦,到官網下載後就可以安裝。
CubeMX以點選功能的方式快速佈置微控器的功能
要記得要去設定Debug功能,否則到了SW4STM32要跑線上除錯的時候會找不到硬體
CubeMX產生程式碼之後會問是否要打開IDE,
在Win32平台,選擇確定會順利打開SW4STM32
在MacOS平台,無法找到,必須單獨打開SW4STM32然後把專案資料import進來
先按錘子編譯專案
再按瓢蟲進入除錯模式
第一次執行瓢蟲要做以下修改,硬體除錯模式才會正常運作
點選 Debug As -> 1 AC6 STM32 C/C++ Application

然後再點選 Debug Configurations...

到 Debugger 中 Configuration Script 區塊 將 generator options展開
將Reset Mode改為 Software system reset
這樣除錯功能才能正常
System Workbench for STM32(SW4STM32)
下載與安裝都很無腦,到官網下載後就可以安裝。
CubeMX以點選功能的方式快速佈置微控器的功能
要記得要去設定Debug功能,否則到了SW4STM32要跑線上除錯的時候會找不到硬體
CubeMX產生程式碼之後會問是否要打開IDE,
在Win32平台,選擇確定會順利打開SW4STM32
在MacOS平台,無法找到,必須單獨打開SW4STM32然後把專案資料import進來
先按錘子編譯專案
再按瓢蟲進入除錯模式
第一次執行瓢蟲要做以下修改,硬體除錯模式才會正常運作
點選 Debug As -> 1 AC6 STM32 C/C++ Application

然後再點選 Debug Configurations...

到 Debugger 中 Configuration Script 區塊 將 generator options展開
將Reset Mode改為 Software system reset
這樣除錯功能才能正常
2018年9月25日 星期二
ghdl,一款開源的vhdl模擬器以及gtkwave,一款開源的波形觀察器,一個二位元全加法器的實作
參考來源:https://ghdl.readthedocs.io/en/latest/using/QuickStartGuide.html
先說載點:
ghdl:
https://ghdl.readthedocs.io/en/latest/getting/Releases.html
gtkwave:
https://sourceforge.net/projects/gtkwave/files/
然後根據ghdl的說明檔,先來實作一份加法器
ghdl quick start guide:
https://github.com/ghdl/ghdl/blob/master/doc/using/QuickStartGuide.rst#a-full-adder
步驟:
用文字編輯器撰寫vhdl
存檔並且副檔名為.vhd或是.vhdl
vhdl內的entity名稱不一定要與檔名一樣
先用ghdl -a [vhdl檔]
重點:
vhdl檔案必須依照階層關係依序編譯,否則會造成頂端vhdl無法正確解譯
先用文字編輯器把下列程式存檔,檔名為「adder.vhdl」
接著把下列測試檔存檔,檔名為「adder_tb.vhdl」
先用
再用
最後
結果會在檔案所在資料夾中看到一個名為adder.vcd的檔案,點開來會自動啟動gtkwave
看到以下畫面:
先在左上的adder_0點一下,接著到左下幾個reg ...都點兩下,結果會在右側波形視窗出現綠線

接著用放大鏡-,一直按一直按,隨著時間刻度慢慢放大,大概到ns間距時,波形開始出現

先說載點:
ghdl:
https://ghdl.readthedocs.io/en/latest/getting/Releases.html
gtkwave:
https://sourceforge.net/projects/gtkwave/files/
然後根據ghdl的說明檔,先來實作一份加法器
ghdl quick start guide:
https://github.com/ghdl/ghdl/blob/master/doc/using/QuickStartGuide.rst#a-full-adder
步驟:
用文字編輯器撰寫vhdl
存檔並且副檔名為.vhd或是.vhdl
vhdl內的entity名稱不一定要與檔名一樣
先用ghdl -a [vhdl檔]
再用ghdl -e [entity名稱] ,elaborate這個entity但我不知道什麼是elaborate
最後ghdl -r [entity名稱],跑這個vhdl,但是如果直接跑會沒有結果產生
因此需要製作testbench,testbench也是一段vhdl程式,他與一班vhdl差別在沒有port,是用來產生輸入信號以及檢查輸出是否為預期
重點:
vhdl檔案必須依照階層關係依序編譯,否則會造成頂端vhdl無法正確解譯
先用文字編輯器把下列程式存檔,檔名為「adder.vhdl」
entity adder is -- `i0`, `i1`, and the carry-in `ci` are inputs of the adder. -- `s` is the sum output, `co` is the carry-out. port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit); end adder; architecture rtl of adder is begin -- This full-adder architecture contains two concurrent assignments. -- Compute the sum. s <= i0 xor i1 xor ci; -- Compute the carry. co <= (i0 and i1) or (i0 and ci) or (i1 and ci); end rtl;
接著把下列測試檔存檔,檔名為「adder_tb.vhdl」
-- A testbench has no ports. entity adder_tb is end adder_tb; architecture behav of adder_tb is -- Declaration of the component that will be instantiated. component adder port (i0, i1 : in bit; ci : in bit; s : out bit; co : out bit); end component; -- Specifies which entity is bound with the component. for adder_0: adder use entity work.adder; signal i0, i1, ci, s, co : bit; begin -- Component instantiation. adder_0: adder port map (i0 => i0, i1 => i1, ci => ci, s => s, co => co); -- This process does the real job. process type pattern_type is record -- The inputs of the adder. i0, i1, ci : bit; -- The expected outputs of the adder. s, co : bit; end record; -- The patterns to apply. type pattern_array is array (natural range <>) of pattern_type; constant patterns : pattern_array := (('0', '0', '0', '0', '0'), ('0', '0', '1', '1', '0'), ('0', '1', '0', '1', '0'), ('0', '1', '1', '0', '1'), ('1', '0', '0', '1', '0'), ('1', '0', '1', '0', '1'), ('1', '1', '0', '0', '1'), ('1', '1', '1', '1', '1')); begin -- Check each pattern. for i in patterns'range loop -- Set the inputs. i0 <= patterns(i).i0; i1 <= patterns(i).i1; ci <= patterns(i).ci; -- Wait for the results. wait for 1 ns; -- Check the outputs. assert s = patterns(i).s report "bad sum value" severity error; assert co = patterns(i).co report "bad carry out value" severity error; end loop; assert false report "end of test" severity note; -- Wait forever; this will finish the simulation. wait; end process; end behav;
先用
ghdl -a adder.vhdl
再用
ghdl -a adder_tb.vhdl ghdl -e adder_tb
最後
ghdl -r adder_tb --vcd=adder.vcd
結果會在檔案所在資料夾中看到一個名為adder.vcd的檔案,點開來會自動啟動gtkwave
看到以下畫面:
先在左上的adder_0點一下,接著到左下幾個reg ...都點兩下,結果會在右側波形視窗出現綠線

接著用放大鏡-,一直按一直按,隨著時間刻度慢慢放大,大概到ns間距時,波形開始出現

2018年8月22日 星期三
LED蠟燭實驗
網路這幾天流傳一則影片,有人用Arudino連接一顆0402的SMD LED,然後對著點亮的LED吹氣,最後竟然可以吹熄,過一會又亮起來,如此反覆操作著。
這個作者也在instructables.com上面發表做法,甚至在Arduino官網上也有上頭條,這麼有趣的專題,我也來跟風做做看。
矽二極體每升高一度C,則障壁電壓會下降2.5mV
這是電子學課本一開始就會教的知識,如今可以用在這個小專題上,這個專題利用微小封裝的LED,使得該LED內的二極體接面能夠快速感受到溫度的變化,利用點亮LED時產生的溫度升高與吹氣時帶走溫度這兩者之間的溫差,預計可以獲得一個明顯的障蔽電壓電壓變化,然後搭配Arduino內的ADC將二極體的障壁電壓讀取出來,接著用軟體模擬蠟燭點亮與吹熄的效果。
首先接一個簡單可以點亮發光二極體的電路,一個有限流電阻的發光二極體迴路,發光二極體在迴路中的低側,如此就可以從發光二極體的陽極拉出導線量測電壓。電壓變化如此的小,除了在硬體電路上加以改進外,是否還有其他解法能得知這個微弱變化呢?
為了解決在電壓量測的軟體技巧上使用了累加法,將微小的電壓變化放大出來。當直接讀取單次的ADC數值時,只有看到個位數在跳動,但完全無法得知目前微弱電壓的數值,但是這個跳動的個位數本身就隱含著微弱電壓的訊息,於是我們只要每次讀取固定數量且大量的數據累加起來,就可以將這個隱含的訊息予以放大。這個過程有點像是累進誤差這個概念的反義應用,本來累進誤差是我們不要的,但是如果逆向思考則成為有效的工具。另外,這裡也有另一層意義需要思考,就是單筆ADC數值上的個位數跳動與累加之後產生了明顯的差別,非常貼切地驗證了「見樹不見林」這句話。在解決問題之前我們通常要先觀察問題,而觀察問題的時候則是是需要不斷改變高度甚至是維度,這時候就要依賴數學課教我們的那一堆數學工具來觀察了。
這個作者也在instructables.com上面發表做法,甚至在Arduino官網上也有上頭條,這麼有趣的專題,我也來跟風做做看。
矽二極體每升高一度C,則障壁電壓會下降2.5mV
這是電子學課本一開始就會教的知識,如今可以用在這個小專題上,這個專題利用微小封裝的LED,使得該LED內的二極體接面能夠快速感受到溫度的變化,利用點亮LED時產生的溫度升高與吹氣時帶走溫度這兩者之間的溫差,預計可以獲得一個明顯的障蔽電壓電壓變化,然後搭配Arduino內的ADC將二極體的障壁電壓讀取出來,接著用軟體模擬蠟燭點亮與吹熄的效果。
首先接一個簡單可以點亮發光二極體的電路,一個有限流電阻的發光二極體迴路,發光二極體在迴路中的低側,如此就可以從發光二極體的陽極拉出導線量測電壓。電壓變化如此的小,除了在硬體電路上加以改進外,是否還有其他解法能得知這個微弱變化呢?
為了解決在電壓量測的軟體技巧上使用了累加法,將微小的電壓變化放大出來。當直接讀取單次的ADC數值時,只有看到個位數在跳動,但完全無法得知目前微弱電壓的數值,但是這個跳動的個位數本身就隱含著微弱電壓的訊息,於是我們只要每次讀取固定數量且大量的數據累加起來,就可以將這個隱含的訊息予以放大。這個過程有點像是累進誤差這個概念的反義應用,本來累進誤差是我們不要的,但是如果逆向思考則成為有效的工具。另外,這裡也有另一層意義需要思考,就是單筆ADC數值上的個位數跳動與累加之後產生了明顯的差別,非常貼切地驗證了「見樹不見林」這句話。在解決問題之前我們通常要先觀察問題,而觀察問題的時候則是是需要不斷改變高度甚至是維度,這時候就要依賴數學課教我們的那一堆數學工具來觀察了。
2018年8月21日 星期二
木製CNC之Z軸強化測試紀錄
這一次把Z軸重做
為了增加因安裝主軸馬達的負重
首先將X軸滑軌調整位置,把X軸兩個滑軌靠近,並且調整皮帶在X軸也靠近
將CNC主軸馬達用一塊木板做轉接,轉接到原本的Z軸之上
其中Z軸重做兩次
第一次的改裝Z軸,穩定性欠佳,會晃動
今天(8/21)把Z軸採用新式固定方法,也同時符合組裝順序,由底部到上部一層一層組裝,方便事後維修
穩定性增加,Z軸結構不再有形變問題
但
在45度來回畫線的測試上
依然發生在45度線有重疊問題
原本判斷是Z軸結構形變導致X軸來回有齒隙
但現在Z軸穩定增加,但線條重疊問題依舊
不得不懷疑是步進馬達本身解析度不足
有一個現象很可疑 右側的步進馬達(短線側)的無通電抓止力明顯低於左側馬達
是否為右側馬達磁力不足?
在Y軸並無齒隙問題,只有X軸有齒隙問題,而且高達1mm
為了增加因安裝主軸馬達的負重
首先將X軸滑軌調整位置,把X軸兩個滑軌靠近,並且調整皮帶在X軸也靠近
將CNC主軸馬達用一塊木板做轉接,轉接到原本的Z軸之上
其中Z軸重做兩次
第一次的改裝Z軸,穩定性欠佳,會晃動
今天(8/21)把Z軸採用新式固定方法,也同時符合組裝順序,由底部到上部一層一層組裝,方便事後維修
穩定性增加,Z軸結構不再有形變問題
但
在45度來回畫線的測試上
依然發生在45度線有重疊問題
原本判斷是Z軸結構形變導致X軸來回有齒隙
但現在Z軸穩定增加,但線條重疊問題依舊
不得不懷疑是步進馬達本身解析度不足
有一個現象很可疑 右側的步進馬達(短線側)的無通電抓止力明顯低於左側馬達
是否為右側馬達磁力不足?
在Y軸並無齒隙問題,只有X軸有齒隙問題,而且高達1mm
2018年8月10日 星期五
新增KiCAD PCB 零件之步驟
訂閱:
文章 (Atom)




