PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Control Unit1 mit C3C



Thargor
29.09.2004, 13:05
Hi!

Ich habe auf einer Page das Programm C3C gefunden.(dürfte bekannt sein). Aber ich finde nicht raus wie ich damit richtig programmieren kann.

Selbst die Beispiele die in der Hilfe dabei sind funktionieren nicht. Was ich hinbekommen habe ist die Funktion "Beep" zu nutzen, aber ich kann weder was auf dem LCD ausgeben noch Ports ansteuern.

Gibts da irgendwo ein Tutorial dazu?


Vielen Dank schon mal.

hup
15.11.2004, 21:33
Aber ich finde nicht raus wie ich damit richtig programmieren kann.


Leider habe ich dazu auch nicht viel im Web gefunden.
Aber aus verschiedenen Manuals und Dokus habe ich etwas zusammengekratzt... :wink:

Bis jetzt kann ich mit C3C ...

die Motoren steuern
die 4 LEDs ansteuern
Berührungs- und Geräuschsensor abfragen
Lichtsensoren abfragen


Vielleicht wird's noch mehr ...
Wenn Du noch interessiert bist, melde Dich.

Thargor
15.11.2004, 22:45
Danke für deine Mühe, aber wir sind jetzt auf die vorgesehene Methode umgestiegen.

hup
17.11.2004, 19:20
Bis jetzt kann ich mit C3C ...

die Motoren steuern
die 4 LEDs ansteuern
Berührungs- und Geräuschsensor abfragen
Lichtsensoren abfragen



Wenn's jemand interessiert...

besa
22.11.2004, 16:49
>> Wenn's jemand interessiert...


Ja mich :-)

Ich hatte es bisher nur geschafft die LEDs anzusteuern und dann die Lust verloren. Vielleicht helfen mir deine Sourcen ja weiter.

Danke

Gruß

Sascha

sascha.becker at gmx.net

derDude
23.12.2004, 14:07
hi
wäre auch interessiet(madbanana@gmx.de)
danke schon mal im Vorraus

hup
09.01.2005, 13:23
Das Programmieren des ACS und der IR-Schnittstelle habe ich nur mit C nicht geschafft. Aber mit einer modifiziertem C3C-Treiberdatei ist es gelungen! Dazu musste ich mich zuerst mit C3C und Assembler auseinandersetzen...

Hier ist das Ergebnis. Man kann in C also jetzt:

die Motoren steuern
die 4 LEDs ansteuern
Berührungs- und Geräuschsensor abfragen
Lichtsensoren abfragen
das AntiCollisionsSystem abfragen (z.B. auf Hindernisse reagieren)
IR-Signale senden und empfangen (z.B. mit TV-Fernbedienung steuern)

Die Installation ist ganz einfach, Kurzanleitung und Beispielprogramme anbei.

Viel Vergnügen...

besa
10.01.2005, 11:29
Das ist doch mal was feines. =D>

Vielen Dank.

Gruss

Sascha :cheesy:

HazardX
23.04.2005, 18:25
Danke für die Beispielprogramme. Die sind wirklich hilfreich. :) Mein Problem ist nun aber, dass ich auf meinem Robby noch die Erweiterungsplatine drauf habe und die erweiterten Möglichkeiten (LCD-Display, 8 LEDS, etc.) lassen sich so noch nicht ansteuern. Da ich mich noch nicht so gut mit Microcontrollern auskenne waren meine bisherigen Versuche das zu realisieren leider nicht wirklich von Erfolg gekrönt.
Hat jemand da schon etwas hinbekommen? Im Internet hab ich leider auch nichts gefunden.

Danke & Gruß,
Tim

[EDIT]
Ok, die Ansteuerung des LCDs funktioniert nun. Sie leiß sich recht einfach aus den CCBASIC Beispielen portieren, aber die 4 zusätzlichen LEDs wollen nicht. Offensichtlich muss da auch noch etwas in Assembler angepasst werden. Vielleicht bekomm ich es ja hin. :) Ich geh dann mal Assembler lernen...

Kurt Pieper
24.04.2005, 20:14
Hi HazardX.
Zeig mal deine 'C' Portierung der Displayansteuerung.
Bin auch in der Lernphase mit Robby.
Kurt

HazardX
24.04.2005, 23:00
Du brauchst nur folgenden Code in die rp5plus.inc von hup mit einfügen:

#define lcd_port 1
#define lcd_rw 12
#define lcd_rs 13
#define lcd_e 14


// ---- LCD Routinen ---

char lcd_param;
char lcd_buf;


// Kommando oder Zeichen an Display senden
void LCD_Write() {
OutByte(lcd_port,lcd_buf|(lcd_param >> 4)); // Hi-Nibble
Toggle(lcd_e);
Toggle(lcd_e);
OutByte(lcd_port,lcd_buf|(lcd_param & 0x0F)); // Lo-Nibble
Toggle(lcd_e);
Toggle(lcd_e);
}

// LCD-Kommando
void LCD_WriteCMD() {
lcd_buf=0x00;
LCD_Write();
}

// Zeichenausgabe
void LCD_WriteChar() {
lcd_buf=32; //&B00100000
LCD_Write();
}

// Nummernausgabe
void LCD_WriteNum() {
lcd_param+=48;
LCD_WriteChar();
}

// Display loeschen
void LCD_Clear() {
lcd_param=0x02; LCD_WriteCMD();
lcd_param=0x01; LCD_WriteCMD();
}

void LCD_Init() {
// alle ports 0
OutByte(lcd_port,0x00);

// 8-Bit-Modus aktivieren
lcd_param=0x38; LCD_WriteCMD();

// mit 8-Bit-Command in 4-Bit-Modus umschalten
OutByte(lcd_port,2); //&B00000010
Toggle(lcd_e);
Toggle(lcd_e);

// ab jetzt 4-Bit-Modus
lcd_param=0x28; LCD_WriteCMD();
lcd_param=0x0C; LCD_WriteCMD();
LCD_Clear();
}

// Zeilenwechsel
void LCD_GotoLine() {
if (lcd_param==1) lcd_param=0x80;
if (lcd_param==2) lcd_param=0xC0;
LCD_WriteCMD();
}

// Ausgabe: Hallo! Mein Name ist RP5!
// Unbedingt beachten, dass vor dem ersten Gebrauch der LCD Funktionen LCD_Init aufgerufen wird!
void LCD_Demo1() {
LCD_Clear();
lcd_param=1; LCD_GotoLine();
lcd_param='H'; LCD_WriteChar();
lcd_param='a'; LCD_WriteChar();
lcd_param='l'; LCD_WriteChar();
lcd_param='l'; LCD_WriteChar();
lcd_param='o'; LCD_WriteChar();
lcd_param='!'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='M'; LCD_WriteChar();
lcd_param='e'; LCD_WriteChar();
lcd_param='i'; LCD_WriteChar();
lcd_param='n'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param=2; LCD_GotoLine();
lcd_param='N'; LCD_WriteChar();
lcd_param='a'; LCD_WriteChar();
lcd_param='m'; LCD_WriteChar();
lcd_param='e'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='i'; LCD_WriteChar();
lcd_param='s'; LCD_WriteChar();
lcd_param='t'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='R'; LCD_WriteChar();
lcd_param='P'; LCD_WriteChar();
lcd_param='5'; LCD_WriteChar();
lcd_param='!'; LCD_WriteChar();
}


Leider werden dadurch noch weitere, wertvolle Register verbraucht.