Forum: FPGA, VHDL & Co. Probleme mit Microblaze und variablen Ausgabe


von Herr der Augenringe (momentan) (Gast)


Lesenswert?

Hi

ich hab nen Microblaze in einem Spartan 3 XC3S200 laufen.
Jetzt will ich scannen ob an einem der inputs eine 1 anliegt bzw an 
mehreren.
Dazu scanne ich den input 10000 mal und verknuepfe das mit einem oder in 
eine andere variable so das sich das ding quasi "merkt" welcher pin high 
war (auch wenns schon wieder weg ist) danach will ich die 8 bit von 
occurred (unsigned char) ueber den UART ausspucken aber irgendwo kracht 
es

Der Code
1
for (i=0; i<=10000; i++)
2
  {
3
  data=XGpio_DiscreteRead(&gpPB, 1);  // daten lesen
4
  if (data != 0)  // wenn ein pin gerade high ist dann
5
    {
6
    occurred = (occurred | data);  // in occurred "einodern" 
7
    }
8
  }
9
if (occurred != 0)
10
  {
11
  xil_printf(occurred);  // den hexwert an den uart ausgeben
12
  }
13
else
14
  {
15
  xil_printf("0");  // an sonsten null ausgeben (ich weiss das kann
16
  }                 // ich mir eigentlich sparen
17
}
wenn ich das so mache bekomme ich nur sondermuell wenn die daten mal 1 
waren.

Wenn ich ein das xil_printf ein &occurred schreibe bekomme ich 16 bit 
von denen das este byte korrekt aussieht das 2 aber voelliger muell ist.

occurred und daten sind beide unsigend char.

 Danke fuer die Hilfe

  Tobi

von Herr der Augenringe (momentan) (Gast)


Lesenswert?

Nachtrag

ich VERMUTE das er mir wenn ich xil_printf(&occurred) mache der 
komplette inhlt der speicherzelle von mit der addresse occurred 
ausgegeben wird und das die anderen 8 bit quasi "random" sind.

Weiss irgendwie wie das ist und ob es fuer das xil_printf ne doku gibt 
in der so was steht? Habs in der API nicht gefunden.

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.