Parsing von Zeichenketten im UART

Gast #2051445
Lesenswert?
• ▲
▼
Hallo Gemeine,

ich bin neu. Martin mein Name. Versuche gerade mittels Uart meinen 
ATmega8151 16Mhz zu steuern. Verwende GCC und Avr Studio. Mein Prgramm 
soll wenn es ein Steuerzeichen "#" bekommt abhängig von den nächsten 
drei Zeichen etwas unternehmen. Das Klappt auch, jedoch nur, wenn ich 
den _delay drin lasse. Wenn ich es raus nehme, erkennt er zwar noch das 
steuerzeichen, jedoch nicht mehr die weiteren. Verwende die uart.h von 
Peter Fleury.

Vielen Dank bei der Hilfe.


#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <string.h>
#include "uart.h"

#define UART_BAUD_RATE      9600


int main(void)
{
    char c, tmp[3];
  uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
    sei();

  DDRD = (1<<PD5);
  PORTD = (1<<PD5);

    while(1)
  {
    c = uart_getc();
    _delay_ms(1);
    //uart_puts("warten\n");
    if(c == '#'){
      //tmp = "0";
      uart_puts("erkannt\n");

      for(int i=0; i<=2; i++){
        tmp[i] = (char)uart_getc();
      }

      if(tmp[0] == '0'){
        PORTD = (0<<PD5);
        uart_puts("LED an\n");
      } else if(tmp[0] == '1'){
        PORTD = (1<<PD5);
        uart_puts("LED aus\n");

      } else {
        uart_puts("nichts\n");
      }
    }



    }
Gast #2051711
Lesenswert?
• ▲
▼
hm könnte sein. Das würde dann wohl an der Übertragungsgeschwindigkeit 
von 9600 baud liegen. Sprich ich frage schneller ab, es kommt aber 
nichts neues

-> da '#' erkennt er zwar, aber nicht das nächste Zeichen, weil es noch 
garnicht kommt. (macht Sinn)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.