www.mikrocontroller.net

Forum: GCC Code wird nicht immer ausgeführt


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Pier S. (bigpier)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Guten Tag.
Ich muß mich wiedermal an Euch Experten wenden.
Ich verwende in meinem Programm die Software Uart und Entprellung von 
Peter Dannegger (Vielen Dank dafür an Peter). Leider funktioniert die 
Entprellung nur dann wenn auch die Kommunikation läuft. Der betreffende 
Teil ist dieser
for(;;)
  {
    
      
    RxProt(ugetchar());
    if (protoflag &(1<<RxComp))
    {
      //Proto.output= PINA;
      Proto.analog[0]=analog[0];
      Proto.analog[1]=analog[1];
      Proto.analog[2]=analog[2];
      Proto.analog[3]=analog[3];
      Proto.crc = CalcCRC16(&Proto,sizeof(Proto)-1);
      Transmit(&Proto,sizeof(Proto));
      protoflag &= ~(1<<RxComp);
    }
    if( get_key_short( 1<<KEY1 ))
    {
      PORTA ^= 1<<PA0;
    }    
    if( get_key_long( 1<<KEY1 ))
    {
      PORTA ^= 1<<PA1;
    }  
  }
}
Nochmal zur Erklärung die Led an PA0 und PA1 lassen sich nur Toggeln 
wenn zuvor ein korrektes Datenpaket empfangen wurde und somit das RxComp 
Flag auf 1 gesetzt wurde.Der Timer 0 mit der Entprellroutine läuft immer 
durch
Ich begreife einfach nicht was ich falsch mache.
Ich wäre Dankbar wenn mir jemand helfen könnte

Gruß
Peter

Autor: Pier S. (bigpier)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
habe 3mal das Programm angehängt Bitte entfernt es 2 mal!

Gruß
Peter

Autor: Andreas B. (andreas_b77)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
ugetchar() wartet, bis ein Zeichen empfangen wurde. Deshalb geht es ohne 
empfangene Zeichen nicht weiter.

Autor: Pier S. (bigpier)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Danke für die Schnelle Antwort.
Ich war der Meinung das die Funktion nachschaut ob etwas Empfangen wurde 
und dann die Daten aus der Fifo holt.
So kann man sich täuschen.
Hat jemand eine Idee wie ich das am Besten löse

Gruß
Peter

Autor: Peter Dannegger (peda)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
u8 kbhit( void )      // check, if rx buffer not empty


Peter

Autor: Pier S. (bigpier)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Peter Dannegger schrieb:
> u8 kbhit( void )      // check, if rx buffer not empty
>
>
> Peter

Ich kann Deinen Hinweis nicht verstehen wärst Du so nett und hilfst mir 
auf die Sprünge!

Peter

Autor: Peter Dannegger (peda)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Der Aufruf von kbhit() liefert 0 zurück, wenn der Puffer leer ist.
Wenn Du also nicht warten willst, dann vorher kbhit() aufrufen.
int nowait_getchar()
{
  int i = -1;      // -1 = no byte received
  if( kbhit())
    i = ugetchar();
  return i;
}


Peter

Autor: Pier S. (bigpier)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Vielen Dank für die schnelle Hilfe jetzt läuft das Programm.
Trotz der guten Kommentierung des Codes falle ich immer wieder auf meine 
Schnauze.

Danke
Peter

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net