- Labornetzteil AliExpress         
Ergebnis 1 bis 2 von 2

Thema: USART ATMega325

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.09.2006
    Beiträge
    67

    USART ATMega325

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi Leute

    Ich bekomm einfach nicht die Serielle Schnittstelle zum laufen...
    Zuerst war der MAX farbriksmässig hinüber, dann auch noch ein kleiner Verdrahtungsfehler
    Jetzt sollte es aber gehn, bzw bin soweit das ich die PINS auf ein ein extra Board rausgezogen habe( Funktioniert einwandfrei mit einem ATMega

    Hier mal der Code. Lasst euch nicht von der Sendefunktion verwirren..
    Sie funktioniert

    Code:
    #include <avr/io.h>
    
    
    #define USART_BAUD_RATE 9600
    #define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1)
    #include <inttypes.h>
    #include <stdio.h>
    
    static int uart_putchar(char c, FILE *stream);
    static FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
    
    static int uart_putchar(char c, FILE *stream) {
          loop_until_bit_is_set(UCSR0A, UDRE0);
          UDR0 = c;
          return 0;
    }
    void uart_init(void) {
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);
    UCSR0C = (1<<UMSEL0)|(1<<UCSZ01)|(1<<UCSZ00);
    UBRR0L = (unsigned char) USART_BAUD_SELECT;
    
    stdout = &mystdout; // in main() auch benoetigt
    printf("\nHello, world! I,m there\n");
    
    }
    Genau das selbe Programm läuft auf einem ATMega8 einwandfrei...(nur andere Registernamen)

    Und noch ne Frage:
    Warum steht im Datenblatt usw überall UART0 er hat doch eh nur einen ?!



    Mfg

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    ich denke mal das es dann einfach wird den Code zu portieren, denn bei anderen AVRs ist es auch schon so, das die 0 da dran hängt obwohl nur eine USART da ist.
    Es wird dann leichter den Code auf einem AVR zu verwenden der mehr als eine USART hat, da man sonst entweder alle ändern, oder ein haufen #IFDEF usw. einbauen muss.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad