Bandit18
04.12.2004, 00:17
Hallo, ich habe gerade erst vor ein paar Tagen die C-Control 2 Station erworben. Dies sind meine ersten Programmiererfahrungen mit einem Microcontroller.
Nun zu meinem Problem:
Nach dem ich nun die eingebauten LEDs, Taster, LCD und Relais ansteuern kann, wollte ich die externen Ports der C-Control verwenden, um mit Hilfe der Digitalports Schaltzustände zu erfassen und darauf zu reagieren.
Ich denke das ein offener Digitalport nach einem Reset den Pegel HIGH (-1) führt (habe ich irgendwo gelesen). Meiner Meinung nach wäre der einfachste Schaltvorgang einen Taster an einen dieser Digitalport zu hängen und dann mit seiner Hilfe den Port auf GND zu ziehen. D.h. drücke ich den Taster sollte der Pegel von HIGH (-1) auf LOW (0) wechseln.
Soweit so gut, ich habe einen Taster genommen und Ihn mit dem einen Kabelende an die Klemme 46 (P0 intern Port 8 ) und mit dem anderen Kabelende auf GND (Klemme 40) geklemmt.
Dann habe ich folgendes Programm auf die C-Control geladen:
thread main
{
int port, a;
station_io.init();
station_lcd.init();
sleep 2000;
a=1;
while a != 0
{
ports.deact(8);
port =ports.get(8);
if (port == -1){
station_lcd.clear();
station_lcd.print(" Port -1");
station_lcd.line2();
sleep 100;
}
if (port == 0){
station_lcd.clear();
station_lcd.print(" Port 0");
station_lcd.line2();
sleep 100;
}
}
Ok, es ist nicht besonders hübsch aber es sollte mir den Zustand des Ports anzeigen.
Wenn ich nun die C-Control starte passiert nicht das erhoffte. Ist der Taster gedrückt habe ich immer die Anzeige "Port 0", lasse ich den Schalter los springt er wahrlos zwischen -1 und 0 hin und her. Drückt man den Taster eine Zeit lang nicht steht die Anzeige auch auf 0.
Woran kann das liegen, ich dachte man könne auf diese einfach Art und weise Beschaltungen an der C-Control vor nehmen. Aber um zum Beispiel Steuerungen oder gar Alarmanlagen zu erstellen, wären schon eher eindeutige Pegelzustände wünschenswert.
Vielleicht könnt Ihr mir ja auch sofort sagen was ich falsch gemacht habe, wie gesagt ich bin eher ein Frischling auf diesem Gebiet.
Vielen Dank!
Bandit18
Nun zu meinem Problem:
Nach dem ich nun die eingebauten LEDs, Taster, LCD und Relais ansteuern kann, wollte ich die externen Ports der C-Control verwenden, um mit Hilfe der Digitalports Schaltzustände zu erfassen und darauf zu reagieren.
Ich denke das ein offener Digitalport nach einem Reset den Pegel HIGH (-1) führt (habe ich irgendwo gelesen). Meiner Meinung nach wäre der einfachste Schaltvorgang einen Taster an einen dieser Digitalport zu hängen und dann mit seiner Hilfe den Port auf GND zu ziehen. D.h. drücke ich den Taster sollte der Pegel von HIGH (-1) auf LOW (0) wechseln.
Soweit so gut, ich habe einen Taster genommen und Ihn mit dem einen Kabelende an die Klemme 46 (P0 intern Port 8 ) und mit dem anderen Kabelende auf GND (Klemme 40) geklemmt.
Dann habe ich folgendes Programm auf die C-Control geladen:
thread main
{
int port, a;
station_io.init();
station_lcd.init();
sleep 2000;
a=1;
while a != 0
{
ports.deact(8);
port =ports.get(8);
if (port == -1){
station_lcd.clear();
station_lcd.print(" Port -1");
station_lcd.line2();
sleep 100;
}
if (port == 0){
station_lcd.clear();
station_lcd.print(" Port 0");
station_lcd.line2();
sleep 100;
}
}
Ok, es ist nicht besonders hübsch aber es sollte mir den Zustand des Ports anzeigen.
Wenn ich nun die C-Control starte passiert nicht das erhoffte. Ist der Taster gedrückt habe ich immer die Anzeige "Port 0", lasse ich den Schalter los springt er wahrlos zwischen -1 und 0 hin und her. Drückt man den Taster eine Zeit lang nicht steht die Anzeige auch auf 0.
Woran kann das liegen, ich dachte man könne auf diese einfach Art und weise Beschaltungen an der C-Control vor nehmen. Aber um zum Beispiel Steuerungen oder gar Alarmanlagen zu erstellen, wären schon eher eindeutige Pegelzustände wünschenswert.
Vielleicht könnt Ihr mir ja auch sofort sagen was ich falsch gemacht habe, wie gesagt ich bin eher ein Frischling auf diesem Gebiet.
Vielen Dank!
Bandit18