G
grindylow
Guest
Bonjour, j'ai été joué avec 18F4550 comme un périphérique USB utilisant un firmware modifié la CDC.J'ai récemment eu besoin d'avoir un autre 18F4550 être contrôlé comme un dispositif esclave.Le problème est lorsque je envoyer des données à l'esclave, le maître raccroche (le gel statut blinkusb).Je interfacé à l'aide USART ensuite changé à un logiciel puis UART I2C et le même scénario se poursuit.Avant cela, j'ai réussi à l'interface d'un capteur qui sorties de données en série, je l'ai fait en utilisant un logiciel UART (juste Rx est utilisé).Maintenant, je l'utilise en interface SPI et il ne gèle plus, mais l'esclave ne fait toujours pas de données.Quelqu'un peut-il me donner un coup de main à ce sujet?Je suis vraiment bloqué sur cette ..
voici mon code maître, et c'est au sein de l'processio () fonction:
Code:
if (getsUSBUSART (USB_Out_Buffer, 4))
(
received_data0 = USB_Out_Buffer [0];
received_data1 = USB_Out_Buffer [1];switch (received_data0)
(
case 'T':
USB_In_Buffer [0] = 'X';
if (état de mUSBUSARTIsTxTrfReady ())
(
putUSBUSART (USB_In_Buffer, 1);
)
break;
case 'q':
mLED_3_Off ();
break;
case 'Q':
mLED_3_On ();
break;
case '':
mLED_4_Off ();
break;
case 'W':
mLED_4_On ();
break;
case '*':
servo = 'a';
break;
default: break;
)
)if (servo == 'a')
(
OpenSPI (SPI_FOSC_4, MODE_11, SMPMID);
PORTCbits.RC2 = 0;
Delay10TCYx (5);
WriteSPI (received_data1);
Delay10TCYx (5);
PORTCbits.RC2 = 1;
CloseSPI ();
servo=0x00;
)
voici mon code maître, et c'est au sein de l'processio () fonction:
Code:
if (getsUSBUSART (USB_Out_Buffer, 4))
(
received_data0 = USB_Out_Buffer [0];
received_data1 = USB_Out_Buffer [1];switch (received_data0)
(
case 'T':
USB_In_Buffer [0] = 'X';
if (état de mUSBUSARTIsTxTrfReady ())
(
putUSBUSART (USB_In_Buffer, 1);
)
break;
case 'q':
mLED_3_Off ();
break;
case 'Q':
mLED_3_On ();
break;
case '':
mLED_4_Off ();
break;
case 'W':
mLED_4_On ();
break;
case '*':
servo = 'a';
break;
default: break;
)
)if (servo == 'a')
(
OpenSPI (SPI_FOSC_4, MODE_11, SMPMID);
PORTCbits.RC2 = 0;
Delay10TCYx (5);
WriteSPI (received_data1);
Delay10TCYx (5);
PORTCbits.RC2 = 1;
CloseSPI ();
servo=0x00;
)