- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: UART empfangen geht nicht

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    Anzeige

    E-Bike
    hm na wenn es schonma funktioninert hat, teste deine hardware,

    wenns n max232 zum PC ist, verbinde mal die rx und tx die zum µC gehen und klimper im hyperterminal mal rum, wenn das nich geht iss der max232 im eimer, verwendest du auch DIESELBEN EINSTELLUNGEN im HT wie im µC? also 9600BAUD, 8 datenbit, 1 stoppbit ? ich hab auch ewig nach m fehler gesucht weil irgendwann das HT mal automatisch auf 2 stoppbit geschalten hat, keine ahnung warum ... wenn du KEINEN max232 verwendest mal bitte die schaltung posten die du verwendest .... wenn des mit dem verbinden von RX TX geht, wirds schwer mit ferndiagnose

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524
    Hallo,

    wenn das Senden funktioniert, wird die Baudrate richtig eingestellt sein. Hast du mit dem Oszi direkt am Pin gemessen? Was war anders als es schon einmal funktioniert hat. Software nutzt sich nicht ab
    Schreib den Empfang mal auf Interrupt um. Sprich RXCIE im UCSRB setzen. Globale Interrupts via sei(); einschalten und in der Interruptroutine ISR (USART1_RX_vect){ LED_EIN } einfach eine LED einschalten. Dann läuft das Programm weiter bis er etwas empfangen hat.

    Gruß


    Jens

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    nicht ganz, mit 2 stopbit im µC und nur EINEM am PC hat das senden vom µC zum PC bei mir funktioniert, nur umgekehrt net, ich weis aber nciht wie sich das verhalten würde, wenn ich am PC 2 stopbit und am µC nur eins habe, aber gut möglich das es auch so n verhalten entwickelt

    die idee mitm interrupt ist nich schlecht, zumal dein programm dann nicht unsinnig auf ankommende bytes warten muss sondern fröhlich weiterarbeiten kann bnis wirklich mal ein byte ankommt

  4. #14
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    Zitat Zitat von i-wizard
    ... ATmega32 mit 16Mhz ... UBRR geht nicht direkt zu beschreiben. Habe es dann mit deiner Idee des schiebens Probiert also URBBL und URBBH. Wie bisher senden geht immer aber empfangen nicht ...
    Dazu gibts doch für die RNControl:
    1) eine funktionierende Schaltung im RNControl-Schaltplan
    2) im C-code auch die dazugehörige(n) Module zum Initialisieren. Bei mir läuft das.

    Aktuell (ohne lang suchen zu müssen) hab ich meine lauffähigen Schnippsel zum mega168:
    a) die defines
    Code:
    //   Mit Quarz 20 Mhz-CPU 
    #define F_CPU  20000000 
    #define BAUD   57600 
    #define MYUBRR (unsigned int)(F_CPU/16/BAUD-1)     //nach doc2545, S 179
    b) Aufruf der Initialisierung
    Code:
        init_USART0(MYUBRR);  //USART0 initialisieren mit wählbarer Baudrate (s.o.)
    c) Initialisierung des USART0 mit Empfangsroutinen:
    Code:
    /* ============================================================================== */ 
    /*   Initialisiere USART0 mit vorgegebener Baudrate      Neu am 07jan2008 
       Zum Senden von Zeichen im Hauptprogramm entweder        nach doc2545, S179 
       char irgendwas[] = "meintext"; 
       sendUSART(irgendwas);      oder direkt 
       sendUSART("meinText");      verwenden.              */ 
    void init_USART0( unsigned int ubrr ) 
    {                // Set baud rate 
        UBRR0H  =  (unsigned char)(ubrr>>8); 
        UBRR0L  =  (unsigned char)ubrr;   // Enable receiver and transmitter 
        UCSR0B  =  (1<<RXEN0)|(1<<TXEN0);    // Set frame format: 8data, 2stop bit 
        UCSR0C |=  (1<<UCSZ01)|(1<<UCSZ00);   // 8 Data, (async: UMSELnx empty, doc S193) 
             //  no parity weil UPMn1:0 empty, 1 Stop, weil UPMn1:0 empty 
    } 
    /* ============================================================================== */
    /* ============================================================================== */ 
    /* ===  Hole Daten vom USART0  ========================   Neu am 22mai2008 
       ===  vgl. dazu doc2545 und AVR-Gcc-Tutorial....  ===================           */ 
    char getchar(void)                      // ... vgl. code sample in doc2545, S 183 
    {                                       // Wait for data to be received 
       while(!(UCSR0A & (1<<RXC0)))         //Warten, bis Empfang möglich ist 
       { }                                  // Get and return received data from buffer 
       return UDR0;                         //hole das Zeichen vom Puffer und return 
    } 
    /* ============================================================================== */ 
    void getsUSART(char* Buffer, uint8_t MaxLen) 
    { 
      uint8_t NextChar; 
      uint8_t StringLen = 0; 
      
      NextChar = getchar();         // Warte auf und empfange das nächste Zeichen 
                                      // Sammle solange Zeichen, bis: 
                                      // * entweder das String Ende Zeichen kam 
                                      // * oder das aufnehmende Array voll ist 
      while( NextChar != '\n' && StringLen < MaxLen - 1 ) { 
        *Buffer++ = NextChar; 
        StringLen++; 
        NextChar = getchar(); 
      }                               // Noch ein '\0' anhängen um einen Standard 
                                      // C-String daraus zu machen 
      *Buffer = '\0'; 
    } 
    /* ============================================================================== */
    Und das läuft so
    Ciao sagt der JoeamBerg

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    wie kommst du auf RNControl ?

    ausserdem glaub ich nicht das er ne fertige softwarelösung sucht sondern versucht ein problem zu beheben, schliesslich hat es schonmal funktioniert!

    oder hab ich da was falsch verstanden ??

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524
    Hallo,
    die Baudrate hat erstmal nichts mit den Stopbits oder der Anzahl der Datenbits zu tun. Wenn das Senden funktioniert, sind die UBRR für mich erst einmal richtig.
    Hinter dem Interrupt steckt noch etwas anderes. Der RxD Pin des Controllers sitzt neben dem einen Quarz-Pin. Woher wissen wir den, dass der Controller wirklich in der While- Schleife hängt und sich nicht beim Eintreffen der Daten ins Nirwana verabschiedet hat?
    Mein Favorit ist die Hardware.

    Gruß

    Jens

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    01.10.2006
    Beiträge
    19
    Hallo Zusammen!

    Erstmal vielen Dank für eure Hilfe!!!

    Ich kann mitteilen das ich die Wurzel des Problem gefunden habe:

    ATmega32

    Nach längerem suchen mit dem Oszi habe ich einfach den AVR gegen einen neuen ungenutzen ausgetauscht und...

    ...ohne an Software oder Schaltung etwas zu ändern gehts.

    Ich vermute einfach mal das Harwareseitig im ATmega32 etwas kaputt ist bzw. des ja mal ging kaputt gegangen ist.

    Nochmal herzlichen Dank für eure Hilfe!!

  8. #18
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    Zitat Zitat von i-wizard
    ... habe ich einfach den AVR gegen einen neuen ungenutzen ausgetauscht und...

    ...ohne an Software oder Schaltung etwas zu ändern gehts.
    Aber programmiert hast Du diesen
    Zitat Zitat von i-wizard
    ... neuen ungenutzen ...
    doch wohl schon ! ? ! ?
    Ciao sagt der JoeamBerg

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    01.10.2006
    Beiträge
    19
    Na klar habe ich ihn programiert!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests