[戻る]
新着表示

誤記の確認 投稿者:カワ 投稿日:2016/10/04(Tue) 03:13:10 No.705

いつも有益な後閑先生の書籍にて勉強させて頂いております。
電子制御・信号処理のための「dsPIC活用ガイドブック」において
誤記?と思える箇所が御座いましたの投稿させて頂きます。

【内容】
340頁の図6-8-19、図6-8-20において、U相とW相の表記が逆でないでしょうか?
U相とW相を逆にしないとうまく駆動できませんでした。

参考までに他のHPも調べてみたのですが
下記URLで、120度通電通電角真理値表(Table3.1.1(c))
を見てみてみると、やはり逆のような気がします。
http://motormake.web.fc2.com/rojikkukairosekkeisyo.html

私の理解が間違っているかも知れませんが、ご確認頂けると助かります。

Re: 「LCD&タッチ・・・」 投稿者:RPO 投稿日:2016/10/04(Tue) 01:47:42 No.704

自己レスです。

> 78行目の右辺の値であるA/D変換値と電流値との関係は、次のような
> 考え方でよろしいでしょうか?
>
> 基準電圧はVDD=5Vですよね。測定電圧は200倍されているので、
> (5/200)/1024[V]が電圧分解能ですよね。
> すると10回加算したA/D変換値と電流値との関係は、
> 以下で正しいでしょうか?
>
> (10回加算AD変換値)/10[回]×(5/200)/1024[V]/0.1[Ω]×1000
> =(5/200)×(10回加算AD変換値)[mA]
>
> この値を30[mA]と比較すべきではないのでしょうか?

1024を1000で近似しました。

「LCD&タッチ・・・」質問 投稿者:RPO 投稿日:2016/10/04(Tue) 01:42:59 No.703

はじめて投稿いたします。
オシロスコープを自作したくて色々情報を探した結果、
「LCD&タッチセンサ活用の素」を購入させていただきました。

PICは未体験でしたので、先ずは第2章の「2-6 使用例:簡易電源」を
作ろうと思っていますが、プログラムのA/D変換の箇所で不明点があり、
質問投稿させていただく次第です。電流測定の箇所です。

