Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Prellen? Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Joe - 2.03.2017 22:51)
 Als Antwort auf Prellen? von Dietmar - 1.03.2017 17:36
Joe nutzt:  Open-Micro, Open-Macro
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

Bisherige Antworten:

KBSCR-Abfrage in BASIC (von Dietmar - 18.04.2017 3:34)
Re: Prellen? (von Dietmar - 6.03.2017 22:20)