G
grindylow
Guest
Pozdravljeni, imam been igranje okrog s 18F4550 kot napravo USB z uporabo spremenjenih firmware CDC.Pred kratkim sem potrebno imeti še eden 18F4550, ki se nadzira kot suženj napravo.Problem je, kadar moram poslati podatke slave, mojster visi gor (blinkusb status zamrzne).I vmesniki to using USART potem spremenili, da software UART potem I2C in isti scenarij goes on.Pred tem, sem uspelo vmesnik, senzor, da rezultati serijski podatki, sem storil, da je uporaba programske opreme, UART (samo Rx se uporablja).Sedaj sem ga z vmesniki SPI in ne zamrzne več suženj, ampak še vedno ne dobi nobenih podatkov.Ali lahko kdorkoli izročiti mi roko na to?Res sem zaljubljen v zvezi s tem ..
Tu je moj gospodar kodo, in je v ProcessIO () funkcijo:
Code:
if (getsUSBUSART (USB_Out_Buffer, 4))
(
received_data0 = USB_Out_Buffer [0];
received_data1 = USB_Out_Buffer [1];stikalo (received_data0)
(
primer "T":
USB_In_Buffer [0] = 'X';
if (mUSBUSARTIsTxTrfReady ())
(
putUSBUSART (USB_In_Buffer, 1);
)
break;
primeru "q":
mLED_3_Off ();
break;
primeru "Q":
mLED_3_On ();
break;
primeru "w":
mLED_4_Off ();
break;
primeru "W":
mLED_4_On ();
break;
primeru "*":
servo = '';
break;
default: break;
)
)if (servo == '')
(
OpenSPI (SPI_FOSC_4, MODE_11, SMPMID);
PORTCbits.RC2 = 0;
Delay10TCYx (5);
WriteSPI (received_data1);
Delay10TCYx (5);
PORTCbits.RC2 = 1;
CloseSPI ();
servo = 0x00;
)
Tu je moj gospodar kodo, in je v ProcessIO () funkcijo:
Code:
if (getsUSBUSART (USB_Out_Buffer, 4))
(
received_data0 = USB_Out_Buffer [0];
received_data1 = USB_Out_Buffer [1];stikalo (received_data0)
(
primer "T":
USB_In_Buffer [0] = 'X';
if (mUSBUSARTIsTxTrfReady ())
(
putUSBUSART (USB_In_Buffer, 1);
)
break;
primeru "q":
mLED_3_Off ();
break;
primeru "Q":
mLED_3_On ();
break;
primeru "w":
mLED_4_Off ();
break;
primeru "W":
mLED_4_On ();
break;
primeru "*":
servo = '';
break;
default: break;
)
)if (servo == '')
(
OpenSPI (SPI_FOSC_4, MODE_11, SMPMID);
PORTCbits.RC2 = 0;
Delay10TCYx (5);
WriteSPI (received_data1);
Delay10TCYx (5);
PORTCbits.RC2 = 1;
CloseSPI ();
servo = 0x00;
)