71 /*** 電流測定(10回の平均) *****/
72 Current = 0; // 初期値クリア
73 for(i=0; i<10; i++){ // 10回の平均
74 ADCON0 = 0x91; // AN4 200倍ゲイン選択
75 __delay_us(50); // 50usec待ち
76 GODONE = 1;
77 while(GODONE);
78 Current += (ADRESH*256+ADRESL); // 電流読み込み
79 }
80 if(Current < 30)
81 Current = 0;
82 else{
83 if(Current < 10000){ // 小電流か?
84 RB6 = 1; // 目印LED Off
85 // スケール調整と変換、オフセット調整
86 Current = (Current*20)/1024 + 15;
87 }

本のp.67の説明によると、80行目と83行目はそれぞれ、30mA、200mAとの
比較となっています。しかしソースコードでは、83行目は10000と比較
しています。

80行目から83行目までで、Currentは変更されていないはずですから、
なぜ200ではなく、10000との比較なのでしょうか。

また「10回の平均」とコメントにありますが、10回の加算後に、
Current /= 10; がありません。10倍の値のまま比較するということで
あれば、10で割ることは必須ではないと思いますが、その場合80行目は
300と比較すべきかと思います。

そもそも80行目に到達した時点で、Currentにはどのような値が入って
いるのでしょう。

78行目の右辺の値であるA/D変換値と電流値との関係は、次のような
考え方でよろしいでしょうか?

基準電圧はVDD=5Vですよね。測定電圧は200倍されているので、
(5/200)/1024[V]が電圧分解能ですよね。
すると10回加算したA/D変換値と電流値との関係は、
以下で正しいでしょうか?

(10回加算AD変換値)/10[回]×(5/200)/1024[V]/0.1[Ω]×1000
=(5/200)×(10回加算AD変換値)[mA]

この値を30[mA]と比較すべきではないのでしょうか?

さらについでで恐縮ですが、86行目に対するp.67での説明が
「電圧値にスケール変換」となっていますが、正しくは
「電流値にスケール変換」ではないでしょうか。

お忙しいかとは存じますが、以上の疑問につきまして
ご教示いただければ幸いでございます。

Re: USBの接続 投稿者:Gokan 投稿日:2016/09/28(Wed) 21:15:15 No.702

ちょっとこれだけの情報では何とも言えませんね。
まずはマイクロチップから提供されているデモプログラムを
そのまま動かすところから始めるのが良いかと思います。


> 初心者です。
> 回答いただけますと助かります。
>
> PIC24FJ64GC006を使用してUSB接続をしたいのですが上手くいきません。
>
> USBDeviceInit()とUSBDeviceAttach()を実行し、
> PCのデバイスマネージャーで不明なデバイスとして認識するところまでも行っておりません。
>
> 動作確認のため2ヶのLEDを点灯と点滅させました。
> USBDeviceAttach()の行を削除すると、LEDは点灯と点滅をしますが。
> USBDeviceAttach()の行があると、2ヶのLEDは、消灯したままです。
>
> USBDeviceAttach()を削除せずに、DEBUG MODEを実行すると、
> Target Haltedのメッセージがあり、DebugConsoleには、
> 下記が表示されています。
> ------------------
> __DefaultInterrupt ( ) @ Compiler generated location : 0x2e0
> User program running
> User program stopped
> User program stopped
> ------------------
>
> プログラムは下記で試しました。
> -----------------------
> #include <xc.h>
> #include <p24FJ64GC006.h>
> #include "USB/usb.h"
> #include "USB/usb_device.h"
> #include "USB/usb_device_generic.h"
> #include "usb_config.h"
>
> // CONFIG4
> #pragma config DSWDTPS = DSWDTPS1F // Deep Sleep Watchdog Timer Postscale Select bits (1:68719476736 (25.7 Days))
> #pragma config DSWDTOSC = LPRC // DSWDT Reference Clock Select (DSWDT uses LPRC as reference clock)
> #pragma config DSBOREN = OFF // Deep Sleep BOR Enable bit (DSBOR Disabled)
> #pragma config DSWDTEN = OFF // Deep Sleep Watchdog Timer Enable (DSWDT Disabled)
> #pragma config DSSWEN = OFF // DSEN Bit Enable (Deep Sleep operation is always disabled)
> #pragma config RTCBAT = OFF // RTC Battery Operation Enable (RTC operation is discontinued in VBAT)
> #pragma config PLLDIV = DIV2 // PLL Input Prescaler Select bits (Oscillator divided by 2 (8 MHz input))
> #pragma config I2C2SEL = PRI // Alternate I2C2 Location Select bit (I2C2 is multiplexed to SDA2/RA3 and SCL2/RA2 )
> #pragma config IOL1WAY = OFF // PPS IOLOCK Set Only Once Enable bit (The IOLOCK bit can be set and cleared using the unlock sequence)
> // CONFIG3
> #pragma config WPFP = WPFP127 // Write Protection Flash Page Segment Boundary (Page 127 (0x1FC00))
> #pragma config SOSCSEL = OFF // SOSC Selection bits (Digital (SCLKI) mode)
> #pragma config WDTWIN = PS25_0 // Window Mode Watchdog Timer Window Width Select (Watch Dog Timer Window Width is 25 percent)
> #pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset Disabled)
> #pragma config WPDIS = WPDIS // Segment Write Protection Disable (Disabled)
> #pragma config WPCFG = WPCFGDIS // Write Protect Configuration Page Select (Disabled)
> #pragma config WPEND = WPENDMEM // Segment Write Protection End Page Select (Write Protect from WPFP to the last page of memory)
> // CONFIG2
> #pragma config POSCMD = EC // Primary Oscillator Select (External-Clock Mode Enabled)
> #pragma config WDTCLK = LPRC // WDT Clock Source Select bits (WDT uses LPRC)
> #pragma config OSCIOFCN = OFF // OSCO Pin Configuration (OSCO/CLKO/RC15 functions as CLKO (FOSC/2))
> #pragma config FCKSM = CSDCMD // Clock Switching and Fail-Safe Clock Monitor Configuration bits (Clock switching and Fail-Safe Clock Monitor are disabled)
> #pragma config FNOSC = PRIPLL // Initial Oscillator Select (Primary Oscillator with PLL module (XTPLL,HSPLL, ECPLL))
> #pragma config ALTADREF = AVREF_RB // External 12-Bit A/D Reference Location Select bit (AVREF+/AVREF- are mapped to RB0/RB1)
> #pragma config ALTCVREF = CVREF_RB // External Comparator Reference Location Select bit (CVREF+/CVREF- are mapped to RB0/RB1)
> #pragma config WDTCMX = WDTCLK // WDT Clock Source Select bits (WDT clock source is determined by the WDTCLK Configuration bits)
> #pragma config IESO = OFF // Internal External Switchover (Disabled)
> // CONFIG1
> #pragma config WDTPS = PS32768 // Watchdog Timer Postscaler Select (1:32,768)
> #pragma config FWPSA = PR128 // WDT Prescaler Ratio Select (1:128)
> #pragma config WINDIS = OFF // Windowed WDT Disable (Standard Watchdog Timer)
> #pragma config FWDTEN = WDT_DIS // Watchdog Timer Enable (WDT disabled in hardware; SWDTEN bit disabled)
> #pragma config ICS = PGx2 // Emulator Pin Placement Select bits (Emulator functions are shared with PGEC2/PGED2)
> #pragma config LPCFG = ON // Low power regulator control (Low voltage regulator controlled in sw by RETEN bit)
> #pragma config GWRP = OFF // General Segment Write Protect (Disabled)
> #pragma config GCP = OFF // General Segment Code Protect (Code protection is disabled)
> #pragma config JTAGEN = OFF // JTAG Port Enable (Disabled)
>
> // USB関連バッファ ------------------------------------------------------
> #pragma udata
> unsigned char INPacket[64]; // USB送信バッファ
> unsigned char OUTPacket[64]; // USB受信バッファ
> USB_HANDLE USBGenericOutHandle;
> USB_HANDLE USBGenericInHandle;
>
> void Delayms( unsigned int t);
> void USBCBSuspend(void);
> void USBCBWakeFromSuspend(void);
> void USBCB_SOF_Handler(void);
> void USBCBErrorHandler(void);
> void USBCBCheckOtherReq(void);
> void USBCBStdSetDscHandler(void);
> void USBCBInitEP(void);
> void USBCBSendResume(void);
> bool USER_USB_CALLBACK_EVENT_HANDLER(USB_EVENT event, void *pdata, uint16_t size);
>
> #pragma code
> int main(void)
> {
> // クロック設定 8MHz→96MHz/3=32MHz
> CLKDIVbits.RCDIV = 0; // FRC Postscaler Select bits = 8MHz
> CLKDIVbits.CPDIV = 0; // USB System Clock Select bits = 32MHz
> CLKDIVbits.PLLEN = 1; // 96 MHz PLL Enable bit
> // 入出力ポート設定 -------------------------------------------------
> TRISB = 0x00FF;
> TRISC = 0x1000;
> TRISD = 0x0000;
> TRISE = 0x0000; // Output=LED1,LED2
> TRISF = 0x0000;
> TRISG = 0x020C; // Input =RG2(D+),RG3(D-)
>
> // USB初期化とAPスタート --------------------------------------------
> USBDeviceInit(); // USB初期化
> USBGenericInHandle = 0;
> USBGenericOutHandle = 0;
> // USBDeviceAttach(); // USBアタッチ許可と割り込み許可
>
> LATEbits.LATE5 = 1; // LED点灯
>
> while(1){
> Delayms(1000);
> LATEbits.LATE6 ^= 1; // LED点滅
> // USB接続中なら送受信実行 --------------------------------------
> if((USBDeviceState >= CONFIGURED_STATE)&&(USBSuspendControl!=1)){
> }
> }
> }
>
> //-----------------------------------------------------------------------
> // タイマ4による1msec単位の遅延関数 Tcy=16MHz
> //-----------------------------------------------------------------------
> void Delayms( unsigned int t){
> IFS1bits.T4IF = 0; // 割り込みフラグクリア
> PR4 = 2000; // 1msec設定
> T4CON = 0x8010; // タイマ4スタート プリスケーラ 1/8
> while (t--) { // 繰り返し回数
> while (!IFS1bits.T4IF); // 1msec待ち
> IFS1bits.T4IF = 0; // 割り込みフラグクリア
> }
> }
>
> void USBCBSuspend(void)
> {
> }
> void USBCBWakeFromSuspend(void)
> {
> }
> void USBCB_SOF_Handler(void)
> {
> }
> void USBCBErrorHandler(void)
> {
> }
> void USBCBCheckOtherReq(void)
> {
> }
> void USBCBStdSetDscHandler(void)
> {
> }
> void USBCBInitEP(void)
> {
> USBEnableEndpoint(USBGEN_EP_NUM,USB_OUT_ENABLED|USB_IN_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP);
> USBGenericOutHandle = USBGenRead(USBGEN_EP_NUM,(uint8_t*)&OUTPacket,USBGEN_EP_SIZE);
> }
> void USBCBSendResume(void)
> {
> static uint16_t delay_count;
>
> if(USBGetRemoteWakeupStatus() == true){
> // Verify that the USB bus is in fact suspended, before we send remote wakeup signalling.
> if(USBIsBusSuspended() == true){
> USBMaskInterrupts();
> // Clock switch to settings consistent with normal USB operation.
> USBCBWakeFromSuspend();
> USBSuspendControl = 0;
> USBBusIsSuspended = false; // So we don't execute this code again,
> delay_count = 3600U;
> do{
> delay_count--;
> }while(delay_count);
> // Now drive the resume K-state signalling onto the USB bus.
> USBResumeControl = 1; // Start RESUME signaling
> delay_count = 1800U; // Set RESUME line for 1-13 ms
> do{
> delay_count--;
> }while(delay_count);
> USBResumeControl = 0; // Finished driving resume signalling
> USBUnmaskInterrupts();
> }
> }
> }
>
> bool USER_USB_CALLBACK_EVENT_HANDLER(USB_EVENT event, void *pdata, uint16_t size)
> {
> switch( (int)event ){
> case EVENT_TRANSFER:
> break;
> case EVENT_SOF:
> USBCB_SOF_Handler();
> break;
> case EVENT_SUSPEND:
> USBCBSuspend();
> break;
> case EVENT_RESUME:
> USBCBWakeFromSuspend();
> break;
> case EVENT_CONFIGURED:
> USBCBInitEP();
> break;
> case EVENT_SET_DESCRIPTOR:
> USBCBStdSetDscHandler();
> break;
> case EVENT_EP0_REQUEST:
> USBCBCheckOtherReq();
> break;
> case EVENT_BUS_ERROR:
> USBCBErrorHandler();
> break;
> case EVENT_TRANSFER_TERMINATED:
> break;
> default:
> break;
> }
> return true;
> }
> -----------------------------------------

USBの接続 投稿者:miya 投稿日:2016/09/28(Wed) 20:39:24 No.701

初心者です。
回答いただけますと助かります。

PIC24FJ64GC006を使用してUSB接続をしたいのですが上手くいきません。

USBDeviceInit()とUSBDeviceAttach()を実行し、
PCのデバイスマネージャーで不明なデバイスとして認識するところまでも行っておりません。

動作確認のため2ヶのLEDを点灯と点滅させました。
USBDeviceAttach()の行を削除すると、LEDは点灯と点滅をしますが。
USBDeviceAttach()の行があると、2ヶのLEDは、消灯したままです。

USBDeviceAttach()を削除せずに、DEBUG MODEを実行すると、
Target Haltedのメッセージがあり、DebugConsoleには、
下記が表示されています。
------------------
__DefaultInterrupt ( ) @ Compiler generated location : 0x2e0
User program running
User program stopped
User program stopped
------------------

プログラムは下記で試しました。
-----------------------
#include <xc.h>
#include <p24FJ64GC006.h>
#include "USB/usb.h"
#include "USB/usb_device.h"
#include "USB/usb_device_generic.h"
#include "usb_config.h"

// CONFIG4
#pragma config DSWDTPS = DSWDTPS1F // Deep Sleep Watchdog Timer Postscale Select bits (1:68719476736 (25.7 Days))
#pragma config DSWDTOSC = LPRC // DSWDT Reference Clock Select (DSWDT uses LPRC as reference clock)
#pragma config DSBOREN = OFF // Deep Sleep BOR Enable bit (DSBOR Disabled)
#pragma config DSWDTEN = OFF // Deep Sleep Watchdog Timer Enable (DSWDT Disabled)
#pragma config DSSWEN = OFF // DSEN Bit Enable (Deep Sleep operation is always disabled)
#pragma config RTCBAT = OFF // RTC Battery Operation Enable (RTC operation is discontinued in VBAT)
#pragma config PLLDIV = DIV2 // PLL Input Prescaler Select bits (Oscillator divided by 2 (8 MHz input))
#pragma config I2C2SEL = PRI // Alternate I2C2 Location Select bit (I2C2 is multiplexed to SDA2/RA3 and SCL2/RA2 )
#pragma config IOL1WAY = OFF // PPS IOLOCK Set Only Once Enable bit (The IOLOCK bit can be set and cleared using the unlock sequence)
// CONFIG3
#pragma config WPFP = WPFP127 // Write Protection Flash Page Segment Boundary (Page 127 (0x1FC00))
#pragma config SOSCSEL = OFF // SOSC Selection bits (Digital (SCLKI) mode)
#pragma config WDTWIN = PS25_0 // Window Mode Watchdog Timer Window Width Select (Watch Dog Timer Window Width is 25 percent)
#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset Disabled)
#pragma config WPDIS = WPDIS // Segment Write Protection Disable (Disabled)
#pragma config WPCFG = WPCFGDIS // Write Protect Configuration Page Select (Disabled)
#pragma config WPEND = WPENDMEM // Segment Write Protection End Page Select (Write Protect from WPFP to the last page of memory)
// CONFIG2
#pragma config POSCMD = EC // Primary Oscillator Select (External-Clock Mode Enabled)
#pragma config WDTCLK = LPRC // WDT Clock Source Select bits (WDT uses LPRC)
#pragma config OSCIOFCN = OFF // OSCO Pin Configuration (OSCO/CLKO/RC15 functions as CLKO (FOSC/2))
#pragma config FCKSM = CSDCMD // Clock Switching and Fail-Safe Clock Monitor Configuration bits (Clock switching and Fail-Safe Clock Monitor are disabled)
#pragma config FNOSC = PRIPLL // Initial Oscillator Select (Primary Oscillator with PLL module (XTPLL,HSPLL, ECPLL))
#pragma config ALTADREF = AVREF_RB // External 12-Bit A/D Reference Location Select bit (AVREF+/AVREF- are mapped to RB0/RB1)
#pragma config ALTCVREF = CVREF_RB // External Comparator Reference Location Select bit (CVREF+/CVREF- are mapped to RB0/RB1)
#pragma config WDTCMX = WDTCLK // WDT Clock Source Select bits (WDT clock source is determined by the WDTCLK Configuration bits)
#pragma config IESO = OFF // Internal External Switchover (Disabled)
// CONFIG1
#pragma config WDTPS = PS32768 // Watchdog Timer Postscaler Select (1:32,768)
#pragma config FWPSA = PR128 // WDT Prescaler Ratio Select (1:128)
#pragma config WINDIS = OFF // Windowed WDT Disable (Standard Watchdog Timer)
#pragma config FWDTEN = WDT_DIS // Watchdog Timer Enable (WDT disabled in hardware; SWDTEN bit disabled)
#pragma config ICS = PGx2 // Emulator Pin Placement Select bits (Emulator functions are shared with PGEC2/PGED2)
#pragma config LPCFG = ON // Low power regulator control (Low voltage regulator controlled in sw by RETEN bit)
#pragma config GWRP = OFF // General Segment Write Protect (Disabled)
#pragma config GCP = OFF // General Segment Code Protect (Code protection is disabled)
#pragma config JTAGEN = OFF // JTAG Port Enable (Disabled)

// USB関連バッファ ------------------------------------------------------
#pragma udata
unsigned char INPacket[64]; // USB送信バッファ
unsigned char OUTPacket[64]; // USB受信バッファ
USB_HANDLE USBGenericOutHandle;
USB_HANDLE USBGenericInHandle;

void Delayms( unsigned int t);
void USBCBSuspend(void);
void USBCBWakeFromSuspend(void);
void USBCB_SOF_Handler(void);
void USBCBErrorHandler(void);
void USBCBCheckOtherReq(void);
void USBCBStdSetDscHandler(void);
void USBCBInitEP(void);
void USBCBSendResume(void);
bool USER_USB_CALLBACK_EVENT_HANDLER(USB_EVENT event, void *pdata, uint16_t size);

#pragma code
int main(void)
{
// クロック設定 8MHz→96MHz/3=32MHz
CLKDIVbits.RCDIV = 0; // FRC Postscaler Select bits = 8MHz
CLKDIVbits.CPDIV = 0; // USB System Clock Select bits = 32MHz
CLKDIVbits.PLLEN = 1; // 96 MHz PLL Enable bit
// 入出力ポート設定 -------------------------------------------------
TRISB = 0x00FF;
TRISC = 0x1000;
TRISD = 0x0000;
TRISE = 0x0000; // Output=LED1,LED2
TRISF = 0x0000;
TRISG = 0x020C; // Input =RG2(D+),RG3(D-)

// USB初期化とAPスタート --------------------------------------------
USBDeviceInit(); // USB初期化
USBGenericInHandle = 0;
USBGenericOutHandle = 0;
// USBDeviceAttach(); // USBアタッチ許可と割り込み許可

LATEbits.LATE5 = 1; // LED点灯

while(1){
Delayms(1000);
LATEbits.LATE6 ^= 1; // LED点滅
// USB接続中なら送受信実行 --------------------------------------
if((USBDeviceState >= CONFIGURED_STATE)&&(USBSuspendControl!=1)){
}
}
}

//-----------------------------------------------------------------------
// タイマ4による1msec単位の遅延関数 Tcy=16MHz
//-----------------------------------------------------------------------
void Delayms( unsigned int t){
IFS1bits.T4IF = 0; // 割り込みフラグクリア
PR4 = 2000; // 1msec設定
T4CON = 0x8010; // タイマ4スタート プリスケーラ 1/8
while (t--) { // 繰り返し回数
while (!IFS1bits.T4IF); // 1msec待ち
IFS1bits.T4IF = 0; // 割り込みフラグクリア
}
}

void USBCBSuspend(void)
{
}
void USBCBWakeFromSuspend(void)
{
}
void USBCB_SOF_Handler(void)
{
}
void USBCBErrorHandler(void)
{
}
void USBCBCheckOtherReq(void)
{
}
void USBCBStdSetDscHandler(void)
{
}
void USBCBInitEP(void)
{
USBEnableEndpoint(USBGEN_EP_NUM,USB_OUT_ENABLED|USB_IN_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP);
USBGenericOutHandle = USBGenRead(USBGEN_EP_NUM,(uint8_t*)&OUTPacket,USBGEN_EP_SIZE);
}
void USBCBSendResume(void)
{
static uint16_t delay_count;

if(USBGetRemoteWakeupStatus() == true){
// Verify that the USB bus is in fact suspended, before we send remote wakeup signalling.
if(USBIsBusSuspended() == true){
USBMaskInterrupts();
// Clock switch to settings consistent with normal USB operation.
USBCBWakeFromSuspend();
USBSuspendControl = 0;
USBBusIsSuspended = false; // So we don't execute this code again,
delay_count = 3600U;
do{
delay_count--;
}while(delay_count);
// Now drive the resume K-state signalling onto the USB bus.
USBResumeControl = 1; // Start RESUME signaling
delay_count = 1800U; // Set RESUME line for 1-13 ms
do{
delay_count--;
}while(delay_count);
USBResumeControl = 0; // Finished driving resume signalling
USBUnmaskInterrupts();
}
}
}

bool USER_USB_CALLBACK_EVENT_HANDLER(USB_EVENT event, void *pdata, uint16_t size)
{
switch( (int)event ){
case EVENT_TRANSFER:
break;
case EVENT_SOF:
USBCB_SOF_Handler();
break;
case EVENT_SUSPEND:
USBCBSuspend();
break;
case EVENT_RESUME:
USBCBWakeFromSuspend();
break;
case EVENT_CONFIGURED:
USBCBInitEP();
break;
case EVENT_SET_DESCRIPTOR:
USBCBStdSetDscHandler();
break;
case EVENT_EP0_REQUEST:
USBCBCheckOtherReq();
break;
case EVENT_BUS_ERROR:
USBCBErrorHandler();
break;
case EVENT_TRANSFER_TERMINATED:
break;
default:
break;
}
return true;
}
-----------------------------------------

Re^2: 超初心者ですが・・・・。 投稿者:TO 投稿日:2016/09/27(Tue) 09:21:11 No.699

そうでした。
分かりました。

void AppTasks(void){で
LATD=0xFFFF
LATD=0

ONとOFFを連続して書いているのを
見落としてました。
OFFはInitialにしかないと思い込んで
Initalが走るタイミングが、連続してあるのかと勘違いしておりました。
ありがとうございました。




> いえいえmainの中のwhile(1)で永久ループで繰り返し実行
> させていますよ。
>
>
> > PIC32MZでファームウェアを開発したくて
> > 勉強を始めました。
> > ですが、参照URLにある内容がさっそく理解できません。
> > 本URLですと、オシロの波形が連続的に実行されていますが
> > 私の読解力では、1回だけしか、波形は出ない気がします。
> > Taskの動作が理解できていないと思います。
> > 何か、参考になる書籍などありませんでしょうか?
> > 申し訳ありませんがご教示ください。

Re: 超初心者ですが・・・・。 投稿者:Gokan 投稿日:2016/09/26(Mon) 21:12:31 No.698

いえいえmainの中のwhile(1)で永久ループで繰り返し実行
させていますよ。


> PIC32MZでファームウェアを開発したくて
> 勉強を始めました。
> ですが、参照URLにある内容がさっそく理解できません。
> 本URLですと、オシロの波形が連続的に実行されていますが
> 私の読解力では、1回だけしか、波形は出ない気がします。
> Taskの動作が理解できていないと思います。
> 何か、参考になる書籍などありませんでしょうか?
> 申し訳ありませんがご教示ください。

超初心者ですが・・・・。 投稿者:TO 投稿日:2016/09/26(Mon) 19:52:26 No.697

PIC32MZでファームウェアを開発したくて
勉強を始めました。
ですが、参照URLにある内容がさっそく理解できません。
本URLですと、オシロの波形が連続的に実行されていますが
私の読解力では、1回だけしか、波形は出ない気がします。
Taskの動作が理解できていないと思います。
何か、参考になる書籍などありませんでしょうか?
申し訳ありませんがご教示ください。

Re^3: MLA USB HID 64bitOS 投稿者:triton 投稿日:2016/09/25(Sun) 15:27:31 No.696

自己解決致しましたので、報告させて頂きます。
結論から申し上げますと、32bitOSでは、

Structure SP_DEVICE_INTERFACE_DETAIL_DATA
Dim cbSize As UInteger
Dim DevicePath() As Char
End Structure

Dim DetailedInterfaceDataStructure As New SP_DEVICE_INTERFACE_DETAIL_DATA()


DetailedInterfaceDataStructure.cbSize = 6
'//Initialize the cbSize parameter (4 bytes for DWORD + 2 bytes for unicode null terminator)

ですが、64bitOSでは、

DetailedInterfaceDataStructure.cbSize = 8

とすると、うまく動きました。
何故だかは分りません。^^;

下記のサイトを参考にしました。
http://www.codingforums.com/computer-programming/127218-c-enumerating-hid-vista-x64.html

以上、ご報告まで。

Re^4: CLC設定ツール 投稿者:Gokan 投稿日:2016/09/22(Thu) 08:49:51 No.690

MCCで他の周辺も含めて左上にある「Generate」のボタンをクリック
すれば生成されます。
詳しくは、次号のトランジスタ技術誌を参照ください。


> すみません、先ほどの書き込みでキャプチャ画面は載せたんですけど
> 文章を書き損ねてしまい申し訳ありません
>
> CLC Configuration Toolまでは呼び出せたのですが
> Fileメニューを出してもSave C Codeというのが出てきません
> コピーペーストをするためのC言語ソースはどうやって出力するのでしょうか

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

- WebForum -