Pulsweitenmessung

Gast #1462929
Lesenswert?

Hallo,
ich versuche gerade hinzubekommen das mir mein mC die Länge eines an 
einem Port ankommenden Impulses ausgibt.

Hab dazu mal folgendes Programmiert :



$prog , 255 , &B11011001 ,                                  'Quarz an / 
Teiler aus / Jtag aus
$regfile = "m2560def.dat"
$hwstack = 82                                               '80
$framesize = 68                                             '64
$swstack = 68                                               '44
$crystal = 16000000 
'Quarzfrequenz

Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , 
Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4                               'USB Buchse

Dim I As Integer

Config Portd.0 = Input                                      '

Do
   I = 0
   While Portd.0 = 1
      Waitms 1
      I = I + 1
   Wend
   Print #4 , I
   I = 0
   Wait 2
Loop
End




Leider Bekomme ich immer nur 0 ausgegeben.

Zu dem angeschlossenen Port habe ich folgendes aus dem Datenblatt meines 
mC :
Pin 40 PD0 / SCL /INT0 (I2C-Bus)

Bei meinem mC handelt es sich um einen rnmega2560.

Ich hoffe ihr könnt mir da weiter helfen ?
Oder wenn jemand eine bessere Methode kennt um so etwas umzusetzen.
Gast #1462960
Lesenswert?

@Hazeh Zimmerer
Nein es handelt sich um ein Echolot das einen Init-Impuls von 5ms länge 
sendet.

@Karl heinz Buchegger

> Do
>    If Portd.0 = 1 Then
>      I = 0
>      While Portd.0 = 1
>        Waitms 1
>        I = I + 1
>      Wend
>    EndIf

meinst du das so ?
#1462963
Lesenswert?

Dennis schrieb:

> meinst du das so ?

Nein.

Abwarten bis der Puls beginnt.
Solange der Pind.0 auf 0 ist hat der Puls nicht begonnen.
Irgendwann wird er 1. Das ist für dich das Zeichen, dass der Puls 
anfängt. Ab diesem Zeitpunk überwachst du dein Eingang und solange der 1 
ist, zählst du dein I hoch.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren