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: |