その3ではLEDの処理などを追加していきます。
まずはその2で生成されたファイルを眺めてみます。
結構たくさんあるみたいです。ファイル名のあとに "[Ignored]" とあるのはソースコード管理のための Mercurial でのステータスでしょう。
main.c を開いてみると、実際のコード部分はとてもシンプルです。
#include "mcc_generated_files/mcc.h"
/*
Main application
*/
void main(void)
{
// initialize the device
SYSTEM_Initialize();
// When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
// Use the following macros to:
// Enable the Global Interrupts
//INTERRUPT_GlobalInterruptEnable();
// Enable the Peripheral Interrupts
//INTERRUPT_PeripheralInterruptEnable();
// Disable the Global Interrupts
//INTERRUPT_GlobalInterruptDisable();
// Disable the Peripheral Interrupts
//INTERRUPT_PeripheralInterruptDisable();
while (1)
{
// Add your application code
}
}まず、main()の while(1)の中にMOUTCH_Service_Mainloop();を追加します。
while (1)
{
// Add your application code
+ MOUTCH_Service_Mainloop();
}
次に、main()の外にコールバック関数を書きます。
#include "mcc_generated_files/mcc.h"
+ void processButtonTouch(enum mtouch_button_names button)
+ {
+ switch(button)
+ {
+ case Button0: LED_SetLow();break;
+ default: break;
+ }
+ }
+
+ void processButtonRelease(enum mtouch_button_names button)
+ {
+ switch(button)
+ {
+ case Button0: LED_SetHigh();break;
+ default: break;
+ }
+ }
ここで、"Button0" はもしもボタンの名称を変えていたらそれに合わせます。"LED" も同様です。LED_SetLow() / LED_SetHigh() などはMCCによって生成されていますので、そのまま使えます。最後に、while(1)ループの前にコールバック関数へのフックを書きます。また、globalインタラプトとperipheralインタラプトを有効にします。
/*
Main application
*/
void main(void)
{
// initialize the device
SYSTEM_Initialize();
// When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
// Use the following macros to:
// Enable the Global Interrupts
- // INTERRUPT_GlobalInterruptEnable();
+ INTERRUPT_GlobalInterruptEnable();
// Enable the Peripheral Interrupts
- //INTERRUPT_PeripheralInterruptEnable();
+ INTERRUPT_PeripheralInterruptEnable();
// Disable the Global Interrupts
//INTERRUPT_GlobalInterruptDisable();
// Disable the Peripheral Interrupts
//INTERRUPT_PeripheralInterruptDisable();
+ MTOUCH_Button_SetPressedCallback(processButtonTouch);
+ MTOUCH_Button_SetNotPressedCallback(processButtonRelease);
while (1)
{
// Add your application code
MTOUCH_Service_Mainloop();
}
}
ソースの変更はここまでです。早速ビルドしてみます。F11キーまたは "Production"→"Build Main Project" を実行します。エラーがなければ書き込みボタンを押します。最初にボード上のPIC24にファームウェアをダウンロードしたあとでPIC16F1619への書き込みが始まります。
→その4へ続く

0 件のコメント:
コメントを投稿