sooo, ich weiß, sowohl das Thema Nibo als auch BTM222 ist in diesem Forum ein altes Problem und auch ein oft diskutiertes (ich dürfte inzwischen die meisten Threads dazu durchgelesen haben) nun zu meinem Problem: ich versuche - zusammen mit ein paar anderen - den Nibobee per Bluetooth fernzusteuern (kennt man ja) nachdem ich so ziemlich jede offizielle und persönliche Bibliothek genutzt und durchsucht habe, die es so im Netz geht und inzwischen auch recht viel gelernt hab (man muss positiv denken!), komme ich soweit zu recht. Die ganze Steuerung wird auf dem Atmega einfach per Zustände geregelt, diese werden bezüglich des Bluetooths mit einer normalen switch-Klausel (wird in C programmiert) verändert durch empfangene Chars. ich arbeite mit http://doku.nibo-roboter.de/nibobeelib/usart_8h.html , das hat sich nach längerem rumprobieren als am einfachsten gezeigt (ich hatte bereits komplexere Lösungen, die haben dann aber anderswo Probleme verursacht und so). als Test lass ich einfach die aufgebauten LEDs jeweils je nach empfangenem Char (ausgelesen mit getchar()) in einem anderen Muster blinken. Dabei ist mir jedoch aufgefallen: der Eingangs-Buffer scheint recht groß zu sein und keinerlei Interesse zu haben, sich wieder zu leeren... das bedeutet man muss auf dem Terminal so oft den neuen Buchstaben schicken, bis der Buffer mit dem voll ist. Ansonsten überlagern sich die Leuchtmuster; ich nehme also an, dass die Zeichen im Buffer bleiben. leider ist das ganze Teil einer Projektarbeit und bald ist der Abgabetermin/muss zumindest das stehen (deshalb auch dieser Post, normalerweise würde ich einfach weitertüfteln und noch ein paar alte Threads durchlesen, leider gehen mir die aus). Lange Rede, kurze Frage: wie kriegt man den Eingangsbuffer per Programmaufruf manuell leer? oder kann man den irgendwie verkleinern? zur Erläuterung für diese Fragen: ich hab zuvor nie mit Mikrokontrollern gearbeitet und nichtmal C programmiert. Es mag also gut möglich sein, dass der Buffer in irgendeiner Variable größenmäßig definiert ist und man die einfach ändern kann... wäre natürlich praktisch, weiß aber nicht wie. Hardware und Empfang und sonst alles klappt bereits super; nur die Sache mit dem Empfangsbuffer ist noch ein Problem, zumindest mit diesen offiziellen usart-Funktionen. Vielen Dank schonmal für jede Antwort^^ Christopher ;) PS: erster eigener Post hier im Forum. Muss sagen, sehr angenehm :D
so, da ich selbst drauf gekommen bin und auch wenn die Frage eher
absolut bescheuert und kindisch war, hier die Antworten:
> wie kriegt man den Eingangsbuffer per Programmaufruf manuell leer?
den Buffer einfach manuell mit Nullen überschreiben zB.1 | int i = 0; |
2 | int buffersize = 8; |
3 | for(i=buffersize;i>0;i--){ |
4 | usart_rxbuf[i]=0;} |
> oder kann man den irgendwie verkleinern?
zu umständlich, da vorkompilierte Bibliothek, aber man kann den Zeiger
einfach immer wieder auf den Anfang der 8 Bytes setzen mit1 | usart_rxbuf_begin=0; |
daraufhin liest er immer die gleiche Stelle und arbeitet auch mit dieser, also ist das ganze Array künstlich auf 1 Element reduziert, zumindest mit diesen Bibliotheken. auch wenns keiner braucht; stören tuts nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.