Witam, mam taki projekt do zrobienia w którym muszę miedzy innymi wysłać informacje z ATMEGI-8 do komputera.
Napisałam krótki program który powinien wysyłać co 5 sekund znak '5' przez TxD procesora:
Program jest oparty na przykładach z tej strony:
http://avr.elektroda.eu/?q=node/16
przy czym tutaj jest Atmega16 więc są inne rejestry i nie wiem czy dobrze je pozamieniałam.
oczywiście coś nie działa i właśnie chciałam się zapytać co robię źle?
program kompiluję w AVR Studio 4 z AVR-GCC
a stan na RSie sprawdzam programem Terminal v1.9b , który znalazłam tutaj na elektrodzie
wtyczka i układ są na pewno dobrze połączone bo dostałam je od prowadzącego. Używane są tu tylko piny 2,3,4 i 5 RSa, zgodnie z tym obrazkiem http://pl.wikipedia.org/wiki/RS232
Napisałam krótki program który powinien wysyłać co 5 sekund znak '5' przez TxD procesora:
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 1000000 //częstotliwość zegara w Hz
#define UART_BAUD 600 //prędkość transmisji
#define UART_CONST (F_CPU/(16ul*UART_BAUD)-1)
void putchar (char c)
{
UDR=c;
loop_until_bit_is_set(UCSRA,TXC);
UCSRA |= _BV(TXC); //sbi(USR,TXC);
}
void UART_init(void)
{
UBRRL = (unsigned char)UART_CONST; // ustaw prędkość transmisji
UCSRB = _BV(RXEN)|_BV(TXEN); // załącz tx, rx
}
int main(void)
{
DDRD=0x02;
PORTD=0x02;
UART_init();
while(1)
{
putchar('5');
_delay_ms(5000);
}
}
Program jest oparty na przykładach z tej strony:
http://avr.elektroda.eu/?q=node/16
przy czym tutaj jest Atmega16 więc są inne rejestry i nie wiem czy dobrze je pozamieniałam.
oczywiście coś nie działa i właśnie chciałam się zapytać co robię źle?
program kompiluję w AVR Studio 4 z AVR-GCC
a stan na RSie sprawdzam programem Terminal v1.9b , który znalazłam tutaj na elektrodzie
wtyczka i układ są na pewno dobrze połączone bo dostałam je od prowadzącego. Używane są tu tylko piny 2,3,4 i 5 RSa, zgodnie z tym obrazkiem http://pl.wikipedia.org/wiki/RS232
