Boa noite Comunidade! Salve Matheus!
Excelente trabalho! Que nunca te faltem respostas e auxílio em tudo que você procurar!
Matheus, sou mais um que estou te "seguindo" aqui, e meu foco nesse instante é na comunicação USB entre o 18F4550 e um PC. Segui à risca seus códigos para programar o PIC usando um compilador CCS versão 4.114 e montei o hardware também exatamente como você indicou. No PC uso Windows 7 e montei em Visual C#2008 um programinha muito simples usando seus códigos também, mas usando apenas as funções Status_Pic() e SumaPic().
Consegui resolver todos os problemas com drivers com pouca dificuldade... O Pic é reconhecido, é enumerado, reconhece o pedido do PC, tanto de Soma quando de Status, mas não responde em hipótese alguma, e, pior do que isso, trava depois de apenas um pedido respondido.
Evoluindo um pouco o código para tentar descobrir onde estaria o problema, eu coloquei leds para verificar se o PIC recebia e entendia os pedido de Status ou Soma, e os leds efetivamente são acionados quando o programa no PIC "passa" pelas funções que deveriam responder se foi solicitada uma Soma ou seu Status. Além disso, coloquei 8 leds no PORTB e quando uso a sua função de SumaPic, o PIC entende essa solicitação, recebe corretamente os dados da parcelas a serem somadas enviadas pelo PC e, como eu programei, coloca, em binários claro, os valores das duas parcelas a serem somadas, separadas por um delay no PORTB... mas depois de apenas uma solitação, seja de Soma ou de Status, o programa trava no looping e não mais reconhece os pedidos do PC.
Quando eu compilo o PIC aparecem os seguintes avisos:
>>> Warning 203 "C:\Program Files\PICC\drivers\pic18_usb.c" Line 619(1,1): Condition always TRUE
>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_token_reset)
>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_flush_out)
>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_tbe)
>>> Warning 216 "TesteUSB.c" Line 149(0,1): Interrupts disabled during call to prevent re-entrancy: (usb_flush_in)
>>> Warning 202 "TesteUSB.c" Line 37(6,10): Variable never used: send
>>> Warning 202 "TesteUSB.c" Line 40(7,10): Variable never used: adc
Memory usage: ROM=13% RAM=10% - 12%
0 Errors, 7 Warnings.
Não sei bem, mas acho que o erro pode estar nos arquivos ".c" ou ".h" incluídos no projeto... Será que alguém pode me dar um help nisso!
Obrigado a todos pela atenção! Fiquem em paz e com Deus, sempre!