Ir para conteúdo
Fórum Script Brasil
  • 0

Como criar "data_packets" para envio posterior?


fernando306

Pergunta

Olá pessoal, tudo bem?

Estou com um projeto utilizando um Microcontrolador PIC, que pega os dados via paralela e os envia para um Pen Drive na porta USB.

Está funcionando, mas não tem velocidade suficiente pois estou enviando apenas 1 byte por vez. Como o comando de "escrita" requer muito processamento, requisita-lo para cada byte a ser enviado não rola. Ao invés disso, preciso requisita-lo apenas 1 vez para um determinado "data_packet", por exemplo de 32 bytes. O problema é que eu não sei como fazer esse "buffer de dados". :huh:

Acredito que seja uma questão genérica que uma pessoa que programe em C, independente da plataforma, saiba responder.

Agradeço muito sugestões!

Obrigado e um abraço.

Editado por fernando306
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

bom estou tempos sem entrar no forum mais vou te ajudar tenho esperiencia em assembly ^^ MPLAB né xD

vou te dar uma ideia você quer que quando você digitar uma tecla espera as proximas para depois enviar para a porta certo bom criei um loop, nesse loop você coloca a verificacão das teclas e um buffer + um contador para colocar seus caracter em cada um dos pontos do buffer (array em c++) depois pegue uma porta que não sera usada é bote um botão que verificara que você quer manda o buffer para o PC

vou fazer um codigo de exemplo + ou - de como você deveria fazer

se tiver algum erro desculpe faz tempo que não mexo com pic uhauha 2 meses ^^

buffer db 20 dup ?; aumente aqui caso necessario so que o codigo tem que estabelecer o limite se não
                         ; vai travar tudo ...

; codigo principal seu

; buffer
buffer:
cmp porta, 'LETRA'; bom caso você esteja usando uma matriz de teclado 
                          ; você tera que iniciar a matriz e jogar as combinações dentro de um buffer sera mais ou menos assim
cmp comb_tecla, 'LETRA'
jnz letra_letra

letra_letra:
mov [buffer+contador], 'LETRA'; bota a letra no buffer 

;.... faz isso com todas as letras que achar necessario
; tem outros metodos para fazer isso procure na net que você acha

cmp porta_envia, 1; aqui ele compara o botão de enviar caso o botão de enviar seja apertado ele sai do loop buffer
; e inicia normalmente o envio do buffer
jnz enviar_buffer

enviar_buffer:

; resto do codigo

bom caso não conseguiu entender meu codigo add no MSN lucasground@hotmail.com

não sei explicar direto mais se ajudou agradeçe não custa nada ^^ (sendo que não existe botão de agradeçer aqui :huh: ) xD

@edit

caso queria fazer isso em C e so fazer o inverso do assembly as comparaçôes faz if buffer um array e os saltos funcões ...

Editado por ce1o2e
Link para o comentário
Compartilhar em outros sites

  • 0

Heheheheheh é MPLAB sim mas a linguagem é C rsrsrs....

Acabei criando uma matriz bi-dimensional:

char data_packet[tamanho]

Cheguei a usar 2560 bytes de buffer e nada rapá hehehhe... O PIC24F não é rápido o suficiente... Daí eu tentei overclockar ele de 32 para 40Mhz!!! :wacko: O problema é que a UART não funcionou e não pude enviar os comandos uahauhauhauha... Ainda dá pra tentar usar a PMP, mas acho que vou simplismente pular pro PIC32MX, porque esse aqui já tá arreiando e ainda tem muito mais código pra escrever kkkk

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...