- Labornetzteil AliExpress         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 37

Thema: Usart programmierung

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    58
    Beiträge
    1.195
    Anzeige

    E-Bike
    Zeig doch mal den ganzen Code.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2003
    Ort
    Alfeld (50km südl. Hannover)
    Alter
    41
    Beiträge
    237
    Hi,

    Hast du eine main Funktion?
    Am besten du postest mal deinen Code, nur mit der
    Fehlermeldung ist es schwer was zu sagen.

    mfg
    Thorsten
    Open Minds. Open Sources. Open Future

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    40
    Beiträge
    647
    Oh oh ich befürchte schlimmes

    Code:
    #include <inttypes.h> 
    #include <avr/io.h> 
    #include <avr/signal.h> 
    #include <string.h> 
    
    void USART_Init (unsigned int baud)
    {
    /* Set baud rate */
    	UBRR0H = (unsigned char)(baud>>8);
    	UBRR0L = (unsigned char)baud;
    /* Enable reciever and transmitter */
    	UCSR0B = (1<<RXEN)|(1<<TXEN);
    /* Set frame format: 8data, 2stop bit*/
    	UCSR0C = (1<<USBS)|(3<<UCSZ0);
    }
    
    
    
    void USART_Transmit (unsigned char data)
    {
    /* Wait for empty transmit buffer */
    	while(!(UCSR0A & (1<<UDRE)))
    ;
    /* Put data into buffer, sends the data */
    	UDR0 = data;
    }
    
    
    unsigned char USART_Recieve(void)
    {
    /* Wait for data to be recieved */
    	while (!(UCSR0A & (1<<RXC)))
    ;
    /* Get and return recieved data from buffer */
    	return UDR0;
    }
    das ist mein ganzer code. Ich wette jetzt wirds peinlich für mich

    MFG
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    58
    Beiträge
    1.195
    Da Du es selbst bemerkt hat hält sich die Peinlichkeit in Grenzen

    int main(void)
    {
    // mach irgendwas

    return 1
    }

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    40
    Beiträge
    647
    also in die main könnte ich doch schreiben, das er immer "Hallo" sendet oder?
    Wie müsste der Code dazu aussehen? Muss ich dann eine function haben mit der ich ganze strings anstatt einzelner zeichen senden kann? zb. so:

    Code:
    void send_string(char wort[])
    {
    unsigned int index=0;
    while(wort[index] != '\0')
    {
    sendTxd1(wort[index]);
    index++;
    }
    return;
    }
    um dann mit
    Code:
    send_string("Hallo");
    Hallo zu senden.


    MFG
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2004
    Ort
    In der Nähe von Esslingen am Neckar
    Beiträge
    706
    Hi Daniel,
    ist das wirklich den ganzer Code??????
    Da fehlt die main!! Du deklarierst zwar schön die Funktionen USART_Init, USART_Transmit und USART_Recieve aber du hast keine Main!
    Du musst jetzt halt noch sowas einbinden um per USART Datenpakete zu verschicken:

    Code:
    int main(void)
       {
       //USART aktivieren mit einer Baudrate von 9600 Baud
       USART_Init(9600);
       //Endlosschleife
       for(;;)
          {
          //2 über USART verschicken
          USART_Transmit(2);
          }
       }
    das nurmal als Beispiel um die Funktionen zu verwenden!
    um deine Empfangsfunktion zu verwenden sowas:

    Code:
    unsigned char test = 0;
    
    int main(void)
       {
       //USART aktivieren mit einer Baudrate von 9600 Baud
       USART_Init(9600);
       //Endlosschleife
       for(;;)
          {
          //Über USART das Datenpaket empfangen und in die Variable test schreiben
          test = USART_Recieve()
         //den Inhalt von test per USART verschicken
          USART_Transmit(test);
          }
       }
    Gruß Michi

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    40
    Beiträge
    647
    oh man ich habe noch viel zu lernen .

    Ok damit versuch ichs mal.

    würde denn meine funktion funktionieren? Also wegen den ganzen wörtern die ich senden will.

    MFG
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2004
    Ort
    In der Nähe von Esslingen am Neckar
    Beiträge
    706
    Hi,
    ok versuch's mal mit meinem!
    ich weiß jetzt nicht ob deiner klappt aber ich hätte das eher so gelöst:
    Code:
    void send_string(unsigned char *wort) 
    { 
    while(*wort) 
    { 
    sendTxd1(wort++);
    } 
    return 0; 
    }
    Gruß Michi

  9. #19
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    58
    Beiträge
    1.195
    Das mit dem Baudrate initialisieren ist falsch. Les' bitte mal im Datenblatt des Chips nach wie der Wert berechnet wird.

    @michael: Du bekommst bei Deiner Funktion mindestens ein Warning des Compilers weil Du einen int aus einer void Funktion zurück gibst.

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.09.2004
    Ort
    In der Nähe von Esslingen am Neckar
    Beiträge
    706
    Hi,
    @michael: Du bekommst bei Deiner Funktion mindestens ein Warning des Compilers weil Du einen int aus einer void Funktion zurück gibst.
    aber spätestens dann wird man es umändern!
    Stimmt mit der Baudrate hab ich gar nicht darauf geachtet!!

    Des müsste dann doch so heißen oder?:
    Code:
    #define F_CPU            16000000     
    #define UART_BAUD_RATE      9600    
    #define UART_BAUD_SELECT (uint)(F_CPU/(UART_BAUD_RATE*16l)-1)
    und
    Code:
    UBRRH = UART_BAUD_SELECT >> 8;	 
    UBRRL = UART_BAUD_SELECT;
    Gruß Michi

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests