logo
Welcome, Guest. Please Login or Register.
27. April 2024, 16:49:38


Home Help Search Login RegisterWIKIUHSDR Download

Amateurfunk Sulingen
Diskussions- und Newsboard des DARC-Ortsverbandes I40  |  allgemeine Kategorie  |  mcHF Projekt Deutsch / English (here you can discuss everything related to mcHF) (Moderators: DF8OE, DL1PQ)  |  Topic: triviale C-Frage <- zurück vorwärts ->
Pages: [1] Go Down Print
   Author  Topic: triviale C-Frage  (Read 1858 times)
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
triviale C-Frage
« on: 21. November 2015, 13:38:55 »

Ich seh den Wald vor lauter Bäumen nicht...

Ich bin in der Firmware am rumbasteln. Dazu muss ich eine Funktion erstellen, die einen Zeiger auf eine Variable zurückliefert. Aus Kompatibilitätsgründen mit anderen Dingen MUSS meine Funktion folgenderweise arbeiten:

Die Funktion (hier liegt was bei im Argen):

myfunction(uint16_t *value)
{
uint16_t test = 0x2345;
value = &test;                        ??
}



Der Aufruf:

uint16_t data;
myfunction(&data);

****hier soll in data einfach 0x2345 stehen****

...und das tut es nicht. Die Zeile mit den Fragezeichen - da habe ich mich wohl verrannt. Und ich brauche auch exakt das, was da stehen muss, damit es so funktioniert wie beschrieben. Die anderen Zeilen dürfen NICHT verändert werden.

Natürlich ist der Aufruf der Funktion komplizierter als hier dargestellt, natürlich ist der Wert von "test" nicht konstant - es geht mir nur um die Frage, wie ich die Zeile mit den Fragezeichen so ändere, dass in der Variablen data hinterher der Wert der Variablen test steht. Die Deklaration der Funktion ist nicht veränderbar (Kompatibilitätsgründe). Und die Funktion wird auch so aufgerufen, wie hier beschrieben. Mit der Übergabe von &data soll die Variable data mit dem Wert (und nicht mit der Adresse) gefüllt sein.

Wer winkt mit dem Zaun 

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:triviale C-Frage
« Reply #1 on: 21. November 2015, 13:49:00 »

grummelgrummel...

Ich liebe es, Fragen aufzuschreiben. Erfahrungsgemäß lese ich mir meine Frage danach durch, ticke mich an die Stirn und frage mich, warum ich gefragt habe. Vorher habe ich aber gefühlte Stunden im Kreis rotiert...

Die Antwort lautet:

*value = test;

Danke für eure Aufmerksamkeit 

vy 73
Andreas
« Last Edit: 21. November 2015, 13:49:41 by DF8OE » Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
HB9FZG
Neuling
*

Offline

Posts: 50





View Profile
Re:triviale C-Frage
« Reply #2 on: 21. November 2015, 20:31:06 »

Hallo Andreas

Kenne ich auch. Mir fällt die Lösung dann jeweils nach 10 Minuten im Auto oder nach dem zu Bett gehen ein. Dann heisst es wieder warten auf die nächste Gelegenheit. 
Logged
DL1KMW-Martin
Neuling
*

Offline

Posts: 20



Ich liebe dieses Forum!

View Profile
Re:triviale C-Frage
« Reply #3 on: 22. November 2015, 09:59:12 »

Klarer Fall:
...hier ist einem der Rohstoff der Software ausgegangen!
Man merke: Software wird ausschließlich aus Kaffee gemacht!
Also:
Nachfüllen!
Hierzu dirngend eine Pause machen, damit der Rohstoff auch dahin kommen kann, wo er gebraucht wird...
dann klappt es auch wieder mit dem Pointer auf Pointer auf Pointer auf...

73 de Martin
Logged
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:triviale C-Frage
« Reply #4 on: 22. November 2015, 14:10:44 »

Bin schon am nächsten Pointer-Problem mit dem sequentiellen Schreiben in den seriellen EEPROM. Der virtuelle hat eine Breite von 16 Bit, der srielle eine von 8 Bit. Also muß ih zum Umkopieren erstmal den Inhalt des virtuellen in word-Abständen in den RAM kopieren, um ihn dann von dort aus in byte-Abständen in den seriellen EEPROM zu bekommen. Makabrerweise hat der serielle EEPROM einen kleineren Zwischenspeicher (128 Bytes) als die zu schreiende Datenmenge (786 Bytes), wo wir dann wieder bei diesem Zeiger-Gesumse sind. Wenn man da nicht höllisch aufpasst, ob der nun in diesem Fall um 2 oder um eins erhöht werden muss, dann geht *nix* mehr 

Aber bislang ist noch genug "Rohstoff" da...

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:triviale C-Frage
« Reply #5 on: 22. November 2015, 17:58:28 »

Der Kaffee ist alle, die Aufgabe (leider) nur teilweise gelöst.

