Zum Inhalt springen

dip schalter als taster(low-high-low) in c


cable545

Empfohlene Beiträge

ich habe folgendes problem.

ich habe eine schleife und möchte diese verlassen, wenn ich von einem board ein low-high-low signal per dip switch bekomme. mir geht es garnicht um die befehle um daten mit dem board auszutauschen. lediglich das verlassen der schleife, wenn der schalter von low auf high und dann von high auf low geschaltet wird, bereitet mir probleme. wäre nett wenn mir jemand helfen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das kommt darauf an, was Du von der Hardware für Signale bekommst und wie sie gesampled sind, denn Du musst ja passend die Signale abtasten, damit Du den Flankenwechsel korrekt findest. Ist die Abtastfrequenz zu hoch, bekommst Du ggf einen Flankenwechsel, der durch Rauschen verursacht wird, ist die Frequenz zu klein, siehst Du den Wechsel nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ja, ich verstehe.

in dieser hauptschleife wird die ganze zeit ueberprueft ob sich die stellung der insgesamt acht schalter aendert. wenn sich ein schalter aendert wird der neue wert in eine variable uebernommen. beendet wurde die schleife sonst durch einen kbhit(). nun soll jedoch die schleife durch ein low high low signal vom achten schalter beendet werden. so ist die aufgabenstellung

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da Dein Code wenig aussagekräftig ist, kann man nicht viel dazu sagen. Ich meine Du hast nur zwei inernander geschachtelte Schleifen, ohne dass man z.B. etwas über die Typen der Variablen aussagen kann.

Wie schon gesagt, Du musst den Flankenwechsel detektieren und dazu musst Du eben entsprechende Infos über die Frequenzen und das Sampling haben. Das Board wird in irgendeiner Form die Dip-Schalter-Positionen an den Rechner übermitteln, diese musst Du entsprechend verarbeiten. Ohne genaue technische Spezifikation der Datenübertragung kann man nicht wirklich große Informationen liefern.

Je nach Schnittstelle musst Du ggf die Daten kontinuierlich verarbeiten, wobei Du dann in den Bereich des Echtzeitprozesses kommst bzw. Du musst eine Multithreading-Lösung entwickeln und die Daten ggf auch zwischen speichern, so dass Du auf sie innerhalb der Schleife zugreifen kannst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok...ich hätte vielleicht mal die schleife mit dem ganzen inhalt laden sollen.

hier ist sie.in iDIPswMirror ist immer der letzte wert der dipswitches gespeichert. in der schleife werden erst die aktuellen stellungen der dip-switches gelesen und in iDIPswA gespeichert. anschließend wird in der if-anweisung geprüft ob iDIPswA ungleich iDIPswMirror. wenn ja wird iDIPswMirror aktuallisiert und der status der dipswitches auf ein paar LEDs abgebildet. die LEDs befinden sich ebenfalls auf dem board. unterbrochen wird die schleife momentan durch ein kbhit(). sie soll aber unterbrochen werden wenn der achte dip-switch von low auf high und von high auf low geschaltet wird.


int iDIPswA, iDIPswMirror;


// Build DIP-Switch Status Mirror

outportb (CSCIR, PBDR); // Set IndexPtr. to IndexRegister A8h

iDIPswMirror= inportb (CSCDR); // Read IndexRegister A8h

enable ();


while (kbhit==0)

{


   // Read current DIP-Switch Status.

   disable ();

   outportb (CSCIR, PBDR); // IndexPtr.= A8h

   iDIPswA= inportb (CSCDR); // Read IndexRegister A8h

   enable ();


   // Compare current Status with last Status

   if (iDIPswA != iDIPswMirror)

   {

      // DIP-Switch Status change...

      iDIPswMirror= iDIPswA;

      printf ("\b\b%02x", iDIPswA & 0xff); // Update Msg.

      disable ();

      outportb (CSCIR, PADR); // Update LED´s

      outportb (CSCDR, iDIPswA & 0xff);

      enable ();

   }


}

ach so. ja die dip schalter werden per hand geschaltet

Bearbeitet von cable545
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...