Forum: FPGA, VHDL & Co. MICO32 UART will nicht richtig funktionieren


von Roland (Gast)


Lesenswert?

Hallo,

Ich experimentiere gerade mit meiner MICO32 UART herum und hätte das 
ganze gern Interrupt gesteuert.

Die Uart ist folgendermaßen konfiguriert:
Baudrate 115200
Databits 8
Stopbits 1
Tx/Rx FIFO ENABLED
Use Interrupt ENABLED
Rx Buffer Size 2
Tx Buffer Size 2

Die Lage ist folgendermaßen:
- Die ISR wird ordnungsgemäß aufgerufen wenn ich von extern ein Zeichen 
an den MICO32 schicke.
- In der ISR liefert die Empfangsfunktion <MicoUart_getC> aber nie eine 
<0> (erfolgreiche Übernahme des Zeichens aus der UART)
- Die ISR wird nach jedem Verlassen sofort wieder aufgerufen. Der 
Interrupt scheint also nicht gelöscht zu werden.

Frage:
- Hab ich etwas bei der Konfiguration vergessen?
- Wieso werden die einzelnen Zeichen nicht übernommen (ohne Interrupt 
funktionierts)?
- Muss ich den Interrupt per Hand löschen? Wenn ja, wie?

Der Code sieht so aus:
1
MicoUartCtx_t    *UartInterface;
2
3
static void myISR( int intrLevel, void * data )
4
{
5
  MicoUartCtx_t * TempUart   = (MicoUartCtx_t *) data ;
6
  unsigned char ucChar;
7
  
8
  if (MicoUart_getC(TempUart,&ucChar)==0)
9
  {
10
    printf("0x%X\n", ucChar);
11
    TOGGLE_BIT(PortB, LATLED1);
12
  }
13
  TOGGLE_BIT(PortB, LATLED2);
14
    
15
    return;
16
}
17
18
int main (void)
19
{
20
  UartInterface = (MicoUartCtx_t *) MicoGetDevice("UART1");
21
  if (UartInterface == 0)
22
  {
23
    if (DEBUG)
24
      printf("Init Error: UART\n");
25
    return -1;
26
  }
27
28
  //  Init Uart-Instance
29
  MicoUartInit(UartInterface);
30
31
  //  ISR einrichten  
32
  MicoRegisterISR(UartInterface->intrLevel, UartInterface, myISR);
33
  
34
  while(1);
35
  
36
  return 0;
37
}

Vielleicht kennt sich jemand damit aus. Wäre toll.

Gruß
R.

von Uwe Bonnes (Gast)


Lesenswert?

Im Milkymist Projekt wird heftig mit dem Mico32 gearbeitet. Schau doch 
mal nach, ob da was geaendert wurde.

von Duke Scarring (Gast)


Lesenswert?

Wie testest Du Dein System? Auf der Hardware? Im Simulator?
Funktioniet es, wenn Du den FIFO deaktivierst?

Duke

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.