Der Transfer der virtuellen EEPROM-Daten in einen per malloc alloziierten Speicherbereich funktioniert.
Das sequentielle Schreiben in den seriellen EEPROM funktioniert noch nicht so, wie es soll. Die ersten 128 Bytes werden fehlerfrei geschrieben, bei den nächsten 128 Bytes (und jedem weiteren Block) ist jeweils das erste Byte (und nur das!!) falsch. Nach Betrachtung des Codes würde ich sagen "unmöglich" - aber das Problem dürfte (wie so oft) zwischen Rückenlehne Stuhl und Tastatur liegen 

Mal eine N8 drüber schlafen - dann bin ich bestimmt schlauer.

Das ist schon ein echt schlanker Fuß:
Ein Byte in den seriellen EEPROM zu schreiben dauert ca 5ms.
128 Bytes "in einem Rutsch" zu schreiben dauert auch 5ms 
Wäre doch blöde, wen wir das nicht ausnutzen würden...

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
DL1KMW-Martin
Neuling
*

Offline

Posts: 20



Ich liebe dieses Forum!

View Profile
Re:triviale C-Frage
« Reply #6 on: 22. November 2015, 20:04:38 »

Hallo Andreas,

...das hört sich verdächtig nach Problemen von Indizes und Array-Start (bei 0 oder bei 1) an...
Ja so ist das mit dem Zählen in "C"...
Aber ich denke, mit neuem Rohstoff geht's dann Morgen wie von selbst...
Muss selbst auch erst wieder auftanken, bevor die neue Woche starten kann ;-)

vy 73 de Martin
Logged
DL4PD
Neuling
*

Offline

Posts: 1



DARC OV G56

View Profile
Re:triviale C-Frage
« Reply #7 on: 23. November 2015, 17:44:27 »

Andreas:

Kannst Du bitte den aktuellen Code dazu zeigen, falls das Problem noch existiert?
Logged
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:triviale C-Frage
« Reply #8 on: 23. November 2015, 18:57:32 »

Problem gelöst. Es war ein "Hardwareproblem". Ich habe übersehen, dass ich über eine page drüber hinausgeschrieben habe - das geht bei den seriellen EEPOMs nicht...

Bin schon gut weiter - jetzt kommt der "Endspurt" dazu. Die größte Arbeit macht, dass es kompatibel zum virtuellen EEPROM sein muss.

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
DC3AX
Interessent
noch länger dabei
***

Offline

Posts: 186



Ich liebe dieses Forum!

View Profile
Re:triviale C-Frage
« Reply #9 on: 24. November 2015, 08:25:51 »

Hallo Andreas,

leider haben mich meine privaten und beruflichen Sachen sehr in Anspruch genommen, vor allem die privaten. Aber nun ist es wohl endlich wieder ruhig und ich kann Dich voll und ganz unterstützen. Schreib mir mal, wo Du gerade steckst und nimm ggf. einfach meinen EEPROM Treiber aus dem NutO/S, der ist fertig, konfigurierbar und berücksichtigt die Pages

73
Ulrich
Logged

Es gibt drei binäre Zustände: Ein, Aus und Vielleicht. Je höher die Frequenz, desto Vielleicht...
DF8OE
Administrator
*****

Offline

Posts: 6268



Stellvertr. OVV I40, Jugend / Nachwuchsreferent

View Profile WWW
Re:triviale C-Frage
« Reply #10 on: 24. November 2015, 12:46:33 »

Der EEPROM-Treiber ist auch nicht selbst geschrieben - ich bin gerade dabei, die Routinen von Clint für das Speichern beim Abschalten umzuschreiben. Ist fast fertig

vy 73
Andreas
Logged

Wenn der Wind des Wandels weht, nageln die einen Fenster und Türen zu und verbarrikadieren sich. Die anderen gehen nach draußen und bauen Windmühlen...
qrz.com-Seite von DF8OE
-----------------------------------------------------
>>>> Die Inhalte meiner Beiträge dürfen ohne meine explizite Erlaubnis in jedwedem Medium weiterverbreitet werden! <<<<
Pages: [1] Go Up Print 
Diskussions- und Newsboard des DARC-Ortsverbandes I40  |  allgemeine Kategorie  |  mcHF Projekt Deutsch / English (here you can discuss everything related to mcHF) (Moderators: DF8OE, DL1PQ)  |  Topic: triviale C-Frage <- zurück vorwärts ->
Jump to: 


Login with username, password and session length

 Es wird die Verwendung von Browsern die auf der "Blink"-Engine basieren und mindestens
1024x768 Pixel Bildschirmauflösung für die beste Darstellung empfohlen
 
Amateurfunk Die Beiträge sind, sofern nicht anders vermerkt, unter der folgenden Lizenz veröffentlicht:
GNU Free Documentation License 1.3 GNU Free Documentation License 1.3
verbindet!
Powered by MySQL Powered by PHP Diskussions- und Newsboard des DARC-Ortsverbandes I40 | Powered by YaBB SE
© 2001-2004, YaBB SE Dev Team. All Rights Reserved.
- modified by Andreas Richter (DF8OE)
Impressum & Disclaimer
Valid XHTML 1.0! Valid CSS!