2022年4月30日 星期六

[C 語言] 有無const 的差異?

 


char *s : 表示s 指標指向一個character
constant char *s : 表示s 指標指向一個constant character; 也就是所指向的字元不能被修改
可以參考底下範例, 觀察有無const 的差別.

#include <stdio.h>
int main()
{
const char str[]="hello";
str[0]='H';
printf(str);
return 0;

}

若是寫 const char *str="hello";
這str 本來就指向read only 的"hello"字串區域, 所以本來就不能更改, 因此
這兩個寫法結果沒有差異, 但用const char * str寫法可以讓別人知道, 不會透過str 來改變指標所指的內容.

char *str="hello"; 
const char *str="hello";


2022年3月29日 星期二

什麼是機器學習? (學習簡介)



訓練出好的AI模型的下一步是什麼 ? 就是AI佈署(Deployment ) , 你可以將AI模型佈署在雲端 或者佈署在邊緣的嵌入式的裝置上, 而嵌入式的裝置可以是指特定的微控制器上或是Android/iOS 手機上。











 

2022年3月15日 星期二

[MCU單晶片 Q&A] ADC工作頻率

 

Question:
要怎麼知道Fosc 是16MHz呢? Fosc 是MCU的固定property 還是是個可以設置的參數呢?

Answer: 
這是外部提供 16MHz 的 Crystal oscillator
p.s. 可參考上課文件的的電路圖  (WengPICV2_sch.pdf )


2022年3月13日 星期日

[MCU單晶片 Q&A] 中斷

 

Question:

PPSunlock() 和PPSlock() 功能為何呢? 為什麼要用這兩個PPSunlock和PPSlock去包住RPI function? 使用PPSlock()和PPSunlock() 為什麼要把GIEH 中斷關掉呢? 因為沒看到文件上有這樣說明, 但是PPS 裡的function 有關掉中斷後面再回復的動作




Answer: 

   這是PPS 使用的規定, 如此才可以 remap Pin 腳功能, 
   可以參考PIC18F46J50 文件描述, 關於PPS 主題 10.7.4.1 Control Register Lock  

2022年3月9日 星期三

[MCU單晶片 Q&A] I2C 操作


[I2C 操作]
Question : 在I2C的START function 裡要先檢查SDA 是否已經為0,來決定是否進行後面是否要將SCL=0和SDA=1的動作,這樣和範例是藉由Din 來判斷是一樣的嗎? 而 Din 是SDA接腳的接收輸入接腳,為什麼要定義這個接腳呢?而沒有SCL的輸入接腳的定義




Answer : 
確認SDA 是否真的在Low level的狀態, 實際的作法是去讀取PORT 暫存器, 而不是去讀取TRIS暫存器. 為何在I2C START時,要判斷SDA為LOW呢? 因為我們進行I2C START動作, 是將SDA=1 (而原本SCL若在High), 則會變成多產生一個I2C STOP的動作,才再產生I2C START的動作。






Each port has three registers for its operation. These registers are:
  • TRIS register (data direction register)
  • PORT register (reads the levels on the pins of the device)
  • LAT register (output latch)





2022年2月25日 星期五

PCB Layout 入門教學(八) ---PCBA 人工打件


PCB 佈線圖完成後,產生所謂Gerber File 給PCB 加工廠後,就可以生產出PCB 電路版了。接著就是照BOM表的電子零件清單備料。當然也會有統包的公司,包含PCB、備料、打件、樣品生產的服務。一個PCB空板經過SMT打件,或經過DIP插件的整個製程,簡稱PCBA (PCB Assembly)。

SMT 自動打件的流程為:製作鋼板、PCB板定位、上錫膏、貼裝機貼裝、過回焊爐、成品檢驗。但如果是原型樣品,或僅需小批量生產,如100~200片,想要試試看"人工打件",就是沒有SMD貼裝機啦,那你也可以自行DIY,本篇文章就是要分享人工打件的方法,適合Maker 族群。


(1) 製作鋼板: 為PCB 板製作一個鋼板,這是一次性的成本。鋼板上有洞的地方就是等等要上錫的位置。


 
 


(2)上錫膏:

 

將錫膏均勻抹平在鋼板的洞上,拿掉鋼板後如下圖所示。



(3.) 人工貼裝機: 依照Layout 圖,將元件正確擺放。在融錫前,錫膏的黏度剛好可以稍微黏住PCB表面的電子零件,所以有些微的晃動也不會使元件偏移。
 




(4.)  手工迴銲爐: 需要一個加熱台來加熱融錫,如此電子零件就被銲接在PCB上了。










(5.) 成品:
  
    大功告成! 每一個零件就像由機器自動定位來擺放一樣。好吧! 這就人工打樣的過程 ^_^ 





額外分享:
 
這是專業SMT機台的打件速度~



 
上錫膏也是自動化流程的一部份





2022年2月7日 星期一

關於 Raspberry Pi Pico

Raspberry Pi 基金會於 2021 年 1 月推出 Raspberry Pi Pico,正式進軍微控制器(MCU)領域。Pico 採用基金會自主設計的 RP2040 晶片,該晶片配備雙核 ARM Cortex-M0+(運行頻率最高可達 133MHz),內建 264KB SRAM 和 2MB Flash,其 GPIO 輸出為 3.3V。2024 年 11 月,基金會推出了 Raspberry Pi Pico 2 W 版本。其中「W」代表此版本內建 802.11n 無線網路功能,其核心晶片為 RP2350。


Pico 本身內建 bootloader,但不像 Raspberry Pi 或 Pi Zero 那樣運行 Linux 作業系統。為了方便開發,Raspberry Pi 基金會提供了 C/C++ SDK 和 MicroPython SDK。軟體和硬體與Raspberry Pi Pico 1相容。 Pico 也支援 TensorFlow Lite 框架,可用於開發輕量級的機器學習應用。 


 
7 × 7 mm QFN-56 package 

Raspberry Pi Pico 2的硬體規格:

    • 雙Arm Cortex-M33或雙Hazard3處理器@150MHz
    • 520 KB片上SRAM
    • 2個UART。
    • 2個SPI控制器。
    • 2個I2C控制器。
    • 24個PWM通道。
    • 4個ADC通道。
    • 1個USB 1.1控制器和PHY,支援主機和裝置。
    • 12個PIO狀態機。
    • 工作溫度-20°C至+85°C。
    • 支援輸入電壓1.8–5.5V DC。


Raspberry Pi Pico


Pi Pico 擴充板規格

由於Raspberry Pi Pico 本身並未內建任何感應器,為了使其能夠應用於物聯網(IoT)及邊緣人工智能(Edge AI)等領域,特別採用了台灣程式教育協進會開發的 Pi Pico 擴充板。該擴充板的規格如下:








Pico + Pico 擴充板的一些物聯網應用

DEMO1



DEMO2



DEMO3




DEMO4



[課程]Raspberry Pi Pico 物聯網應用實作

https://bit.ly/4hTRptE

- 理解 Raspberry Pi Pico 硬體架構與擴充功能,並能運用 GPIO、ADC、PWM 等技術進行基礎硬體控制與感測應用。
- 熟悉 Thonny IDE 與 MicroPython 程式設計,具備多執行緒與時間控制能力。。
- 能運用通訊協定與 Wi-Fi 模組實作 IoT 應用,包含資料傳輸、Web 伺服器與雙向 I/O 控制。

更多Web 技術開發課程
- JavaScript 程式設計精修 https://bit.ly/3nF7bfH
- web全端開發應用班 https://goo.gl/fjEHfT
- IoT 物聯網實務班 https://bit.ly/2XwwHcx