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 > Hi, > > es entspricht nicht genau dem beschriebenen Fehlerbild, aber eine Stolperfalle hab ich schon: > > if (Port_ReadBit(SW1) == 0); // Taste 1? > ^-- Semikolon falsch!!! > Das Semikolon bewirkt, das am Ende vom <i>if</i> garnichts ausgeführt wird. Die folgenden geschweiften > Klammern sind syntaktisch auch richtig, da ein neuer Block aufgemacht wird. Dieser Block wird > aber <b>immer</b> unabhängig vom <i>if</i> durchgeführt. Einfach Semikolon wegnehmen, dann > sollte es klappen. > > { > AbsDelay(10); // Verzögerung > if (Port_ReadBit(SW1) == 0) LED1_On(delval); // nochmal (entprellen) > } > > > Der gleiche Bug tritt übrigens ein paar Zeilen weiter wieder auf. Vielleicht kann ich in den Compiler eine > diesbezügliche Warnung einbauen. Ist aber nicht so einfach, wie es jetzt klingt. > > Gruss Peter > > > 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) > > } > > } > > > >