• slider image 253
  • slider image 254
  • slider image 255
  • slider image 256
  • slider image 257
:::


Browsing this Thread:   1 Anonymous Users






問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#1
新會員
新會員


查看用戶資訊
請教一下,
使用PIC16F1937 MCU,
硬體規劃總共有24支不連續的IO,
有沒有什麼語法定義可以達成使用for迴圈,
做到連續指定到對應IO的方法?

發表於: 9/18 15:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#2
資深會員
資深會員


查看用戶資訊
說簡單很簡單....
說困難很困難....

說說簡單的...
用一個陣列對映表就可以...

再說困難的....
不會用/不想用/不是你要的...

發表於: 9/19 15:17
程式是
依照寫出來(的code),跑出結果
不是依照你想出來的,得到結果

先有需求規格 後有解決方案
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#3
資深會員
資深會員


查看用戶資訊
for迴圈內用do case 或者用 if 判斷式 ...

如常用 則設成 function ....


.

發表於: 9/20 18:43
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#4
版主
版主


查看用戶資訊
請問是不是要做 Segment LCD 的輸出顯示控制呢? 如果是的話,可以參考 W301 的教育訓練第一章節部分: 如何顯示 LCD 的設定自行。我是使用 switch case 加上查表方式做固定字型的顯示。

發表於: 9/21 9:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#5
新會員
新會員


查看用戶資訊
不好意思我沒說明清楚需求,
我再試著說明一下,
我有一個案子,
需掃描24個IO的方波頻率,
下列大致是我的程式碼,
其中for 迴圈中的dasp_scan();
帶入的 " S_IN_2_PORT "目前只能針對一個IO來做
請問有沒有什麼語法可以通過for或其它方式對應到MCU的24個IO ?

void dasp_scan(bool iostate, uint8_t *state, uint8_t *time, uint8_t *t2_time)

struct data_24 {
uint8_t d[24];
} dasp_time, dasp_state,T2_time;

for(i=0;i<24;i++)
{
dasp_scan(S_IN_2_PORT, &dasp_state.d[ i ], &dasp_time.d[ i ], &T2_time.d[ i ]);
}

Attach file:



jpg  Scan24 IO.jpg (133.74 KB)
11688_5f680d1a70aae.jpg 759X310 px

發表於: 9/21 10:17
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#6
新會員
新會員


查看用戶資訊
請教 jason680 大大,

可否依照我重新說明案子及附上電路圖,
來具體教導陣列對映表如何實作出不連續的IO,
懇請舉個範例,
懇請賜教~!
謝謝~!

發表於: 9/21 10:45
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#7
版主
版主


查看用戶資訊
單純使用 I/O 腳來測量那麼多的方波頻率,除非輸入的方波頻率是很低的頻率,否則在短時間是測量不出來的。

建議可以使用 I/O 腳配上PPS 切換功能給三個 Timer 1,2,3 的 Gate Time 周邊來一一測量方波的頻率。

24 個輸入可以每 8 個對應到一個 Timer 來測量。三組 Timer 的 gate Timer 模組即可測量到 24 個輸入。即使輸入頻率很高也可以很快地就算出所有腳位的輸入頻率,而且是用硬體算的也不會有誤差。

底下是建議可以使用的元件:

PIC18F27/47/57Q43 : 28/40/44/48-Pin, Low-Power, High-Performance Microcontroller with XLP Technology 所有的 I/O 腳都有 PPS 腳位切換功能。

PIC16F18875, 18876 及 18877 是F1 加強版 MCU,所有的 I/O 腳都有 PPS 腳位切換功能。

發表於: 9/21 11:52
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 問題: 不連續的IO,有沒有什麼語法可以達成連續的方法
#8
新會員
新會員


查看用戶資訊
Ryang 大大,
謝謝您提供的設計方向,
我這案子的需求是只要量測低頻,
我完成如下的程式碼,
已經可以通過Time2正常運作抓取24組IO的低頻頻率(100mS~2000ms),
我想知道如何通過程式語法將不連續的IO,使用成連續的方法。

jason680 大大,
有提到陣列對映表可以做出來,
懇請知道的人舉個範例,
感謝~

void dasp_scan(bool iostate, uint8_t *state, uint8_t *time, uint8_t *t2_time)

struct data_24 {
uint8_t d[24];
} dasp_time, dasp_state,T2_time;

dasp_scan(S_IN_1_PORT, &dasp_state.d[ 0 ], &dasp_time.d[ 0 ], &T2_time.d[ 0 ]);
.
.
.
dasp_scan(S_IN_24_PORT, &dasp_state.d[ 23 ], &dasp_time.d[ 23 ], &T2_time.d[ 23 ]);

發表於: 9/21 12:12

Edited by keymi on 2020年09月21日 12:48:01
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You can attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
http://elearning.microchip.com.tw/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源