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 > > Zwei Dinge sind bei diesem Programm zu beachten. > > 1. Da die Ports A und C standardmäßig mit dem SRAM verbunden sind, > > muss man dieses erst über Jumper JP7 deaktivieren. Erst dann können > > die Ports entsprechend benutzt werden. > > 2. Es müssen die richtigen Ports als Eingang und Ausgang deklariert werden. > Hallo Mario Hallo Ihr alle! > > Ich stand vor Wochen bei einem ähnlichen Problem. > Brauchte Eingänge für Tasten und Ausgänge zur Ansteuerung von Ereignissen. > Und keine ausreichenden Ports. > Habe zwar den Mega32 aber das prinziep ist das gleiche. > > Gelöst habe ich das Problem durch den Einsatz entsprechender I2C Bausteine. > Der I2C Bus funktioniert Fehlerfrei und selbst das Auslesen eines Drehgebers > macht keine Probleme. > Über die Ausgänge steuere ich sogar einen altmodischen Datenbus mit Schreib- und Leseimpuls > an. > Eine Leseroutine fragt ständig die Eingänge ab, übernimmt die Tastenentprellung und übergibt > gültige Daten an die jeweils entsprechende Ausgaberoutine. > Bei Tasten und Dregebern im Handbetrieb ist die Sache auch schnell genug. > Wie gesagt es funktioniert. Und es wird nur der I2C Bus benötigt. > Für anfallende Displayausgaben steht dann auch noch das LCD Display zur verfügung. > > Tip: Benutzar sind die I2C Module der C-Controlreihe. > > Gruß Bernd > > > > > > void main(void) > > { > > Port_DataDir(2,0x00); //Port C wird als Eingang deklariert > > Port_DataDir(0,0xFF); //Port A wird als Ausgang deklariert > > Programm1(); > > } > > > > Gruß > > Reiner > > > > > Ich plane mit Hilfe ihrer C-Control Pro Mega 128 eine Schaltung zu realisieren. Zusätzlich zum Board > > > und der CPU sind wir im Besitz einer LCD-Anzeige (zur Statusanzeige, ist noch in Planung) und einem > > > Tastenfeld (zur späteren Programmauswahl). > > > > > > Fakten zur Planung: > > > > > > Die C-Control soll > > > -16 Eingänge haben, die per Taster angesteuert werden > > > -16 Ausgänge zur Ansteuerung von Transistoren haben (Die beim Durchschalten eine Reihe LED's > > > leuchten lassen) > > > > > > Programm 1: > > > Ich habe mit dem Testprogramm versucht, die entsprechenden Ports auf Ein- bzw Ausgang zu > > > schalten und nach Betätigung eines Tasters (bzw Ansteuerung eines Ports) einen Ausgang für 20 > > > Sekunden auf Ansteuerung zu belassen, bevor er wieder auf 0 zurückfällt. Allerdings messe ich an > > > den Ports sehr komische Werte (3V, egal ob Ein- oder Ausgang, angesteuert oder nicht,oder ich > > > messe dauerhaft 5V) Manchmal funktionierte es allerdings auch wie es sollte. Der Ausgang blieb bei > > > ca. 0,8V, bis ich den passenden Eingang angesteuert habe. Dann stieg er auf 5,6V, blieb aber nicht > > > für die eingestelle Zeit bei AbsDelay(), sondern fiel immer schon nach ca. 2 Sekunden wieder ab. > > > Habe ich einen Fehler in der Programmierung? Oder liegt es evtl am Board? > > > > > > Eigentlich geplant ist folgendes: > > > Der Ausgang VAREL bleibt dauerhaft auf 1, bis einer der anderen 15 Eingängen angesteuert wird. Varel > > > soll dann ausgehen und der dazugehöre Ausgang auf für 20 Sekunden auf 1 bleiben, es sei denn ein > > > anderer Ausgang wird wieder angesteuert. Dann soll dieser stattdessen für 20 Sekunden bleiben. > > > > > > Wie wäre das realisierbar? Es wäre auch nett, wenn jemand eine ausführlichere Erklärungen für die > > > Timerfunktionen hätten, denn die aus dem Handbuch finde ich sehr mangelhaft. > > > > > > MfG > > > Mario > > > > > > Programm: > > > #define EVAREL 16 //Eingang von VAREL > > > ... > > > ... > > > ...(geht so weiter bis) > > > #define EFILTON 27 > > > > > > #define VAREL 0 //Ausgang VAREL > > > ... > > > ... > > > ...(geht so weiter bis) > > > #define FILTON 7 > > > > > > > > > void Programm1(void) > > > > > > byte FVAREL; //Variable für Funktion Varel definieren > > > ... > > > ... > > > ...(geht so weiter bis) > > > byte FFILTON; > > > > > > while(true) //Endlosschleife (Warten auf Ansteuerung) > > > { > > > while(Port_ReadBit(EVAREL)) //Wenn Eingang angesteuert wird > > > { > > > if (FVAREL!=1) FVAREL=1; //Setze Funktion Varel auf 1 > > > else break; > > > } > > > > > > while(FVAREL) //beginne mit Ansteuerung des Ausgangs > > > { > > > Port_WriteBit(VAREL,ON); //Setze Ansteuerung auf 1 > > > AbsDelay(WARTEZEIT); //Die Ansteuerung 20s auf 1 belassen > > > Port_WriteBit(VAREL,OFF); //Setze Ansteuerung auf 0 > > > if (FVAREL==1) FVAREL=0; //beende Funktion Varel > > > } > > > } > > > } > > > > > > void main(void) > > > { > > > Port_DataDir(EINGANGSR1,PORT_IN); //Ein- und Ausgänge definieren. > > > Port_DataDir(AUSGANGSR1,PORT_OUT); > > > Port_DataDir(EINGANGSR2,PORT_IN); > > > > > > Programm1(); //Auswahl(soll evtl durch ein zweites Programm erweitert werden) > > > } > > > > > > > > > > > > > > > Ich muss zugeben ich hab nich sooo den Plan davon.Sorry schonmal ^^ > > >