segunda-feira, 18 de fevereiro de 2008

Delineando a rotina de recepção

Após alguns tropeços enquanto escrevia a rotina de recepção de um "buffer", resolvi definir melhor o funcionamento do código que chama a rotina de recepção de dados, do post anterior.

Eis abaixo o fluxograma da rotina, que deve ser chamada com 2 parâmetros:
- Endereço do buffer que vai receber os dados
- Tamanho do buffer de recepção

Uma simplificação importante que fiz, foi que considerar que o buffer está vazio na inícion da chamada da rotina. Isso evita a necessidade de uma chamada de inicialização do buffer e simplifica o tratamento de erros.

Outra vantagem é não depender diretamente de um buffer em RAM para receber temporariamente os caracteres da RS232, o que gerava a necessidade de um LDIR para o destino dos bytes. Com o esquema atual, basta apontar para a região de memória que deve receber os dados e dizer qual o tamanho máximo do buffer de dados.

Caso tudo a recepção tenha se processado corretamente, a quantidade de bytes recebidos é retornada. Caso contrário, um dos códigos de erro é retornado:
  • ERFUL - Buffer Cheiro
  • ERFRA - "Framing error", ou stop bit recebido incorretamente
  • ERBRK - Sinal RTS foi desativado pelo PC antes que o "Start" Bit fosse enviado.


Um comentário:

Anônimo disse...

subsidise goal niger janet coxstate nurse disclosure amanda scores overall airplane
semelokertes marchimundui