PSoC Statussignal auswerten mittels PWM?

Gast #4636328
Lesenswert?
• ▲
▼
Hallo,

ich arbeite gerade mit einem PSoC und bin noch ziemlicher Neuling.
Ich bekomme von einem Sensor ein Statussignal gesendet. Dieses ist 
entweder High (1) oder Low (0). Jett möchte ich dieses auswerten. Über 
einen Interrupt, der alle 25 ms ausgelöst wird frage ich den Status 
dieses Signals ab.
Ich muss zur auswertung 20 Werte speichern und dann ein Verhältnis 
bilden. Je nachdem welches Verhältnis rauskommt, ist es ein gewisser 
Status. Also bei 1:1 Status 1 bei 3:1 Status 2 und so weiter.

Kann ich das über ein PWM Baustein machen? Wie müsste ich diesen 
Konfigurieren und programmieren.

Ich hab ehrlich gesagt kein richtigen durchblick wie ich das ganze 
realsiieren kann.


Grüße
#4636388
Lesenswert?
• ▲
▼
Wozu willst du eine Hardware-Komponente dafür einsetzen?
Bei einem Abstand von 25ms kannst du doch problemlos eine kleine 
C-Funktion implementieren, die dir das Verhältnis zurückgibt.
1
Pseudocode
2

3
volatile uint8 Counter = 0 //zählt die max 20.Werte
4
volatile uint8 Status  = 0 //hier kumulierst du den Pin-Status
5

6
//25ms-IR
7
Counter++
8
Status = Status + PinRead()
9

10

11
//in der main()
12
Verhaeltnis = 0  //type, den du halt brauchst
13
..
14
  if Counter = 20
15
    Verhaeltnis = Counter / Status 
16
    Counter = 0
17
    status = 0
18
  endif

Wenn es denn doch in Hardware sein soll, könntest du einen Counter 
benutzen. Dein Eingangssignal wird gezählt und nach 20*25ms schaust du 
halt nach, was im Counter steht.
Gast #4636535
Lesenswert?
• ▲
▼
Hey,

jop genau so hatte ich es auch geplant. Einen Counter will ich nicht 
verwenden, bzw muss ich schauen ob ich überhaupt noch verwenden kann. Es 
sind nur maximal 5 Stück möglich und diese sind aufbebraucht für andere 
Funktionen.

Das mit der if Abfrage ist eine sehr gute Idee. Diese werde ich 
umsetzen.


Danke schön

Grüße

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