E ai pessoal, e Sergio desculpem a demora...
Depois de mais algumas tentativas fracassadas pela SPI resolvi chutar o balde e seguir seu conselho.
Habilitei o módulo para o modo serial e fiz uns testes direto do computador, de início tive alguns problemas mas funcionou, valeu pela dica.
Respondendo as suas perguntas.
Sergio38br escreveu:...os dados serão muitos grandes, com expressiva frequencia??...
Sim, pelo que me lembro eram frases de uma ou duas linhas, em média umas 35 palavras por frase que eram impressas na folha. Era um tipo de descrição do evento composto por um numero de log, data, hora e a frase de descrição.
A frequência vai depender da quantidade de eventos durante o dia. Vou ver se consigo uma cópia para ter certeza. Com relação ao módulo, eu fiz uma série de testes e cheguei a montar um mini tutorial "este que esta ai embaixo" na documentação diz que o módulo tem um buffer que suporta 80 caracteres para escrita, mas fiz um teste com 100 e não deu erro, só que os 80 ja resolvem o meu problema... espero...
Sergio38br escreveu:...Emule a serial, naum precisa no caso dela em hardware?...
Vou fazer isso, estou pensando em habilitar a serial do hardware do Pic para comunicação com o sistema e emular uma outra para se comunicar com o módulo. Vou fazer em C que é mais fácil.
Segue abaixo um mini tutorial com os comandos básicos que vou precisar, não tem muito segredo mas descobri um bug.
- Código: Selecionar todos
*Para detecção de velocidade no modo RS232 não é suficiente enviar o comando Enter (0x0d = 13 decimal) duas vezes como manda o fabricante, é necessário enviar 10 ou 15 bytes seguidos do comando Enter várias vezes sequêncialmente até o módulo responder com o simbolo (>) ou com (-10>) que indica erro de comando.
*Para usar o modo de comunicação a 3 fios no modo RS232 basta conectar normalmente TX, RX e GND e ligar o pino CTS do módulo no GND e deixar desconetctado o RTS.
*O simbolo (>) indica que o módulo esta pronto e esperando um novo comando.
*Depois de escrever um comando é necessário enviar um Enter = 0x0d = 13 decimal.
*Podem ser abertos no máximo 4 arquivos de 0~3 posições, se o arquivo for aberto para escrita ele ocupa uma posição, o mesmo arquivo pode ser aberto ao mesmo tempo para leitura, mas ocupa outra posição restando apenas duas. Não é possível abrir o mesmo arquivo duas vezes para leitura ou escrita e a orderm é primeiro para escrita e depois para leitura.
*É possível criar o arquivo com qualquer extensão, inclusive .csv desde que seja obedecida a norma.
//***Teste de comandos de escrita***
ow REGIS.TXT
//Comando para criar ou abrir para escrita (ow) um arquivo chamado (REGIS.TXT), se este arquivo existir ele abre, caso contrário ele cria e abre.
0
>w #0 30
// o módulo envia (0 >) que indica que foi criado ou aberto como arquivo 0 e espera um novo comando (w) é o comado de escrita, (#0) indica que será escrito no arquivo 0, (30) indica que serão escritos 30 bytes, o máximo é 80.
"TESTE DE ESCRITA em um arquivo">
//o módulo envia o simbolo (") dizendo para começar a escrita e quando termina a escrita dos 30 Bytes o módulo envia o simbolo (") novamente seguido de (>) que indica que os 30 bytes foram recebidos e que esta esperando o próximo comando.
>s #0
//o comando (s #0) indica que queremos saber em que posição o ponteiro esta dentro do arquivo, este comando pode ser usado a qualquer momento.
30
>s #0 15
//(30
>) o módulo responde que o ponteiro esta na posição 30 e espera um novo comando, o comando (s #0 15) diz que queremos mover o ponteiro para a posição 15.
15
>w #0 5
//(15 >)o módulo responde que mudou para posição 15 e espera outro comando, foi solicitada uma nova escrita de 5 bytes (w #0 5) a partir do ponteiro 15 setado anteriormente.
"ASM51"
>s #0
//O módulo atende a solicitação e envia o simbolo (") dizendo que aguarda o texto, depois de escritos os 5 bytes solicitados o módulo envia os simbolos (">) dizendo que recebeu e aguarda novo comando. Depois da escrita o ponteiro foi deslocado cinco posições a frente, foi enviado para o módulo o comando (s #0) para confirmar isso.
20
>q #0
O módulo responde com (20>) dizendo que a posição atual do ponteiro é 20 e aguarda novo comando. Para fechar o arquivo foi usado o comando (q #0) que fechou só o arquivo 0, se for usado apenas o comando (q) sem especificar o arquivo ele fecha todos os quatro caso estejam abertos também.
//***Teste de comando de leitura***
or #1 REGIS.TXT
//O comando (or #1 REGIS.TXT) diz para o módulo que queremos abrir para leitura (or) o arquivo (REGIS.TXT) na posição 1 (#1), pode-se indicar qualquer posição liver mas se omitirmos esta parte (#1) ele vai abrir na primeira posição livre que ele encontrar.
1
>r #1
//O módulo confirma dizendo que o arquivo foi aberto na posição 1 e que esta pronto. O comando (r #1) é um comando de leitura e diz para ler todo o conteudo do arquivo 1.
30
TESTE DE ESCRITASM51um arquivo
//O módulo responde que o arquivo tem 30 bytes e mostra todos os bytes existentes dentro do arquivo, neste ponto tem uma coisa interessante pois quando foi mudada a posição do ponteiro anteriormente para a escrever outros cinco bytes (ASM51) na posição 15, o módulo simplesmente sobrepôs os bytes (A em ) por (ASM51) ao invés de deslocá-lo para frente ficando (TESTE DE ESCRITASM51um arquivo).
>s #1
//O comando de deslocamento de ponteiro pode ser usado também na leitura, neste caso foi apenas para confirmar a posição do ponteiro após a leitura.
30 >s #1 7
//O módulo mostrou que o ponteiro esta na ultima posição (30>), Se a leitura for realizada a partir deste ponto vai dar erro dois este é o fim do arquivo. O comando (S #1 7) diz que é para o ponteiro ser movido para a posição 7.
7 >r #1 8
//O módulo faz a confirmação e em seguida foi enviado o comando de leitura de arquivo (r #1 8) que diz para fazer a leitura de 8 bytes apartir da posição em que encontra o ponteiro, neste caso, posição 7.
8
E ESCRIT
//O módulo faz a leitura e diz que foram lidos 8 bytes, são eles (E ESCRIT).
>i
//O comando (i) pede informação de todos os arquivos dentro do cartão e também funciona no modo de escrita e com arquivos fechados.
2008-01-05 13:01 30 REGIS.TXT
//O módulo responde com data hora tamanho e nome do arquivo
>q
//O comando (q) fecha todos os arquivos abertos.
>d REGIS.TXT
//O comando (d REGIS.TXT) deleta o arquivos (REGIS.TXT).
Imagem do arquivo criado dentro do cartão:
Conteudo do arquivo:
Obrigado pessoal, em breve eu retorno com o resultado ou com mais dúvidas...rs...
Um abraço a todos.
Existem três leis que governam o mundo...
A Lei da gravidade, a Lei do mais forte e a lei de Murphy.