mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pulsweitenmessung


Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok so gehts

Do
   If Pind.0 = 1 Then
      I = 0
      While Pind.0 = 1
         Waitms 1
         I = I + 1
      Wend
      Print #4 , I
      I = 0
      Waitms 1
    End If
Loop
End

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.