
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> nein die torzeit betrĂ€gt ja nur 100ms also zĂ€hlt er in sek 110 mal Hallo IQ250, (nomen est omen???) JEDE P R O F F E S S I O N E L L E Programmiersprache hat einen DEBUGGER mit dem man sich: JEDE VARIABLE, :den Aufrufstack den Prozessorstack Prozessorregister usw. anschauen kann. Die professionellste Methode Fehler zu suchen ist sich IM DETAIL anzuschauen was passiert also bitte bitte bitte bitte bitte bitte bitte bitte bitte bitte fĂŒge in das Beispielproggi die Zeile PRINT FREQ 'DEBUG-AUSGABE in der Schleife ein und schau Dir mit Hyperterminal an WAS fĂŒr eine Frequenz ausgegeben wird. Du kannst Dir ABSOLUT sicher sein Ein Programm macht IMMER IMMER IMMER IMMER genau das was man programmiert hat Es kommt aber des öfteren vor das das Programm etwas ANDERES macht als was man DENKT und da hilft es nun mal gar nicht stĂ€ndig zu sagen "aber es muss doch so wie ich DENKE" da hilft nur: aufhören zu DENKEN und statt dessen per print ANALYSIEREN Du probierst doch gerne rum dann probier doch mal aus wie das geht mit print in Hyperterminal Variablen auszugeben nochmal zu deinem eigenen Programm sobald die Bedingung "if FREQ >2" erfĂŒllt ist springt das Programm zu #run setzt a=5 und 10 MILLI-Sekunden = 0,01 Sekunden spĂ€ter ist das Programm BEENDET NACH BEENDIGUNG des Programms geht der Variableninhalt VERLOREN wie wĂ€re es mit folgender Variante '-------------------------- '------ I/O PORTS --------- '-------------------------- define FREQ_IN port[4] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- define a byte[1] define b byte[2] '-------------------------------------------------- '----------- SHOWING FREQUENCY RANGE ---------- '-------------------------------------------------- 'SET COUNTER GATE TIME ( 20ms UNITS )AND MAKE PORT INPUT #ZĂ€hlerstand FREQ=200 if FREQ >2 then goto run b=1 goto ZĂ€hlerstand #run a=5 goto run damit lĂ€uft das Programm dann weiter ABER ohne irgendeine Ausgabe kannst Du immer noch nicht analysieren was ablĂ€uft jetzt mal ein Demo dazu define Eingang1 port[1] define a byte[1] define b byte[2] #Zaehlerstand FREQ=200 if Eingang1 = ON then goto run b=1 PRINT b goto Zaehlerstand #run a=5 PRINT a end wenn Du dieses Programm im Simulator laufen lĂ€sst und Dir im Hauptmenu unter Ansicht - C-Control Ausgaben Alt-3 anzeigen lĂ€sst sausen lauter "1" en durch das Fenster wenn Du jetzt im Fenster Ansicht -C-Control Digitalports auf den Port "1" klickst wird noch GENAU EINE "5" ausgegeben und dann wird das Programm beendet zweite Variante define Eingang1 port[1] define a byte[1] define b byte[2] #Zaehlerstand FREQ=200 if Eingang1 = ON then goto run b=1 PRINT b goto Zaehlerstand #run a=5 PRINT a goto run jetzt sausen lauter "1"en durch das Ausgabefenster solange man den Digiport "1" in Ruhe lĂ€sst sobald Du EINMAL kurz auf Port 1 geklickt hast sausen lauter "5" durch das Fenster so und nun erzĂ€hl mir nicht das das bei DIR nicht so gehen wĂŒrde ich habe es eben beim Schreiben des postings GENAUSO durchgetestet. Wenn es bei Dir etwas anderes macht dann IST etwas anders ĂŒbrigens es könnte auch folgendes sein Du hast gepostet "#ZĂ€hlerstand" mit "Ă€" UMLAUTE versteht der compiler NICHT du musst Zaehlerstand mit "ae" schreiben das könnte es natĂŒrlich auch sein dann hast Du Dir das Fenster Meldungen NICHT angeschaut und ein fehlerhaftes oder gar kein Programm auf die cm ĂŒbertragen was lerne ich daraus? Wenn es besonders SCHNELL gehen soll geht es besonders LANGSAM (in diesem Fall 14 ! Postings - und Fehler immer noch nicht gefunden) Erinnere Dich an den Tag an dem Du ganz ruhig und entspannt warst. (ich lĂ€chle) Ja wirklich erinner Dich mal Rufe Dir in Erinnerung wo das war welche Uhrzeit ist es? was siehst Du? was hörst Du fĂŒr GerĂ€usche? gibt es einen besonderen Geruch? Erinnere Dich an möglichst viele Details dann kommt auch dieser ruhige entspannte Zustand wieder so und nu schlendere mal mit Ruhe daran die Beispiele aus diesem Posting im Simulator nachzuvollziehen. viele GrĂŒĂe sl define LED port[5] define FREQ_IN port[4] define ADC1 ad[1] define ADC2 ad[2] define ADC5 ad[5] define ADC6 ad[6] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- LED=off '-------------------------------------------------- '----------- SHOWING FREQUENCY RANGE ---------- '-------------------------------------------------- 'SET COUNTER GATE TIME ( 20ms UNITS )AND MAKE PORT INPUT FREQ=5 '100ms 'READ THE COUNTS AND SWITCH LED #START IF (FREQ > 150) or (FREQ < 100) then LED=off IF (FREQ < 150) and (FREQ > 100) then LED=on PRINT FREQ 'DEBUG-AUSGABE goto START |
| Antwort schreiben |