00001 /***************************************************************************\ 00002 00003 File........: avr_usart.h 00004 Author(s)...: Gerhard Brünner 00005 Target(s)...: AVR_MEGA8 00006 Compiler....: WIN_AVR 00007 Description.: Routines for the internal hardware USART. 00008 Header-File für AVR_m8_usart.c 00009 00010 Revisions...: V2.0 00011 2008.07.04 - added request for defined USART0_RX_vect ... 00012 2009.02.01 - added sub-functions for receive-buffer and receive-interrupt 00013 00014 \***************************************************************************/ 00015 00016 #ifndef avr_usart_h 00017 #define avr_usart_h 00018 00019 /* Include-Dateien 00020 ****************************************************************************/ 00021 #include <avr\io.h> /* richtige Header-Datei wird entsprechend der Einstellungen der Makedatei eingezogen*/ 00022 #include <avr\interrupt.h> 00023 #include <stdio.h> 00024 00025 /* Sende-/Empfangspuffer 00026 ****************************************************************************/ 00027 #define _MAX_BUFFER_LEN 32 /* Modulo 2 Groesse: nur 2,4,8,16,32 Bytes */ 00028 00029 00030 /* Baudrate - Prescaler calculation 00031 ****************************************************************************/ 00032 #ifndef _XTAL 00033 #define _XTAL F_CPU+'UL' 00034 /* Taktfrequenz des Prozessors in Hz 00035 >> Vorsicht mus unsigned long sein sonst kommt es zu fehlerhaften Baudraten Berechnung */ 00036 #endif 00037 /* Hilfsmakro zur UBRR-Berechnung ("Formel" laut Datenblatt) für Single-Speed mode*/ 00038 #define UART_UBRR_CALC(BAUD_) (((_XTAL)/((BAUD_)*16L))-1) 00039 00040 00041 /* Typdefinitionen 00042 ****************************************************************************/ 00043 typedef uint8_t byte_t; 00044 typedef struct{ 00045 uint8_t Data[_MAX_BUFFER_LEN]; 00046 uint16_t WritePos; /* Gibt akt. Schreibposition an */ 00047 uint16_t ReadPos; /* Gibt akt. Leseposition an */ 00048 uint8_t Overflow_cnt; /* Counter für Überlauf des Puffers */ 00049 } ringbuffer_t; 00050 00051 /* Funktions-Prototypen 00052 ****************************************************************************/ 00053 void init_usart_9600_8_1_N_Asyn(void); 00054 void Usart_puts (char *s); 00055 void Usart_putc(byte_t data); 00056 byte_t Usart_getc(void); 00057 byte_t usart_read_buffer_string(uint8_t *data); 00058 00059 00060 00061 00062 00063 00064 00065 #endif /* avr_m8_usart */