-         

+ Antworten
Ergebnis 1 bis 6 von 6

Thema: serielle übertragung beim Atmel mega32

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    30
    Beiträge
    42

    serielle übertragung beim Atmel mega32

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    hi Leute!

    Aus dem Datenblatt des Atmel mega 32 hab i folgenden Code entnommen! Nun frage ich mich, ob des gleich so mit der übertragung funktioniert oder ob ich den Code noch optimieren muss, damit was geht. Wenn ja, habt ihr vl tipps was ich da noch programmieren muss?

    void USART_Transmit( unsigned char data )
    {
    /* Wait for empty transmit buffer */
    while ( !( UCSRA & (1<<UDRE)) )
    ;
    /* Put data into buffer, sends the data */
    UDR = data;
    }

    Beim CodeVisionAVR sind folgende einstellungen schon gemacht worden:

    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: Off
    // USART Mode: Asynchronous
    // USART Baud rate: 9600
    UCSRA=0x00;
    UCSRB=0x10;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x67;

    Also sind die register schon so gesetzt worden, so wie ich das brauche!

    Mfg
    kati

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    30
    Beiträge
    42
    Also, ich hab den Code nun zu compilierten versucht und ich hab einen Fehler. UDRE ist nicht definiert, heißt es. Aber was genau heißt das? Im Datenblatt ist es ein Register, das zeigt, wenn der transmit buffer bereit ist eine neue nachricht zu empfangen. Da ich aber nur Daten senden muss und nicht empfangen muss, ist das bei mir ja nicht nötig oder?
    Tut mir leid, wenn i damit nerv, aber programmieren zählt leider nicht zu meinen Stärken.

    Hoff,ihr könnt mir helfen!

    Mfg
    Kati

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    benutzt du den avr-gcc? Dann musst du
    #include <avr/io.h>
    machen. Das bindet dann avr/iom32.h ein (das spezielle IO für den Mega32) und da ist UDRE definiert.
    Welches Header-File du beim CodeVision brauchst weiss ich leider nicht, dürfte aber ähnlich sein. (beim ImageCraft ist es iom32v.h)

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    30
    Beiträge
    42
    hallo! das Problem hab i mitn lehrer schon gelöst. UDRE ist nicht in der include datei drinen gestanden. mittels datenblatt hab ichs hinzugefügt.
    UDRE=0x0b oder so! i hoff, des stimmt so!
    mfg

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    Hi,

    eigentlich sollte das in einem vorhandenen Header-File definiert sein. Wenn du dir das selber definierst bekommst du spätentens dann Probleme wenn sich die Adresse mal ändert ... ich würde deshalb vom selber definieren abraten, irgendwo müsstest du ein Header-File haben in dem das definiert ist.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    20.01.2005
    Ort
    Gr.St.Florian
    Alter
    30
    Beiträge
    42
    nein, nicht im atmel mega32! i hab die ganze libary durchsucht.
    der lehrer hat das mit mir ausgebessert. war ja sein vorschlag. und wieso sollt sich das ändern?

+ Antworten

Berechtigungen

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