Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Abfragen von digitalen Ports Kategorie: Programmierung (von AndrĂ© H. - 15.09.2002 10:57)
Als Antwort auf Abfragen von digitalen Ports von Thomas Horn - 13.09.2002 0:15

Hallo Thomas,


> ich möchte an einem digitalen Port P1H.0 auf dem Applikationsboard den Zustand abfragen, ob er sich im Zustand high oder low befindet, d.h. ob ein externes, elektrisches Signal am Port anliegt oder nicht

1. Es heiĂ?t Application Board.

> (Port wird in diesem Fall als Eingangsport verwendet).
> Wenn er den Zustand high hat, liegt ein externes, elektrisches Signal an und es soll mittels can.send eine Nachricht über den CAN BUS gesendet werden können.
>
> Meine Fragen lauten:
>
> 1. Wie muĂ? der digitale Port P1H.0 gesetzt werden, damit er den Zustand high annehmen kann, wenn
>     ein externes, elektrisches Signal an diesen Port von auĂ?en angelegt wird (z.B. ein analoges Rechtecksignal) ?
>
>     Wenn kein Signal anliegt, soll er den Zustand low haben bzw. keine Nachricht ĂĽber CAN BUS senden.

Setzen mu�t Du garnichts. Die Ports sind nach einem Reset immer Eingänge.
Die Ports werden einfach mit ports.get() abgefragt (siehe Handbuch).

>
> 2. Kann mir jemand ein Beispiel zu diesem Port P1H.0 programmieren, wenn ein externes (elektrisches)
>     Signal an diesem Port von auĂ?en anliegt bzw. wenn kein Signal anliegt und keine CAN BUS Nachricht
>     gesendet werden soll ?

if ports.get(port)
   {
   // nachricht senden
   }

> Wenn ein kurzes, elektrisches Signal an diesem Port von auĂ?en angelegt wird, soll die CAN BUS Nachricht
> nur DATA[0] enthalten. Wenn zwei kurze, elektrische Signale hintereinander an diesem Port von auĂ?en
> angelegt werden, soll die gesendete CAN BUS Nachricht DATA[0],DATA[1] enthalten usw.
>

Hier muĂ?t Du wohl mit den countern arbeiten.
Dazu muĂ?t Du aber Dein Signal z.B. mit einem Transistor zuerst invertieren, da die
Counterports nur bei einer high-low-Flanke zählen.

int x;
loop
{ x=ports.getcount(0);//0=P1H.0
  if x break;
  yield;//nur bei Multithreading
}
sleep 100; //100ms warten fĂĽr weitere Impulse
x=x+ports.getcount(0)
if  x==1
  {
  // sende Nachricht (1 Impuls)
  }
else
if x ==2
  {
  // sende Nachricht (2 Impulse)
  }
else
if x ==3
  {
  // sende Nachricht (3 Impulse)
  }
usw.


MfG André H.


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: