Anfängerprobleme C und AVR - zeichen empfangen und senden

OP #1232048
Hallo Leute ich bin Anfänger in c ´mit AVR´s.
Ich habe eigentlich eine simple Routine die mir zeichen die ich über die 
serielle schicke emfpängt und eigentlich wieder zurück senden soll.
Funktioniert bloß nicht  und ich finde den Fehler nicht. Nur die Routine
(aus dem Tutorial) zum senden eines Zeichens alleine funkioniert, aber 
das dann nicht.
1
#include <avr/io.h>
2
#include <stdint.h>
3

4
#define BAUD 9600UL          // Baudrate
5
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
6
int main(void)
7
{
8
    UCSRB |= (1<<TXEN);                // UART TX einschalten
9
    UCSRC |= (1<<URSEL)|(3<<UCSZ0);    // Asynchron 8N1
10

11
    UBRRH = UBRR_VAL >> 8;
12
    UBRRL = UBRR_VAL & 0xFF;
13
    unsigned char daten;
14
    void USART_Transmit( unsigned char data )
15
    {
16
    /* Wait for empty transmit buffer */
17
    while ( !( UCSRA & (1<<UDRE)) )
18
    ;
19
    /* Put data into buffer, sends the data */
20
    UDR = data;
21
    }
22

23

24
    unsigned char USART_Receive( void )
25
    {
26
    /* Wait for data to be received */
27
    while ( !(UCSRA & (1<<RXC)) )
28
    ;
29
    /* Get and return received data from buffer */
30
    return UDR;
31
    }
32
   
33
    daten = USART_Receive();
34
    USART_Transmit(daten);
35
}


Das funktioniert, also schnittstelle und alles läuft
1
#include <avr/io.h>
2
#include <stdint.h>
3

4
#define BAUD 9600UL          // Baudrate
5
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)   // clever runden
6
int main(void)
7
{
8
    UCSRB |= (1<<TXEN);                // UART TX einschalten
9
    UCSRC |= (1<<URSEL)|(3<<UCSZ0);    // Asynchron 8N1
10

11
    UBRRH = UBRR_VAL >> 8;
12
    UBRRL = UBRR_VAL & 0xFF;
13

14
    while (!(UCSRA & (1<<UDRE)))  /* warten bis Senden moeglich                   */
15
        {
16
        }
17

18
        UDR = 'x';
19
}
Aber für euch hoffe ich kein Problem mich zu berichtigen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.