Página 1 de 1
Comunicação Serial Atmega16

Enviado:
16 Mai 2009 15:13
por firewalk
prezados amigos, estou arrecem começando a apreender a usar microcontrolador AVR, estou utilizando o AVRstudio, bom estou precisando utilizar a comunicação serial (USART), para interconectar o Atmega 16 com um display LCD serial 20x4, vendido pela Tato Equipamentos, mas não sei como fazer se alguem puder me ajudar com um fragmento do código fonte ficarei grato.

Enviado:
16 Mai 2009 20:36
por rubenprom
Ola Firewalk
Aqui posso te mandar um exemplo de comunicação serial mas para mandar um dado via serial para o "COMPUTADOR".
pode ser que surja alguma ideia
#include <avr\io.h>
void iniciaSERIAL(void);
int main()
{
iniciaSERIAL();
printf("Ola Mundo");
}
void iniciaSERIAL(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600 (Double Speed Mode)
UCSRA=0x02;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0C;
}
Só nao testei, apenas compilou, tenho quase certeza que funciona, pois nao tenho aqui atmega16 para etstar, ja que travei os que tinha
abraço
Ruben

Enviado:
17 Mai 2009 18:35
por RobL
Terá que configurar a UART para comunicação half duplex sÃncrona, diferente do PC que é assÃncrona.
Veja como configurar no datasheet. É o mesmo que enviar dados para uma EEPROM serial, ou outro chip via USART.
Depois é só enviar o protocolo "frame" de acordo com seu LCD.

Enviado:
19 Mai 2009 09:08
por RobL
Acredito que seja mais fácil usar o SPI para se comunicar com seu LCD serial.
Mas se preferir pela USART :
http://www.atmel.com/dyn/resources/prod ... AVR307.zip
http://www.atmel.com/dyn/resources/prod ... oc4300.pdf
No arquivo pdf tem as explicações e no AVR307 zip código exemplo.

Enviado:
19 Mai 2009 11:23
por Djalma Toledo Rodrigues
Bom, se desejar se aprofundar veja o Data Sheet da Usart 8251 da Intel mas, antes veja o Código Baudot de telegrafia.
Ambos podem ser localizados via Google.
.

Enviado:
21 Mai 2009 18:34
por vohr56
Aproveitando o assunto do tópico, Alguém sabe se há como emular portas seriais nos AVR's? Eu estou acostumado a utilizar o mega8. Ele possui 1 usart, mas gostaria de mais uma. No pic sei que isso é possível e fácil de se fazer. O compilador CCS faz isso com um pé nas costas. Mas pro AVR ainda não vi nada parecido.
Abraços

Enviado:
21 Mai 2009 19:50
por brasilma
Vohr,
Com certeza isto é possivel seja com o AVR ou qualquer processador.
No 51 fazia em assembler com apenas poucas linhas.
Não tenho nada feito para o AVR senão postava no ato, porem tenho certeza de que se fizer algumas buscas acha (pesquise AVR Bit Bang).
Basicamente para transmitir pega o byte desejado e vai shiftando um bit por vez, com uma cadencia controlada por um delay (baud rate /

, se o bit for 1 seta a saída se for zero reseta.
Após 8 bit tem de deixar a saída em 1 me parece para o stop bit.
Para receber pode utilisar uma entrada de interrupção e montar a rotininha inversa.
Abraços,
Marcos.

Enviado:
22 Mai 2009 11:27
por RobL
Conforme o Brasilma colocou pode ser feito por software para qualquer chip.
Mas note que há um outro módulo, além da USART (hardware) disponível nos AVRs, o SPI.
Quando programamos, via PC, com ISP, os dados entram pelo SPI. Você pode usar o mesmo processo para se comunicar com o PC via SPI e usando também a UART. Isto pode ser feito mesmo no ATmega8.