www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Adresse eines pointers kontrollieren


Autor: S. F. (deffman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich bin gerade dabei mich bei beinem EVK1100 board von atmel mit AVR32 
Studio einzuarbeiten. Da habe ich einen Beispielcode bei dem ich etwas 
kontrollieren möchte! Und zwar gibt es diese Methode:

int spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t 
*options)
{
  .....
}

Der Pointer *spi müsste meiner Ansicht nach die Startaddresse des SPI 
bereichs sein, also laut Datenblatt 0xFFE00400. Wie kann ich das jetzt 
kontrollieren?
Ich habe es so probiert:

int spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t 
*options)
{
  int test;
  printf(test,"%p",(void *)spi);
}

Da motzt er zum einen rum:'sprintf' makes pointer from integer without a 
cast und zum anderen kommt ein total unsinniger Wert = 4 raus, was nicht 
sein kann.

Weiß jemand wie ich das richtig machen kann?

Gruß und Danke
Stefan

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sprintf produziert einen string, den du weiß Gott wo in den Speicher 
schreibst.
> sprintf(test,"%p",(void *)spi);
test muss hier ein char* sein.

Autor: Wolfgang Mües (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte der erste Parameter von sprintf nicht ein Zeiger auf einen 
Speicherbereich sein, in dem der String landet?

Autor: S. F. (deffman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm hat leider auch nicht funktioniert, aber ich habs jetzt anders 
rausbekommen. Ich kann mit dem Mauscursor drüberfahren, dann zeigt er 
mir die Adresse an. Und meine Vermutung war richtig!

Aber würde mich trotzdem noch interessieren wie das geht. Also er hat 
immer noch den gleichen Fehler gebracht mit dem *char pointer.

PS: hatte mich oben verschrieben! In meinem Code ist es printf.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber würde mich trotzdem noch interessieren wie das geht. Also er hat
> immer noch den gleichen Fehler gebracht mit dem *char pointer.
>
> PS: hatte mich oben verschrieben! In meinem Code ist es printf.

Wer weiß, welchen Code du nun tatsächlich ausprobiert hast.

Mit sprintf so:
char buf[20];
sprintf(buf,"%p",spi);
und mit printf so:
printf("%p",spi);

Autor: S. F. (deffman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay vielen Dank!!! Hat funktioniert!

Schönen Abend noch!

Gruß Stefan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.