Здравствуйте уважаемые форумчане! Написал вот такой код по книге Прокопенко В.С. Все работает нормально, данные передаются с одной меги 16 на вторую мегу. Только вот все не могу разобраться в строчке static FILE mystdout_mystdin = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);, и все что с ней связано в этом коде. Объясните пож. или скажите где можно прочитать про поток передачи Stream FILE, или как его правильно. Язык Си хоршо не знаю, только изучаю.
Код: Выделить всё
/*
* usart_mega16_transmit.c
*
* Created: 12.11.2013 10:55:36
* Author: Администратор
*/
#include <avr/io.h>
#include <stdio.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
void USART_INIT(unsigned int UBRR_baud)
{
UBRRH = (unsigned char) (UBRR_baud>>8);
UBRRL = (unsigned char) UBRR_baud;
UCSRC = (1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|(0<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)|(0<<UCPOL);
UCSRB &=~(1<<2);
UCSRB |=(1<<4)|(1<<3);
UCSRA &= ~(1<<1) & ~(1<<0);
}
static int uart_putchar(char simvol, FILE *stream)
{
loop_until_bit_is_set(UCSRA,5);
UDR=simvol;
return 0;
};
static int uart_getchar(FILE *stream)
{
loop_until_bit_is_set(UCSRA,7);
return UDR;
}
static FILE mystdout_mystdin = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);
int i=0;
int main(void)
{
USART_INIT(0x40);
DDRB=0xff;
PORTB=0x00;
stdin = stdout = &mystdout_mystdin;
while(1)
{
printf("%c\r\n", '5');
_delay_ms(1000);//TODO:: Please write your application code
}
}
only pure true norwegian blackx 
