ich habe mich die letzten 2 Tage mal etwas intensiver mit dem Thema Bascom beschäftig. Ab jetzt werde ich wohl nur noch in Bascom schreiben. Das ist ja wirklich einfach. Im Netz habe ich ein Programm für einen 2 Kanal Schalter gefunden. Die beiden Ausgänge werden tastend geschaltet. Ich habe mich nun mal dran gemacht, und das Programm zunächst mal an 2,4 GHz angespasst. Nun kann man die Software auch für 2,4 GHz nutzen.
Außerdem habe ich für die Ausgänge folgende Funktionen eingebaut.
Küppel nach oben = 3 Kanal RKL Rundumlicht Neutralstellung = alles aus Knüppel nach unten = 4 Kanal Doppelblitz
Je nach dem, was ihr also für ein Fahrzeug habt, könnt ihr den Tiny nun verwenden.
Ich werde nochmal ein Video machen. Dann könnt ihr das ganze auch mal sehen.
Wünsche Euch viel Spaß damit !
Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
RKL und DP Tiny.txt
den Ursprung des Programms erkenne ich, damit hab ich vor gut einem Jahr auch angefangen !!! Paar Tipps hab ich für Dich:
-Gewöhn Dir das mit den Wait-Befehlen ab. Die Main-Schleife wird dadurch unnötig lang, das ganze Programm wird sehr träge, die Interrupts unterbrechen und die Zeiten werden dadurch ungenau. Sowas macht man mit einem Zähler, der in einem eigenen Timer raufgezählt wird. In der Main-Schleife wird der aktuelle Zählerstand ausgewertet und die Aktionen ausgeführt. Versuchs mal, wenn Du Hilfe brauchst ...
- Diese Code-Zeile in der "RC-Read"-Routine ist sehr fehleranfällig:
1
If Reading = 0 Then
Probleme treten auf, wenn der µC genau in der Phase gestartet wird, wenn das Signal vom Empfänger kommt. Dann ist nämlich das Bit "Reading" noch 0 wenn die fallende Flanke des Signals erkannt wird, folglich wird der falsche Zweig der If-Abfrage abgearbeitet. Besser wäre:
1
If PinB.1 = 0 Then
- die Auswertung der Impulslängen sieht irgendwie bischen schräg aus:
1 2 3 4 5 6 7 8 9 10 11 12
If Rc_value > 113 Then 'Mittelstellung Call Rkl Else Portb.4 = 0 End If If Rc_value > 85 Then 'Vollausschlag Portb.3 = 0 Else Call Blitz End If
welche Impulslängen bekommst Du raus und wann soll welche If-Abfrage ausgeführt werden? Beispiel: Rc_value = 120 es wird die erste If ausgeführt, da 120 größer 113 -> RKL wird aufgerufen die zweite IF wird aber auch ausgeführt, weil 120 größer 85 -> Blitz wird auch aufgerufen ist das so Absicht? Komisch. Wann ist Nullstellung und es wird nichts ausgeführt? eigentlich nur bei Rc_value < 85
Zur Auswertung: Ich habe mit den Werten rumgespielten. Mit diesen Werten hat das Programm bei mir erst überhaupt richtig funktioniert ... mit Spektrum 2,4 GHz Der Mittelwert war vorher 112. Für eine LED was 113, für die andere 145 angegeben. Mit diesen Einstellungen hat nur eine LED richtig gearbeitet.
Du hast den Timer0 mit Prescale = 8 konfiguriert. Das heißt der Timer läuft nach 0,2 Millisekunden über. Somit ist die Erfassungen von Impulen, die bis 2ms dauern können, nicht sinnvoll. Setz dort mal Prescale = 256. Damit braucht der Timer genau 8,192ms zum Überlaufen. Das heißt dann, daß bei einem Impuls von 1ms Länge der Timer bis ca. 31 zählen wird, bei 1,5ms sinds dann ca. 47 und bei 2ms sinds 63. Dann sollte auch Deine If-Abfrage funktionieren
Zitat von Sven Löfflerdas Programm funktioniert ja einwandfrei.
aber wahrscheinlich nur mit dem einen Sender und mit dem einen Empfänger und vielleicht auch nur bei 20°. Verstell doch mal den Servoweg an der Funke...
Anderer Empfänger, anderer Sender. Er reagiert genau gleich. Dabei sind die Einstellung für Servoweg und Mittelstellung die Graupner Standarteinstellung, sodass jeder diese Einstellungen nutzen kann. Es funktioniert also mit diesen Einstellungen auch bei anderen Empfänger und Sendern.
endlich zu Hause. Puhhh. Hab grad nochmal nachgerechnet und in Deinen Code geschaut. Die Zeiten, die ich oben geschrieben habe, basieren auf 8MHz. Sorry, hatte gar ned geschaut, was Du programmiert hast.
Wenn das stimmt, hast Du in den Fuses 4,8MHz eingestellt, Bascom sagst Du aber 0,6MHz. Sollte schon übereinstimmen, sonst stimmen deine Wait-Längen nicht.
Svens Einstellungen stimmen schon. 4,8 MHz dividiert durch 8 (CKDIV8 Fusebit gesetzt) ergibt 0,6 MHz. Mit dem Wait-Befehlen geb ich dir recht, die sind schön und gut solange keine Interrupts verwendet werden.