www.mikrocontroller.net

Forum: Compiler & IDEs Parsing von Zeichenketten im UART


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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");
      }
    }



    }

Autor: Martin B. (martinbe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

frag doch mal die Returncodes ab. Wahrscheinlich kommt UART_NO_DATA, 
wenn Du das delay rausnimmst.

Viel Erfolg,
MartinBe

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.