
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo Dietmar, wie immer hattest Du so recht; es ist tatsächlich das Prellen bzw. Mehrfach Impulse an der fallenden und steigenden Schaltflanke, die von meiner Ferraris-Aufnahmeschaltung (beschrieben in unter http://om.dharlos.de/frameset.htm//Projekte//Ferraris-Zähler) geliefert werden. Das KBSCR Register lieferte bei der Abfrage immer 0, s. u. Programmteil dazu, das konnte ich schnell ausschliesen. Mein CMOS Inverter liefert an der Impulsflanke mehrere High/Low Impulse, mühsam konnte ich es mit meinem 45 Jahre alten Analog Oszillograf messen. Mit einem Digitalem Speicheroszilloskop wäre es natürlich leichter zu messen gewesen. Das Ergebnis ist nun absolut reproduzierbar. Sobald der Tiefpass eingefügt ist, wird nur noch einmal / Impuls gezaehlt. Mit dem Tiefpass 820 Ohm in Serie u. 1uF gegen GND wird der rel. steile Mehrfach Impuls auf ca. 15 msec verschliffen, sodass es nun zu einwandfreien Zählergebnissen kommt. Nochmals vielen Dank Joe ##### Print ausgabe ergebnisse des Programms P4P3KBSC.bas ############# ##### ab hier mit Tiefpass 820 Ohm in Serie u. 1uF gegen GND### ##### einwandfreier Zaehlvorgang, Impulsfolge ca. 80 sec ################ Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 Freq1: 1 KBSCR: 0 ##### ab hier nur 820 Ohm in Serie u. ohne 1uF gegen GND### ##### nun 2 Impulse ausgegeben, durch sog. Prellen 2x Zaehlvorgang, Impulsfolge ca. 80 sec ################ Freq1: 87 KBSCR: 0 Freq1: 87 KBSCR: 0 ## Freq1: 74 KBSCR: 0 Freq1: 72 KBSCR: 0 ## ##### ab hier ohne 820 Ohm in Serie u. ohne 1uF gegen GND### ##### nun 2 - 3 Impulse ausgegeben, durch sog. Prellen 2-3x Zaehlvorgang, Impulsfolge ca. 80 sec ################ Freq1: 101 KBSCR: 0 Freq1: 76 KBSCR: 0 Freq1: 1 KBSCR: 0 ## Freq1: 65 KBSCR: 0 Freq1: 71 KBSCR: 0 Freq1: 85 KBSCR: 0 ## Freq1: 83 KBSCR: 0 Freq1: 71 KBSCR: 0 ## Freq1: 94 KBSCR: 0 Freq1: 81 KBSCR: 0 ########## Programm dazu P4P3KBSC.BAS ################ ' P4P3KBSC.BAS P4P3 Interrupt ' Status: vom Do. 02.03.2017 ' KBSCR Abfrage ' mit verriegelung u. torzeit = 255 funktioniert es nun ' Testprogramm zur Messung der Anzahl von Low-Impulse mit Wiederholtate 0.5 bis 500sec u. Im-Laenge 0.01 bis 10 an Port 4/Pin4 und ' der Anzahl von Low-Impulsen mit Wiederholrate 0.04 bis 40sec u. Impulslaenge 0.001sec an Port 3/Pin5 ' Hardware Port4: signal wird invertiert an Port [4] angelegt; Port 4 Interrupt gesteuert ' Hardware Port3: 0/5V Impulse werden angelegt an Port3 mittels Zusatzschaltung damit nicht HOST Mode auftritt ' so dass Port 3 im Einschaltmoment sauber an Betriebsspannung=5V liegt ' Die Programmuebertragung muss mit OCBASR.EXE in OPTION/TOOLS/BASIC Compiler erfolgen ' hier ohne compile benutzt ' --- Betriebssystem konfigurieren ------------------------------------------ INCLUDE "OM.DEF" 'Include-Datei mit Definitionen ' --------------------------------------------------------------------------- ' --- Definition der Byte Variablen fuer das Hauptprogramm und die verwendeten Softwaremodule ' ---------------------------------------------- DEFINE Im_P4 byte 'Impulse zaehlen an PortP4/Pin4 DEFINE Im_P3 byte 'Impulse zaehlen an Port P3/Pin5 DEFINE KBS_A BYTE 'Ausgabe INhalt des KBSCR DEFINE Flag BYTE DEFINE Flag1 BIT[1] OF Flag ' ---- Definition der Bitvariablen ' ----Definition Ports----------------------------------------------------------------------- DEFINE port4 port[4] 'Eingangsignal mit neg. Flanke ausgwertet DEFINE port3 port[3] ' " " '******** Interrupt Einstellung von Pin4/Port4 ' der folgende Code-Teil basiert auf ' aus ccintern.dharlos.de/forum/lesen.php?eintrag=11676 ' --- Das Hauptprogramm ----------------------------------------------------- #main CONFIG2=&b01000000 'IRQEN = Bit 6 im CONFIG2-Register des Kontrollers setzen INTERRUPT basicirq 'BASIC-Interruptroutine vereinbaren FREQ=1 'Torzeit 20 msec ==> 3x Ausgabe 'FREQ=100 'Torzeit 200 msec ==>liefert noch 2 Ausgaben 'REQ=255 'Torzeit 200 msec ==>mir verriegelung nun einwandfrei KBIER=&b01001100 'FREQ1 zusätzlich an PORT[4] 'KBIER=&b01001000 'FREQ1 zusätzlich an PORT[4]; damit geht es nicht PrintSpc=ON 'Flag1=OFF WHILE TRUE 'TRUE, funktioniert nur mit TRUE ' Abfrage wie in Programm P3__FREQ.BAS mit gleicher Torzeit wie dort IF Freq<>0 THEN PRINT "Freq1:";Freq,"KBSCR:";KBS_A:PRINT 'alle 80 sec kommt eine neg. Flanke u. nach 6 sec geht Port wieder auf high ' es kommt ein ausdruck und der wert liegt zwischen 1 bis 255 ' je nach dem, wie Torzeit u. Impuls zusammentreffen ' sobald Tiefpass dazwischen geschaltet ist, funktioniert es ' IF Freq1<>0 AND Flag1=OFF THEN ' Flag1=ON ' IF Freq1<>0 THEN ' ohne verriegelung kommen laufend werte ' ADD Im_P4,1 ' PRINT "Im_P4:";Im_P4,"Freq1:";Freq1,"KBSCR:";KBS_A ' ENDIF ' IF Freq1=0 AND Flag1=ON THEN ' Flag1=OFF ' ENDIF ' IF Freq1<>0 THEN PRINT "Freq1:";Freq1 druckt 3 x aus ' Add Im_P4,1 ' PRINT "Freq1:";Freq1,"Im_P4:";Im_P4 'alle 60 sec kommt eine neg. Flanke u. nach 6 sec geht Port wieder auf high ' ENDIF WEND END END PROCEDURE basicirq 'COMPILE 'Interruptroutine an Port 4 ADD Im_P3,1 PRINT "Im_P3=";Im_p3 RETURN INTERRUPT END PROCEDURE '****** Abfage des KBSCR Registers ****** PROC KBS_Ab INLASM ! lda KBSCR ' lade INhalt KBSCR in accu ! sta KBS_A ! rts END PROC |
| Antwort schreiben |