Hallo,
Ich versuche mich grade mit dem atmega48, habe die fusebits so:
Der Beispielcode sieht so aus:Code:High-Fuse = 11011111 Low-Fuse = 01100010
Bekomme keine Compilerfehler, kommt aber auch nichts an RX/TX an ?!?Code:/************************************************************************* Title: example program for the Interrupt controlled UART library Author: Peter Fleury <pfleury@gmx.ch> http://jump.to/fleury File: $Id: test_uart.c,v 1.5 2012/09/14 17:59:08 peter Exp $ Software: AVR-GCC 3.4, AVRlibc 1.4 Hardware: any AVR with built-in UART, tested on AT90S8515 at 4 Mhz DESCRIPTION: This example shows how to use the UART library uart.c *************************************************************************/ #include <stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include "uart.h" #define F_CPU 8000000UL /* 9600 baud */ #define UART_BAUD_RATE 9600 int main(void) { unsigned int c; char buffer[7]; int num=134; /* * Initialize UART library, pass baudrate and AVR cpu clock * with the macro * UART_BAUD_SELECT() (normal speed mode ) * or * UART_BAUD_SELECT_DOUBLE_SPEED() ( double speed mode) */ uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); /* * now enable interrupt, since UART library is interrupt controlled */ sei(); /* * Transmit string to UART * The string is buffered by the UART library in a circular buffer * and one character at a time is transmitted to the UART using interrupts. * uart_puts() blocks if it can not write the whole string to the circular * buffer */ uart_puts("String stored in SRAM\n"); /* * Transmit string from program memory to UART */ uart_puts_P("String stored in FLASH\n"); /* * Use standard avr-libc functions to convert numbers into string * before transmitting via UART */ itoa( num, buffer, 10); // convert interger into string (decimal format) uart_puts(buffer); // and transmit string to UART /* * Transmit single character to UART */ uart_putc('\r'); for(;;) { /* * Get received character from ringbuffer * uart_getc() returns in the lower byte the received character and * in the higher byte (bitmask) the last receive error * UART_NO_DATA is returned when no data is available. * */ c = uart_getc(); if ( c & UART_NO_DATA ) { /* * no data available from UART */ } else { /* * new data available from UART * check for Frame or Overrun error */ if ( c & UART_FRAME_ERROR ) { /* Framing Error detected, i.e no stop bit detected */ uart_puts_P("UART Frame Error: "); } if ( c & UART_OVERRUN_ERROR ) { /* * Overrun, a character already present in the UART UDR register was * not read by the interrupt handler before the next character arrived, * one or more received characters have been dropped */ uart_puts_P("UART Overrun Error: "); } if ( c & UART_BUFFER_OVERFLOW ) { /* * We are not reading the receive buffer fast enough, * one or more received character have been dropped */ uart_puts_P("Buffer overflow error: "); } /* * send received character back */ uart_putc( (unsigned char)c ); } } }
mfG
Philip![]()







Zitieren

Lesezeichen