-
        
+ Antworten
Ergebnis 1 bis 9 von 9

Thema: Probleme mit meiner C-Control2 Station

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.11.2004
    Beiträge
    34

    Probleme mit meiner C-Control2 Station

    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:

    Code:
    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.03.2004
    Ort
    München
    Alter
    33
    Beiträge
    286
    Erstens denke ich, dass das ports.deact( 8 ) in diesem Fall überflüssig
    sein dürfte, da der Port zuvor ja nicht als Ausgang betrieben wurde.

    Desweiteren wäre interessant zu Wissen, wie sich das Programm unter
    Verwendung von Port 9 verhält. (P1H.1) - und unter Verwendung von
    Port 1 (P1L.1) (wobei bei Port 1 der Schalter natürlich mit +5V verbun-
    den werden muss)

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    24.11.2004
    Beiträge
    34
    Zitat Zitat von nestler
    Erstens denke ich, dass das ports.deact( 8 ) in diesem Fall überflüssig
    sein dürfte, da der Port zuvor ja nicht als Ausgang betrieben wurde.

    Desweiteren wäre interessant zu Wissen, wie sich das Programm unter
    Verwendung von Port 9 verhält. (P1H.1) - und unter Verwendung von
    Port 1 (P1L.1) (wobei bei Port 1 der Schalter natürlich mit +5V verbun-
    den werden muss)
    Das ports.deact habe ich eingefügt nachdem ich die Probleme hatte. Habe es jetzt beim Test mit Port 9 entfernt und ht nicht geholfen.

    Welcher Port ist den Port 1 P1L.1? und warum muß ich den mit + 5v verbinden?

    Seit bitte nachsichtig mit mir.

    Gruß Bandit18

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.03.2004
    Ort
    München
    Alter
    33
    Beiträge
    286
    Hm - keine Ahnung an welcher Klemme du Port 1 findest. Schau doch
    einfach mal im Handbuch nach.

    Meines Wissens verfügen nur Port 8, 9, 10, 11 über Pullup-Widerstände.
    Das heisst, sie sind standartmäßig auf high. Alle anderen sind jedoch
    auf low. Daher würdest du nicht viel bemerken, wenn du mit dem
    Schalter den Port auf Masse ziehst....

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    24.11.2004
    Beiträge
    34
    Hallo,

    es sieht so aus als wenn alle meine Digitalports egal ob auf Masse gezogen oder offen den Pegel LOW 0 haben.

    Muß man die Pullabwiderstände irgendwie einschalten?

    Ich schalte meine Station an bzw. resete sie und mit diesem Programm leuhten alle 3 LEDs der Station:

    Code:
    thread main
    {
      string s;
      int port1, port2, port3, a;
      station_io.init();
      station_lcd.init();
    
      sleep 2000;
      a=1;
      while a != 0
      {
       port1 =ports.get(8);
       port2 =ports.get(9);
       port3 =ports.get(10);
       if (port1 == 0){station_io.LEDon(1);} else {station_io.LEDoff(1);}
       if (port2 == 0){station_io.LEDon(2);} else {station_io.LEDoff(2);}
       if (port3 == 0){station_io.LEDon(3);} else {station_io.LEDoff(3);}
      }
    }
    Drücke ich nun meinen Taster an Port 9 der den Port an Masse schaltet, leuchtet die dazugehörige LED2 immer noch konstant. Lasse ich den Taster wieder los, sieht man das die Led leicht flackert. Das der Port also wie im ersten Versuch ständig zwischen dem Pegel HIGH und LOW hinundherschaltet (unregelmäßig).

    Ist meine C-Control 2 Station defekt?
    Hat jemand die gleiche Station und versucht den doch eher simplen Aufbau mal nachzuvollziehen. Wenn das dann bei Euch mit der selben Konstellation anders ist, könnte ich meine C-Control 2 Station noch zurückgeben.

    Oder hat noch jemand eine Idee warum meine Digitalports unbeschaltet alle den Pegel LOW haben?

    Gruß Bandit18

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.03.2004
    Ort
    München
    Alter
    33
    Beiträge
    286
    Dann ist die Station wohl vermutlich überhaupt nicht mit Pullup-
    Widerständen bestückt. Bei der Unit ist es wie gesagt so, dass
    4 Ports mit Pullup-Widerständen bestückt sind...

    Nochmal nachgebort: Steht in deinem Handbuch etwas von Pullups?
    Wenn nein, dann gibt es vermutlich beid der Station keine.

    Wenn es um das einfach Beispiel mit dem Schalter geht, dann verbinde
    den Schalter wie gesagt mit +5V.

    Gruss,
    Simon

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.03.2004
    Ort
    München
    Alter
    33
    Beiträge
    286
    Nochwas: Die Möglichkeit, dass die Station defekt ist, würde ich als
    allerletztes in Erwägung ziehen. - Ich hab auch schon öfter gedacht,
    meine Unit sei kaputt, und dann lag es nur an einem Fehler meiner-
    seits...

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    24.11.2004
    Beiträge
    34
    Du könntest Recht haben mit den Pullup-Widerständen. Wenn ich die Ports mit einem 10kOhm Widerstand gegen +5V schalte führen sie alle HIGH-Pegel, drücke ich nun den Taster so geht auch nur der eine Port auf LOW. Lasse ich ihn wieder los so bekommt er HIGH-Pegel. Also so wie es sein sollte.

    In meiner Beschreibung steht nichts von Pullup-Widerständen an den Digitalports, nur bei dem DCF/FRQ0 -Port ist ein Pullup geschaltet. Aber auch im Handbuch der Unit steht nichts von den Pullups am Digitalport, oder?

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    10.03.2004
    Ort
    München
    Alter
    33
    Beiträge
    286
    Im Unit-Manual sind die Ports 8, 9, 10, 11 als "Interrupt"-Ports
    bezeichnet...

    Wenn du also die Ports wie in deinem obigen Programm nutzen willst,
    dann musst du die Pullups wohl noch selber einbauen. 10 kOhm ist
    da ein ganz brauchbarer Wert.

    Gruss,
    Simon

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •