Pulsweitenmessung

Gast #1462929
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.
Lass mich raten:  Du hast einen Taster angeschlossen und misst das 
Prellen aus?

(Zum Basic-Programm kann ich nichts sagen - mein letztes ist 30 Jahre 
her und ich dachte, diese "Sprache" sei längst gegessen.)
> Do
>    I = 0
>    While Portd.0 = 1
>      Waitms 1
>       I = I + 1
>    Wend


Wie wäre es, wenn du zunächst mal abwarten würdest, bis der Puls 
überhaupt anfängt?


> Oder wenn jemand eine bessere Methode kennt um so etwas umzusetzen.
Timer mit Input Capture
Gast
@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 ?
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.