CC2Net-Forum Zur Übersicht - Zurück zur Homepage
Re: hwcom Kategorie: CControl2 Unit & Application Board (von: André H. - 16.2.2003 14:36)
Als Antwort auf: Re: hwcom von randolf - 16.2.2003 13:00

Hallo randolf,

> danke für Deine Antwort. Anbei findest Du den Quelltext. Geladen ist wirklich die neuere OS (18.09.2001).
> Allerdings sind sowohl die Unit, als auch das Board aus der ersten Serie.

Bei der CC2 hat sich, soviel ich weiß, in den letzten Jahren im Hardwaredesign nichts geändert.
Ich betreibe selbst alte und neue Units Ich konnte keinen Unterschied zw. diesen feststellen.

> Ich habe die Jumper JP7 (RTS) und JP8 (CTS) gezogen. Seitem kann ich mit dem PC wieder Daten empfangen.

Die Jumper dürfen nicht gezogen sein !! Das Senden funzt sonst nur sporadisch.
Entweder müssen die Jumper gesetzt sein, dann muß auch auf der PC-seite
das HW-Handshake aktiviert werden bzw. dafür gesorgt werden, daß RTS=True ist,
oder, wenn die Jumper nicht gesetzt sein sollen, muß µC CTS mit GND verbunden sein !

> Es ist trotzdem nicht alles in Butter, da die CC2 im Hostmodus immer noch ein merkwürdiges Verhalten zeigt.
> Auf die Kommandos (z.B. cmd_send_id) erhalte ich jetzt manchmal die richtige Antwort und manchmal nicht.
> Es hilft meist den Hostmodus noch einmal einzuschalten (Reset + Host).

Beachte, daß sich durch einen Bug in der IDE die Unit nach dem Laden eines Programms
auf 57.600Baud befindet ! Daher werden Kommandos die dann mit 19.200 Baud gesendet
werden nicht bzw. falsch ausgewertet.

> Auch das Programm muss ich hin und wieder 2 mal starten, bevor es richtig anläuft
> (lcd intern zeigt running, lcd extern zeigt nichts oder Unfug). Vielleicht sind das noch ein paar Anhaltspunkte?

Versuch' das OS nochmal zu Laden.

Ich hab' Dein Quellcode ein wenig optimiert. Jedoch Fehler, außer, daß
bei Dir ein String übergelaufen ist, konte ich nicht finden:

//------------
  thread main
//------------
{
  int ad[6];
  string s;
  byte d,i;
  long n;

  hwcom.init();
  hwcom.setspeed(hwcom.SPEED_19200);
  lcdext.init();
  lcdext.print("Warte");
  sleep 500;

  n = 1;
  loop
  {
  if hwcom.rxd()
    {
     d = hwcom.get();
     if d==40
      {
       for i=0 ... 5 ad[i]=ports.adc(i);
       s = "";
       str.putlong(s,n);
       lcdext.clear();
       lcdext.goto(0,0);
       lcdext.print(s);

       s = "AD0= ";
       str.putint(s, ad[0]);
       lcdext.goto(0,6);
       lcdext.print(s);

       s = "AD3= ";
       str.putint(s, ad[3]);
       lcdext.goto(1,6);
       lcdext.print(s);

       s = ""; // Ab hier lief die Strinvariable u.U. über
               // Deshalb wird öfters gesendet
       str.putlong(s,n);
       hwcom.print(s);
       for i= 0 ... 5
       {
        hwcom.put(',');
        s = "";
        str.putint( s,ad[i]);
        hwcom.print(s);
       }
       n = n + 1;
       }
     if d==13
       {
        lcdext.clear();
        lcdext.print("Hostmode");
        quit 63;
       }
   }
  }
}


MfG André H.


    Antwort Schreiben