Zynq XADC Processing System

Gast #3787972
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!
#3787993
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
Gast #3788145
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 ;)
Gast #3788189
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!
#3789477
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.