c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

AW: AW: [ct-bot] Problem mit Pointern

Absender: Carsten Giesen
Datum: So, 02.04.2006 08:43:45


Hallo Torsten,

Durch schreiben auf von
Register 0 (Befehle)
Von 51 Messen in cm
Wird eine Messung gestartet

Durch lesen auf Register 2
Hole ich mir das Highbyte der Messung.

Aber das scheint nicht das Problem zu sein.

Ich habe aus der Zeile
	*rx_ptr = TWDR;
//Save received byte
gemacht
	*rx_ptr = 99;
//Save received byte
Jetzt sollte man davon ausgehen, das die 99 am Ende ankommt.
Tut aber nicht. Ich herhalte eine 8!

Es muss also in der Übergabe von Pointer auf Pointer in uint16 ein Fehler
sein.

Cu

Carsten


-----Ursprüngliche Nachricht-----
Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
[mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx] Im Auftrag von Torsten
Evers
Gesendet: Samstag, 1. April 2006 22:33
An: Entwicklung rund um den c't-bot
Betreff: Re: AW: [ct-bot] Problem mit Pointern

Hallo Carsten,

Am Samstag, 1. April 2006 21:39 schrieb Carsten Giesen:
> Danke erstmal.
keine Ursache...noch habe ich nichts bewirkt ;)

> Ok, ich glaube da habe ich nicht gut genug gefragt.
stimmt :)

> Hier definire ich ein Dataset (so heißt das glaube ich)
> 	char temp0[1];
> 	char temp1;
Soweit ok..also einmal Platz für ein Byte und einmal für zwei.
in temp0 steht wohl die Adresse und temp1 ist für den Inhalt.

> 	tx_frame[0].data_ptr = temp0;
> 	tx_frame[1].data_ptr = &temp1;
der Unterschied ist auch klar aufgrund der Definition von temp0 und temp1

> 	srf10_m = temp1;
auch ok, da nur ein normales char

> 			state = Send_adr(data_pack[i].slave_adr);//Send
> slave address+W/R
>
> 		/*Dependent on the R/W in the slave address it will receive
or
> 		transmitt data.*/
hmm...der Kommentar macht mich stutzig, insbesondere, da ich im Code selbst
keinen Fehler sehe. Bist du Sicher, dass das Dataset nicht vielleicht
zufällig ein write-Kommando enthält und Du daher keine Daten kriegst?


> 				state = Get_byte(data_pack[i].data_ptr++,j);

> 	*rx_ptr = TWDR;
Denn diese beiden passen auch zusammen...ich sehe da keinen Fehler.

> Jetzt ist die ganze Kette zusammen
Nu war auch klar, wo Dein Problem lag :)


> Zu Schull sollte in der Var "srf10_m" mein gemessener Wert stehen.
> Tut es aber nicht.
Ist natürlich ohne Kenntnis des Sensors und seiner Ansteuerung etwas schwer
zu sagen aber ich vermute, Du teilst ihm mit, dass Du Daten senden willst
(ich nehme mal an, Kommandos für Messstart und -stop o.ä.) und kriegst daher
keine Daten zurück.

Viele Grüße,

Torsten

_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler