PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 TWI



ex535
12.08.2007, 23:36
Ich will das Programm PR6Base_Move_05.c als Basis ausbauen.
Wie übergibt man die Variable vom RP6 Control M32.
Komme nicht dahinter. Habe bisher nur eingelesen.
RP6I2CmasterTWI.h und RP6I2CslaveTWI.h bilden wohl die Grundlage.

Aufgabe:
Control M32 liest Sharp GP2D12 (gelöst)
Übergabe a RP6 Base. Wie??
Fahrwerk wird entsprechend gesteuert (gelöst Beispiele)

Lese gerade TWI Slave mit avr-gcc RN-Wissen!

Kurt

SlyD
13.08.2007, 14:07
Hallo Kurt,

willst Du das RP6-M32 als Slave oder als Master betreiben?

(--> RP6-M32 als Master heisst: das RP6-M32 steuert den Roboter! Auf der RP6-Base läuft in diesem Fall das RP6Base_I2CSlave Programm.)


Für den Master Modus sind schon einige Beispiele dabei - u.a. wurde genau das Programm RP6Base_Move_05 für das RP6-M32 angepasst!

Das Beispielprogramm RP6Control_10_Move_02 hast Du Dir schon angesehen?

Zusammen mit dem Programm RP6Base_I2CSlave kann man damit den Roboter über das RP6-M32 (fast) so steuern wie man es mit dem Controller auf dem Mainboard tun würde.

Nur hat man auf dem RP6-M32 mehr freie Rechenleistung, Speicher und I/O Ports.
Das Programm RP6Base_I2CSlave kümmert sich komplett um den Antrieb, das ACS etc. pp. und entlastet den Controller von diesen Aufgaben.

Hier wäre es relativ einfach den GP2D12 in das Programm zu integrieren, da man den Wert gar nicht an die RP6-Base weiterleiten müsste...

MfG,
SlyD

ex535
13.08.2007, 22:17
Hallo SlyD.
Danke dir für die Info. Hab schon gesehen. Master kann alles erledigen.
Muss ich noch probieren.
ADC7 liest Info von Sharp.
Ist die Bedingung =< dann fahre zurück.
Gib mir eine kleine Hilfe.
Ich beschäftige mich mit 'C' und 'AVR' noch nicht lange.
Kurt

ex535
14.08.2007, 19:41
Ja, ist doch klar oder so in etwa? Habe ein wenig gebraucht. Man sollte die Programme lesen!

Aenderung in RP6Control_10_Move2.c

int main(void)
{
..................
while(true)
{
task_LCDHeartbeat();
task_checkINT0();
task_I2CTWI();
behaviourController();
uint16_t adc7 = readADC(ADC_7); // Read ADC Channel 7
setCursorPosLCD(1,9);
writeIntegerLCD(adc7, DEC);
if (adc7 > 300)
{
move(60, RIGHT, DIST_MM(100), BLOCKING);
}
}
return 0;
}
Ich werde für links und rechts jeweils den Sharp GP2D120 Sensor einsetzen.

Ein dickes Lob noch an Dominik S. Herwald. Die Programme etc. sind zum Lernen gut gemacht.

Kurt