![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Habe am Wochenende doch mehr Zeit damit verbracht als geplant war ;-) Testaufbau ist fertig und ein erster Programmstart erfolglos verlaufen *g*. Also um es zusammenzufassen - nix geht richtig. Ich habe zunĂ€chst mal geschaut, was passiert mit dem LEDs. Es gibt zwei Möglichkeiten zu beobachten. Die Eine ist, wenn man keine Taste drĂŒckt, blinkt LED 1 einmal und bleibt dann andauernd eingeschaltet. Zweite Möglichkeit ist bei Start eine Taste gedrĂŒckthalten. Dann leuchtet LED1 sofort stĂ€ndig. Wenn ich mir das so ansehe, dann funktioniert offenbar die Tastenabfrage nicht richtig. In diesem Zusammehang ist mir auch aufgefallen, dass die beiden Ports PTB4 und PTB5 LOW-Pegel fĂŒhren. Da die Tasten nach Masse schalten, wirds wohl nix so. Ich werde das mal auf Tasten schalten nach High Ă€ndern. Damit sind dann zumindest erst einmal Pegel vorhanden, die man verwerten könnte... Zweiter Teil war die Kontrolle des PWM. Bei LED1 leuchtend, bedeutet das Null Ausgang. Da aber minimale Nadeln zu sehen sind, ist der PWM also nicht Null. Ich habe dazu mal das PWM-Demoprogramm geladen und auch dort geht der PWM nicht auf Null. Kriegt man den nur ĂŒber "TABLE pwm1_aus byte" ruhig? Hier die jetzige Version zur "Begutachtung", ohne PWM-Teil und Definitionen der Ports: ' --- Definition der Variablen ---------------------------------------------- pwm1_ein ' PWM-Routine Port1 einschalten define tmp byte ' Hilfsvariable fĂŒr PWM define a byte ' ZĂ€hlervariable define t byte ' ZĂ€hlervariable Start-Timer define allleds_a byteport[1] ' Sammelfestlegung aller LEDs an Port a define allleds_b byteport[2] ' Sammelfestlegung aller LEDs an Port b ' ---Initialisierung--------------------------------------------------------- #init tmp = 0 a = 0 t = 0 pwm1 tmp allleds_a = 0 ' alle LEDs an Ports A ausschalten allleds_b = 0 ' alle LEDs an Ports B ausschalten if (Taste1 = (not Taste1)) or (Taste2 = (not Taste2)) then goto error ' Abfrage der Tasten auf Kontakt ' ---Hauptprogramm----------------------------------------------------------- #start if spannung < 175 then goto unterspannung ' PrĂŒfung auf Unterspannung der Batterie <11 Volt if (Taste1 = (not Taste1)) and (Taste2 = (not Taste2)) then gosub vorheizen ' vorheizen starten 'if Taste2 = (not Taste2) then gosub vorheizen ' vorheizen starten a = 1 goto anzeige #start1 if spannung < 175 then goto unterspannung ' PrĂŒfung auf Unterspannung der Batterie <11 Volt bei Fehler der Lichtmaschine timer = 0 ' setzt Timerzeit auf 0, Timer zĂ€hlt automatisch hoch #start2 if Taste1 = (not Taste1) then goto rauf ' Taste rauf erhöht ZĂ€hler um 1 if Taste2 = (not Taste2) then goto runter ' Taste runter verringert ZĂ€hler um 1 if timer < 200 then goto start2 ' ca 4 Sekunden Pause vor dem Abschalten der LEDs allleds_a = 0 ' alle LEDs an Port a ausschalten allleds_b = 0 ' alle LEDs an Port b ausschalten blank = 0 ' Grenz-LEDs ausschalten goto start1 ' RĂŒcksprung zum Start ' ---Unterprogramme-------------------------------------------------------------------- #vorheizen tmp = 250 ' Verbraucher mit 100% vorheizen led1 = on ' LED einschalten for t = t to 3 ' ZĂ€hler timer = 0 ' Timer startet automatisch und zĂ€hlt hoch if timer = 42 then led1 = off ' LED ausschalten if timer = 84 then led1 = on ' LED einschalten if timer = 126 then led1 = off ' LED ausschalten if timer = 168 then led1 = on ' LED einschalten if timer = 210 then led1 = off ' LED ausschalten if timer = 252 and t = 3 then goto start1 '4x 5 Sekunden vergangen dann Sprung zu start1 next #rauf blank = on ' schaltet die beiden Ă€uĂersten LEDs auf halbe Helligkeit pause 2 ' Schalterentprellung if a = 7 then goto start1 ' Wenn der ZĂ€hler = 7 ist wird das Unterprogramm verlassen a = a + 1 ' Erhöhung des ZĂ€hlers um 1 goto anzeige ' springt in das Unterprogramm Anzeige #runter blank = on ' schaltet die beiden Ă€uĂersten LEDs auf halbe Helligkeit pause 2 ' Schalterentprellung if a = 0 then goto start1 ' Wenn der ZĂ€hler = 0 ist wird das Unterprogramm verlassen a = a - 1 ' Verringerung des ZĂ€hlers um 1 goto anzeige ' springt in das Unterprogramm Anzeige #anzeige if a = 1 then led1 = on if a = 1 then tmp = 0 ' PWM Port 0% if a = 2 then led2 = on if a = 2 then tmp = 36 ' PWM Port 14% if a = 3 then led3 = on if a = 3 then tmp = 72 ' PWM Port 29% if a = 4 then led4 = on if a = 4 then tmp = 108 ' PWM Port 43% if a = 5 then led5 = on if a = 5 then tmp = 144 ' PWM Port 58% if a = 6 then led6 = on if a = 6 then tmp = 180 ' PWM Port 72% if a = 7 then led7 = on if a = 7 then tmp = 216 ' PWM Port 86% if a = 8 then led8 = on if a = 8 then tmp = 250 ' PWM Port 100% pwm1 tmp ' Datenzuweisung PWM-Port1 goto start1 ' RĂŒcksprung in das Hauptprogramm start1 #error allleds_a = on allleds_b = on pause 12 ' 1/4 Sekunde Pause allleds_a = 0 allleds_b = 0 pause 12 ' 1/4 Sekunde Pause vor dem RĂŒcksprung goto init ' RĂŒcksprung zum init Progammteil #unterspannung a = 0 led1 = on led8 = on pause 12 ' 1/4 Sekunde Pause led1 = 0 led8 = 0 pause 12 ' 1/4 Sekunde Pause vor dem RĂŒcksprung goto start end ' Programmende Andreas |
Antwort schreiben |