Собрал в таком виде (+) Спасибо вам и dxp за помощь :))
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено des00 02 сентября 2004 г. 16:47
В ответ на: 1. Попробуйте sizeof (struct tt). 2 если так не пройдет, то дополнительно вынесите опеределение структуры из union отправлено Bill 02 сентября 2004 г. 16:30


#include
#include

#define LOW_BYTE(WORD) *((unsigned char*)&WORD)
#define HIGH_BYTE(WORD) *((unsigned char*)&WORD+1)

struct b_data
{
unsigned char counter;
unsigned char rd_index;
unsigned char wr_index;
char data[8];
}
;

struct b_data tx_buffer;

union
{
struct tt
{
int a;
int b;
char c;
} qt;
unsigned char qq[sizeof(struct tt)];
}
database;

void FlushBuffer(void);
void Init_Uart(void);

void Init_Uart(void)
{
DDRB |= 0x02; //TxD - 0x02- out, RxD - in 0x01;
//38400
UBRRH = 0;
UBRRL = 25;
//8 bit 1 stop asyncronicus interrupts enable
UCSRC = (1< UCSRB = (1<< TXCIE) | (1< FlushBuffer();
}

// USART Transmitter interrupt service routine
#pragma vector = USART_TXC_vect
__interrupt void USART_TXC(void)
{
if (tx_buffer.counter)
{
--tx_buffer.counter;
UDR = tx_buffer.data[tx_buffer.rd_index++];
if (tx_buffer.rd_index == 8)
tx_buffer.rd_index = 0;
}
}

void putchar(unsigned char ch)
{
while (tx_buffer.counter == 8);

__disable_interrupt();

if (tx_buffer.counter || ((UCSRA & UDRE)==0))
{
tx_buffer.data[tx_buffer.wr_index++] = ch;
if (tx_buffer.wr_index == 8)
tx_buffer.wr_index = 0;
tx_buffer.counter++;
}
else
UDR=ch;

__enable_interrupt();
}

void FlushBuffer(void)
{
tx_buffer.counter = 0;
tx_buffer.rd_index = 0;
tx_buffer.wr_index = 0;
}


void main (void)
{
unsigned char i;
unsigned char *pointer;

Init_Uart();

for (;;)
{
LOW_BYTE(database.qt.a) = PORTA;
HIGH_BYTE(database.qt.a) = PORTB;
database.qt.b = PORTC;
database.qt.c = PORTD;
pointer = database.qq;
for (i = 0; i < sizeof(struct tt); i++)
{
putchar(*(pointer++));
}
}

}


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru