吉他調音器, 一般街價 HK$100 - HK$400, 視功能而訂
http://202.66.146.125/products_1_1_1_tc.php?id=622
所謂吉他調音器, 最陽春的結構其實基本上就是一個頻率計數器
六弦吉他標準調音, 沒記錯 String A 應該是 440 Hz
http://en.wikipedia.org/wiki/A440
從最粗的低音弦到最細的高音弦順序是
E, D, G, A, B, E
原來的設計用 AT90S2323, 準備修訂用料, 換成 ATTINY13.
[抄襲] 本來是最簡單的, 原文刊載如下
http://www.myplace.nu/avr/gtuner/index.htm
看似簡單, 主要理解幾個主要的修訂的部分
1) 兩個 IC 都是8只腳, ATTINY13 內置震盪器, 外圍元件更少
2) 所有腳位需要的功能相同
3) ATMEL 標準燒寫程式碼的 SPI 接口
4) 人家提供了 C 源碼, 估計可以修訂套用.
請教了老外, 關於那個 TRANSISTOR 的功用, MICORPHONE 輸出的交流電壓, 經過電容隔開直流後, 交流的部份被放大, 但是故意設計 TRANSISTOR 的偏壓在非線性區域, 或故意的失真, 所以聲音的交流訊號被放大後, 高於+5V的被截除, -5V 的部份完全消失, 只能以 0V 出現, 導致輸出的訊號極類似方波, MCU 就偵測每個訊號從 0V 上升到 +5V 的 [上升沿], 從而計算每秒有多少個這樣的 [上升沿], 就是輸入訊號的頻率. 作者和他的 SOURCE CODE 說明基本設計是這樣的.
作者雖然沒有詳細解釋電路的原理, 但是他用的方法是 NYQUIST OVER SAMPLING,
一般人的耳朵能夠接收的聲音頻率大概是 20Hz 到 20KHz, 而他用大概 170KHz 的取樣速度, 就是 20KHz 乘以上 8 倍, 監測輸入的聲音頻率, 累計 32 次的結果後求得平均值. 為什麼要取 32 次, 而不是 30 次或 100 次 !? 其實是要求簡單而快速的運算速度.
32 = 2 的 5 次方, (或寫成 2^5), 如果 32 個數目的總和等於 SUM, 那麼這 32 個數的平均值就是
AVG = SUM / 32 = SUM / (2^5)
現今的 CPU, 都有向右移位指令, 每次向右移一位, 就等於把原來的數目除以 2
舉例, 方便自己記憶
16 / 8 = 16 / (2^3) = 2 (十進制)
16 寫成二進制是 0001,0000
所以 16 / (2^3) 等於 將 0001,0000 向右移動三位, 剩下的數目就是商數
0001,0000 移第一次變成 0000,1000
0001,0000 移第二次變成 0000,0100
0001,0000 移第三次變成 0000,0010 (商數為十進制的 2, 餘數為 0)
所以, 在電腦的運算方面, 取 2^X 次方, 求其被除數的商, 可以簡單快捷的用右移X位的方法. 這是基本的概念及技巧.
回到正題, 改寫完畢, 燒好了 IC, 搭了棚....結果毫無動作. 再實驗簡單的 "HELLO WORLD" 用同一顆 IC, PB0 接 LED, 寫閃閃閃的. ASSEMBLER 寫的有閃, 但是 C 的就完全沒反應, 所以解決了第一個疑點, IC 是好的, 最少 PB0 是好的.
至於何為 "HELLO WORLD", 何為閃閃閃, 溫習以下
http://hk.myblog.yahoo.com/xiao-laba/article?mid=1556
其實就是用最簡單的方法觀察問題的成因, 控制一個 LED 開關, 觀察基本的設計或線路是否正常.
估計是 C 編譯器的問題, 由於毫無頭緒, 也不知如何著手, 唯有去信問 ATMEL, 希望有所幫助. 過了兩天, 得到回應如下:
----------------
Dear Customer,
Thank you for contacting Atmel Technical Support. We appreciate the opportunity to assist you.
We
recommend to try the example codes that is given in the device
datasheet under section "I/O Ports" in page number 52 which is tested
and found working.
Even after implementing it, if the problem still persists then feel free to contact us with informations mentioned below:
1) Both project folders under issue written in assembly and C source code.
2) Device Fuse and Lock bit settings
3) AVR Studio Version with build details
4) Details about the Tools used to program the device
5) Snap shot of all the possible events that describes the issue
6) Step by step procedure to regenerate the issue here
Best Regards,
Sriniv---- Maria----
Atmel Technical Support Team
----------------
趁路途上的空檔, 把建議的 52 頁抄出來. 待回到住處再來實驗.
Assembly Code Example(1)
...
; Define pull-ups and set outputs high
; Define directions for port pins
ldi r16,(1< < <
ldi r17,(1< < < <
out PORTB,r16
out DDRB,r17
; Insert nop for synchronization
nop
; Read port pins
in r16,PINB
...
C Code Example
unsigned char i;
...
/* Define pull-ups and set outputs high */
/* Define directions for port pins */
PORTB = (1< < <
DDRB = (1< < < <
/* Insert nop for synchronization*/
__no_operation();
/* Read port pins */
i = PINB;
...
待續.....TBC....
OCT/12/2009
今晚陪某某到她賣中古車的朋友店裡, 一為敘舊, 二為正事. 叫了外賣的便當, 開了一瓶銀蓋 JOHNNY WALKER, 另外再來藍牌, 邊喝邊聊邊等車, 但是不知道什麼時候, 幾個酒鬼們喝多了感懷起來嚎啕大哭, 為免打擾人家的興之所至, 所以乾脆躲到外面繼續做俺的功課, 免折墮.....每杯都要幾百塊台幣, 雖然不是到夜總會喝, 但也不會便宜.
果不然, 威士忌釀酒廠的老外, 原來還奇怪台灣的業績為什麼這麼好, 但是來台觀察過後覺得心痛, 精心釀造威士忌讓台胞灌進去不久就反芻, 所以酒的銷情是用倒的, 業績當然呱呱叫. 結果還要把醉醺醺的台胞抬回她的住處. 要話說回來, 業績好賺到錢就好啦, 還心痛個屁呀......老外真是的.
http://202.66.146.125/products_1_1_1_tc.php?id=622
所謂吉他調音器, 最陽春的結構其實基本上就是一個頻率計數器
六弦吉他標準調音, 沒記錯 String A 應該是 440 Hz
http://en.wikipedia.org/wiki/A440
從最粗的低音弦到最細的高音弦順序是
E, D, G, A, B, E
原來的設計用 AT90S2323, 準備修訂用料, 換成 ATTINY13.
[抄襲] 本來是最簡單的, 原文刊載如下
http://www.myplace.nu/avr/gtuner/index.htm
看似簡單, 主要理解幾個主要的修訂的部分
1) 兩個 IC 都是8只腳, ATTINY13 內置震盪器, 外圍元件更少
2) 所有腳位需要的功能相同
3) ATMEL 標準燒寫程式碼的 SPI 接口
4) 人家提供了 C 源碼, 估計可以修訂套用.
請教了老外, 關於那個 TRANSISTOR 的功用, MICORPHONE 輸出的交流電壓, 經過電容隔開直流後, 交流的部份被放大, 但是故意設計 TRANSISTOR 的偏壓在非線性區域, 或故意的失真, 所以聲音的交流訊號被放大後, 高於+5V的被截除, -5V 的部份完全消失, 只能以 0V 出現, 導致輸出的訊號極類似方波, MCU 就偵測每個訊號從 0V 上升到 +5V 的 [上升沿], 從而計算每秒有多少個這樣的 [上升沿], 就是輸入訊號的頻率. 作者和他的 SOURCE CODE 說明基本設計是這樣的.
作者雖然沒有詳細解釋電路的原理, 但是他用的方法是 NYQUIST OVER SAMPLING,
一般人的耳朵能夠接收的聲音頻率大概是 20Hz 到 20KHz, 而他用大概 170KHz 的取樣速度, 就是 20KHz 乘以上 8 倍, 監測輸入的聲音頻率, 累計 32 次的結果後求得平均值. 為什麼要取 32 次, 而不是 30 次或 100 次 !? 其實是要求簡單而快速的運算速度.
32 = 2 的 5 次方, (或寫成 2^5), 如果 32 個數目的總和等於 SUM, 那麼這 32 個數的平均值就是
AVG = SUM / 32 = SUM / (2^5)
現今的 CPU, 都有向右移位指令, 每次向右移一位, 就等於把原來的數目除以 2
舉例, 方便自己記憶
16 / 8 = 16 / (2^3) = 2 (十進制)
16 寫成二進制是 0001,0000
所以 16 / (2^3) 等於 將 0001,0000 向右移動三位, 剩下的數目就是商數
0001,0000 移第一次變成 0000,1000
0001,0000 移第二次變成 0000,0100
0001,0000 移第三次變成 0000,0010 (商數為十進制的 2, 餘數為 0)
所以, 在電腦的運算方面, 取 2^X 次方, 求其被除數的商, 可以簡單快捷的用右移X位的方法. 這是基本的概念及技巧.
回到正題, 改寫完畢, 燒好了 IC, 搭了棚....結果毫無動作. 再實驗簡單的 "HELLO WORLD" 用同一顆 IC, PB0 接 LED, 寫閃閃閃的. ASSEMBLER 寫的有閃, 但是 C 的就完全沒反應, 所以解決了第一個疑點, IC 是好的, 最少 PB0 是好的.
至於何為 "HELLO WORLD", 何為閃閃閃, 溫習以下
http://hk.myblog.yahoo.com/xiao-laba/article?mid=1556
其實就是用最簡單的方法觀察問題的成因, 控制一個 LED 開關, 觀察基本的設計或線路是否正常.
估計是 C 編譯器的問題, 由於毫無頭緒, 也不知如何著手, 唯有去信問 ATMEL, 希望有所幫助. 過了兩天, 得到回應如下:
----------------
Dear Customer,
Thank you for contacting Atmel Technical Support. We appreciate the opportunity to assist you.
We
recommend to try the example codes that is given in the device
datasheet under section "I/O Ports" in page number 52 which is tested
and found working.
Even after implementing it, if the problem still persists then feel free to contact us with informations mentioned below:
1) Both project folders under issue written in assembly and C source code.
2) Device Fuse and Lock bit settings
3) AVR Studio Version with build details
4) Details about the Tools used to program the device
5) Snap shot of all the possible events that describes the issue
6) Step by step procedure to regenerate the issue here
Best Regards,
Sriniv---- Maria----
Atmel Technical Support Team
----------------
趁路途上的空檔, 把建議的 52 頁抄出來. 待回到住處再來實驗.
Assembly Code Example(1)
...
; Define pull-ups and set outputs high
; Define directions for port pins
ldi r16,(1< < <
ldi r17,(1< < < <
out PORTB,r16
out DDRB,r17
; Insert nop for synchronization
nop
; Read port pins
in r16,PINB
...
C Code Example
unsigned char i;
...
/* Define pull-ups and set outputs high */
/* Define directions for port pins */
PORTB = (1< < <
DDRB = (1< < < <
/* Insert nop for synchronization*/
__no_operation();
/* Read port pins */
i = PINB;
...
待續.....TBC....
OCT/12/2009
今晚陪某某到她賣中古車的朋友店裡, 一為敘舊, 二為正事. 叫了外賣的便當, 開了一瓶銀蓋 JOHNNY WALKER, 另外再來藍牌, 邊喝邊聊邊等車, 但是不知道什麼時候, 幾個酒鬼們喝多了感懷起來嚎啕大哭, 為免打擾人家的興之所至, 所以乾脆躲到外面繼續做俺的功課, 免折墮.....每杯都要幾百塊台幣, 雖然不是到夜總會喝, 但也不會便宜.
果不然, 威士忌釀酒廠的老外, 原來還奇怪台灣的業績為什麼這麼好, 但是來台觀察過後覺得心痛, 精心釀造威士忌讓台胞灌進去不久就反芻, 所以酒的銷情是用倒的, 業績當然呱呱叫. 結果還要把醉醺醺的台胞抬回她的住處. 要話說回來, 業績好賺到錢就好啦, 還心痛個屁呀......老外真是的.
文章標籤
全站熱搜
