Forum: FPGA, VHDL & Co. Zynq XADC Processing System


von Kampi (Gast)


Lesenswert?

Hallo,

ich möchte den XADC in meinem Zynq benutzen und habe dafür diesen Code 
geschrieben:
1
#include "xparameters.h"
2
#include "xil_testmem.h"
3
#include "xadcps.h"
4
5
6
//====================================================
7
8
int main (void)
9
{
10
  int Status;
11
  u32 Temperatur;
12
13
    XAdcPs *XADC;
14
    XAdcPs_Config *Config;
15
16
    xil_printf("-- Start of the Program --\r\n");
17
18
    // Konfiguration laden
19
    Config = XAdcPs_LookupConfig(XPAR_XADCPS_0_DEVICE_ID);
20
21
    // XADC initialisieren
22
    XAdcPs_CfgInitialize(XADC, Config, Config->BaseAddress);
23
24
    // Selbsttest durchführen
25
    Status = XAdcPs_SelfTest(XADC);
26
27
    // Temperatur auslesen
28
    Temperatur = XAdcPs_GetAdcData(XADC, XADCPS_CH_TEMP);
29
    printf("Temperatur: %ul", Temperatur);
30
31
    while(1)
32
    {
33
34
    }
35
}

Allerdings bekomme ich keine Temperatur angezeigt. Ein Beispielprogramm 
von Xilinx funktioniert, aber ich finde nicht den Fehler bei meinem 
Code.
Kann mir jemand eben helfen?

Danke vielmals!

von Jost .. (jojocp)


Lesenswert?

Hallo,

was wird denn genau über den Seriellen Port ausgegeben?
Wird anstatt der richtigen Temperatur gar kein Wert angezeigt, oder 
steht stattdessen eine "0" dort?

Außerdem:
Funktioniert die Ausgabe des "Start of the Program" ?
Funktioniert die Ausgabe von dem "Temperatur" bevor der eigentliche Wert 
ausgegeben wird?

Du nutzt zwei verschiedene Funktionen zur Ausgabe - printf() und 
xil_printf(). Worin unterscheiden sie sich und mit welchem 
Hintergedanken werden zwei Funktionen benutzt? (Ich nehme jetzt einfach 
mal an, dass beide für die serielle Ausgabe sind?)

Grüße, Jost

von Patrick (Gast)


Lesenswert?

Das xil_printf nutzt man für Ausgaben über den Debugger (im Xilinx SDK).
Das erscheint dann in so einer Konsole am unterem Rand in dem SDK.


Was das printf selbst macht weiß ich nicht. Das kenne ich nur vom PC C++ 
und da schreibt es Text in die (DOS)Konsole ;)

von Kampi (Gast)


Lesenswert?

Hallo,

es wird nur die erste Zeile "-- Start of the Program --" ausgegeben.
Die Ausgabe lasse ich mir direkt im TeraTerm ausgeben (muss nicht 
zwangsweise das SDK sein).
"Temperatur" wird leider auch nicht ausgegeben, der Grund warum da noch 
ein xilprintf() drin steht ist der, weil das Programm vorher ein 
Programm aus dem Tutorial war....die Zeile habe ich nur drin stehen 
lassen um zu sehen ob das Programm startet.
Aber ich kann heute Abend das printf() mal gegen xilprintf() 
tauschen....habe ich bisher nicht realisiert, dass ich da zwei 
verschiedene Funktionen habe....vielleicht ist das schon des Rätsels 
Lösung...war wohl gestern die Müdigkeit :)

Danke schon mal! Ich melde mich heute Abend noch mal!

von Kampi (Gast)


Lesenswert?

Hey,

nachdem ich printf() durch xil_printf() ausgetauscht habe wird zumindest 
"Temperatur" ausgegeben, allerdings kein Wert :(

von Jost .. (jojocp)


Lesenswert?

Hallo,

super, ein Problem gelöst.
Ich vermute mal, dass in der Variablen "Temperatur" ein integer Wert 
steht, richtig?
Diesen musst du zuerst in einen String konvertieren, damit er per 
printf() ausgegeben werden kann.

Grüße, Jost

von Kampi (Gast)


Lesenswert?

Hey,

ne das Problem war viel simpler :)
Ich habe im XADC Wizzard den Temperatursensor nicht aktiviert gehabt ;)

Jetzt gehts.

Danke für die Hilfe!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.