Renesas C

ftComputing : Programme für die fischertechnik-Interfaces und -konstruktionskästen
  
ftComputing.de
Home
Back
Programmierung
VC++ 6.0 :Debuggen
Sitemap
Index
Links
Impressum
Mail
 

Allgemeines

Hier wird eine Möglichkeit zur direkten Programmierung des ROBO Interfaces in Renesas C beschrieben. Programmiert wird in jedem Fall auf dem PC. Da ein Test auf dem ROBO Interface kaum möglich ist, wird hier ein mehrstufiges Vorgehen vorgestellt :

  1. Erstellen der Anwendung mit einer Teilmenge von VC++ 6.0 auf dem PC
    Testen mit den Debug-Mitteln der IDE von VC++ 6.0. 
    Hierzu wird ein VC++ Rahmenprogramm "SimRenesas" fest vorgegeben, in das eine C++ Source mit der eigentlichen Anwendung eingefügt wird. es muß zwingend UCHAR main() {} enthalten. Der Zugriff auf die Interface-Funktionen erfolgt über die Funktionsbibliothek roboFish.H / CPP, die eine klassenlose Version der Klasse CFishFace ist. Sie baut aber direkt auf der FtLib von fischertechnik auf (CFishFace baut auf umFish40.DLL auf). roboFish verfügt wie CFishFace über "RobMotoren" und Counter zur Positionierung in Anzahl Impulsen.
  2. Compilieren der Anwendung in einer Renesas C Umgebung "RunRenesas".
    RunRenesas enthält die gleiche Funktionsbibliothek roboFish.H / C wie (1.) diesmal in einer Version, die auf FtCComp von fischertechnik aufbaut. Die Extension der Source muß dazu von .CPP in .C geändert werden. Die Source wird mit Project | Add Files... in das Project eingefüft.
    Achtung : Das File ProgNr.INC des Projektes RunRenesaas enthält die Festlegung in welchen Speicherbereich das Programm geladen werden soll. Standard ist RAM1. Bei Bedarf ist das auf FLASH1 bzw. FLASH2 zu ändern.
  3. Laden in das ROBO Interface mit dem Tool FtLoader aus dem Paket FtCComp UND Starten.

Hinweis : Da die C++ Source der Anwendung von (1.) möglichst ohne Änderungen in (2.) eingebracht werden sollten, ist bei der Auswahl der Sprachmenge restriktiv vorzugehen. Als Datentypen werden z.Zt. folgende eingesetzt : UCHAR, UINT, int, BOOL. Die unterschiedliche Datenlänge auf den Systemen stört nicht weiter, da der Bereich von 16bit wohl nicht überschritten werden wird. Die normale C Sprachmenge ist in beiden Umgebungen verfügbar. Weitere include's sind sorgfältig zu überlegen, ebenso weitere Datentypen.

Hinweis2 : Der Distanzsensor wird jetzt auch unterstützt.

Beteiligte Komponenten

  1. VC++ 6.0 von Microsoft.
  2. FtLib von www.fischertechnik.de/de/computing/download.html
  3. Das VC++ Projekt SimRenesas aus roboFish.ZIP
  4. Renesas C über fischertechnik Downloads oder Knobloch
  5. FtCComp über fischertechnik Downloads
  6. Das Renesas C Projekt RunRenesas aus roboFish.ZIP

Beispiel : Lichtsucher - Hindernis aus ROBO Mobile Set

UCHAR main() {
  UCHAR Inputs;
  InitFish();
  do {
    Inputs = GetInputs();
    if((Inputs & 0x0C) == 0x0C) Ausweichen90();
    else if(Inputs & 0x04) AusweichenLinks();
    else if(Inputs & 0x08) AusweichenRechts();
    else if((Inputs & 0xC0) == 0xC0) Vorwarts();
    else if(Inputs & 0x40) Linkskurve();
    else if(Inputs & 0x80) Rechtskurve();
    else Lichtsuche();
  } while(1);
  FinishFish();
  return 0;
}

void Lichtsuche() {
  UINT i;
  Links();
  for(i = 0; i < 10; i++) {
    if(GetInputs() & 0xC0) return;
    WaitForHigh(iImpRechts);
  }
  Rechts();
  for(i = 0; i < 10; i++) {
    if(GetInputs() & 0xC0) return;
    WaitForHigh(iImpRechts);
  }
  Stopp();
}

void AusweichenLinks() {
  Stopp();
  Pause(1000);
  Ruckwarts();
  WaitForChange(iImpRechts, 10, iTasHinten);
  Links();
  WaitForChange(iImpRechts, 2);
  Stopp();
  Pause(500);
}

Programm HindernisLicht.C (Ausschnitt)

Die Programmstruktur entspricht dem ROBO Pro Programm. Lediglich die drei Sub's Licht, Hindernis und Fahren im Hauptprogramm wurden aufgelöst, so ist es deutlich übersichtlicher. Anstelle von if((Inputs & 0x0C) können die Hindernistaster auch explizit abgefragt werden : if(GetInput(3) && GetInput(4)), ist einfacher zu durchschauen.

Weitere Details auf Programmieren und Debuggen

Downloads

In  roboFish.ZIP sind die Projekte SimRenesas und RunRenesas einschließlich der erforderlichen FtLib 
bzw. der .h/.c Files enthalten, nicht aber die Tools. Neu (16.05.08) Sind verschiedene Programme für den ROBO Explorer mit Distanzsensor.

Die genannten Projekte enthalten jeweils die gleichen Beispiel Projekte : 
HanoiRobot(Turm von Hanoi mit Rekursion), 
PoorSlave(Funk), 
Stanze
(nach eTec Module)
Tresor mit CodeTasten

Stand : 17.06.2010