Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo Ihr Alle! Hallo Peter! > > Bin seit wenigen Abenden wieder im Rennen mit neiem Applikationsboard. > Es Funktioniert. (siehe "Hilfe Error") > > Habe jetzt aber ein eigenartiges Problem. > Da ich für meine Anwendung 2 Porteingänge Überwachen wollte zum Zählen von Impulsen, > Schrieb ich zu Testzwecken das Programm LED3 folgendermassen um. > SW1 drücken --> LED1 2 sek. an. > SW2 drücken --> LED2 2 sek. an. > > Folgender Effekt tritt auf: > > Nach irgend einem schema leutet nach dem drücken von SW1 die LED2 auf. > meistens nach dem SW2 mit LED2 benutzt wurde. > > Das entsprechende Programm hängt hinten an. > > hier nun das Programm: > // LED4: Ausschalt Verzögerung > > // Abwandlung von LED3 als Testprogramm für Portabfrage > > // Verwendung der Taste SW1 > // LEDs leuchten nach dem Drücken des jeweiligen SW für 2 sek > // erforderliche Library: IntFunc_Lib.cc > > > // Deklaration der I/O Variablen > // die PortPins werden von 0 bis 31 angesprochen (4 Ports a 8 Pins) > // Beispiele: 0=PortA.0, 9=PortB.1 > > #define SW1 26 > #define SW2 27 > #define LED1 30 > #define LED2 31 > #define on 0 > #define off 1 > #define out 1 > #define in 0 > > int delval; // globale Variablendeklaration > > //------------------------------------------------------------------------------ > // Ein- und Ausschalten der LED1 > // > void LED1_On(int delay_val) > { > Port_WriteBit(LED1,on); // LED2 einschalten > AbsDelay(delay_val); // Verzögerung (Einschaltdauer) > Port_WriteBit(LED1,off); // LED2 ausschalten > } > > //------------------------------------------------------------------------------ > // Ein- und Ausschalten der LED2 // der momentanen Einfachheit für die 2. LED > // > void LED2_On(int delay_val) > { > Port_WriteBit(LED2,on); // LED2 einschalten > AbsDelay(delay_val); // Verzögerung (Einschaltdauer) > Port_WriteBit(LED2,off); // LED2 ausschalten > } > > //------------------------------------------------------------------------------ > // Hauptprogramm > // > void main(void) > { > delval=2000; // Verzögerungszeit: 2s > Port_DataDirBit(LED1,out); // LED2 PD7 (PortD.7) auf Ausgabe vorbereiten > Port_DataDirBit(LED2,out); // LED2 PD7 (PortD.7) auf Ausgabe vorbereiten > Port_DataDirBit(SW1,in); // SW1 PD4 (PortD.4) auf Eingabe vorbereiten > Port_DataDirBit(SW2,in); // SW2 PD4 (PortD.5) auf Eingabe vorbereiten > Port_WriteBit(LED1,off); // LED2 ausschalten > Port_WriteBit(LED2,off); // LED2 ausschalten > while (1) > { > > // if (Port_ReadBit(SW1) == 0) LED1_On(delval); // für Test ohne ausgelagerte Funktion > // if (Port_ReadBit(SW2) == 0) LED2_On(delval); // für Test ohne ausgelagerte Funktion > > Drehgeber1(); // zur ausgelagerten Funktion > } // Verzögerungszeit. > } > > //------------------------------------------------------------------------------ > // Drehgeber1 > // > void Drehgeber1(void) > { > //int Drehgeber11, Drehgeber12; > > if (Port_ReadBit(SW1) == 0); // Taste 1? > { > AbsDelay(10); // Verzögerung > if (Port_ReadBit(SW1) == 0) LED1_On(delval); // nochmal (entprellen) > } > > if (Port_ReadBit(SW2) == 0) LED2_On(delval); // Taste 2? > { > AbsDelay(10); // Verzögerung > if (Port_ReadBit(SW2) == 0) LED2_On(delval); // nochmal (entprellen) > } > } >