- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 9 von 9

Thema: Problem beim Senden über RS232

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270

    Problem beim Senden über RS232

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,
    bei folgendem Code wird nur ein Zeichen gesendet, obwohl eigentlich endlos gesendet werden soll:
    Code:
    #include <avr/io.h>
    
    void init_usart(void)
    {
     UBRRL |= 0b01100111;
     UCSRB = (1<<TXEN) | (1<<RXEN);
     UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
    }
    
    
    int main(void)
    {
     unsigned int i;
     i = 0;
     init_usart();
     do
     {
      while (!(UCSRA & (1<<UDRE))) {}
       UDR = 'C';
     } while (i != 0);  
    }
    Wisst ihr warum nur einmal gesendet wird?
    Gruß
    Spurius

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    39
    Beiträge
    208
    hiho,

    bin zwar pic user aber ich glaube, das problem ist:

    Code:
    do 
     { 
      } while (i != 0);
    d.h. machen solange i ungleich 0 ist das heißt, er verlässt die schlaufe weil du i = 0 gesetzt hast, oder ich verdrehe es gerade

    wenn er 1 zeichen schickt, ist es eine zeichen für dieses problem,
    er geht in die schleiche, shcickt es, und geht wieder raus.

    setzte einfachmal:

    Code:
    do 
     { 
     } while (i == 0);
    das heißt, tue solöange i = 0 ist, sollte funken.

    wenn nicht versuche einfach:

    Code:
    while(true)
    {}
    oder
    Code:
    for(;;)
    {}
    beides variante einer endlosschleife
    hoffe hab dir helfen können
    keine leere Signatur möglich

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Vielen Dank, es geht!!!

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Hallo,
    hab noch ne Frage, und zwar warum wird bei folgendem Code
    Code:
    while (*s)
        {   /* so lange *s != '\0' also ungleich dem "Sting-Endezeichen" */
            uart_putc(*s);
            s++;
        }
    von da http://www.mikrocontroller.net/artic...e_.28String.29
    nicht geschrieben:
    while (*s != '\0') ?

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    09.08.2004
    Ort
    Wien
    Alter
    39
    Beiträge
    208
    huhu

    ich blaube, das is nur eine einfachere schreibweiße, es heißt nur dass, da die schleife solang durchfahren wird, bis das und das gesetzt ist.
    so weit ich weiß, is ein stringendzeichene eine "0" und nicht "\0". so haben wir es in der schule gelernt, ob es nochstimmt kann ich nicht sagen, even is "\0" auch richtig. aber die schreibweiße ist nur, solange dieses Bit nich gesetzt ist bzw solang es gestzt ist.

    ich hoffe es stimmt so weiß ich es, falls ich mich irre können mich gerne andere user korrigeren
    keine leere Signatur möglich

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Alles ok, Männer, 0x00 => 0 => '\0' ist alles eins
    da "s" ein character ist, ist einfaches Hochkomma angesagt.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Ging eigentlich nicht so sehr um die Hochkomma, sondern mehr um das while(*s) und warum da nicht while(*s != '\0') steht.

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Zitat Zitat von Spurius
    .. while(*s) und warum da nicht while(*s != '\0') steht
    Ist ja wieder genau das Gleiche. Wenn du jemandem erklären wolltest, was eigentlich while (*s) bedeutet, was denkst du, was ihm dann erzählst ? Eben, genau "while(*s != '\0')"
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2004
    Beiträge
    270
    Also, das war ja mein Frage, vielen Dank.

Berechtigungen

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

Labornetzteil AliExpress