STM32F4: Debugmode: Unterschiede Stepbystep und Run

OP Persönliche Seite #4774685
Lesenswert?

Guten Abend liebes Forum,

Keil verhält sich im Debugmodus unterschiedlich. Führe ich mein Programm 
Step by Step aus, funktioniert es wie es soll, lass ich es normal 
laufen, passiert gar nichts.

Das Programm liest über SPI den optischen Sensor ADNS3090 das Register 
0x00 (ADNS_3090_PRODUCT_ID) aus. Wenn die SPI-Schnittstelle richtig 
arbeitet (was sie tut) bekomme ich den Wert 0x07 zurück. Dieses frage 
ich nun über eine if-Anweisung ab:

adns3090.c:
1
void adns3090_STATUS (void)
2
{
3
 ADNS3090_NPD_ON;  /*Schalte Control_LED an*/
4
 ADNS3090_NSS_LOW; /*Chip-Select auf LOW*/
5
  status_result = adns3090_Read(SPI2, ADNS3090_PRODUCT_ID); 
6
 ADNS3090_NSS_HIGH; /*Chip-Select auf HIGH*/
7
  
8
  if (status_result == 0x07)
9
  {
10
    DEBUG_LED_ON;
11
  }
12
delay_ns(500); 
13
}

main.c
1
int main (void)
2
{
3
  startUp(); /*Alles was der uC braucht*/     
4
  adns3090_STARTUP(); /*GPIO, RCC, SPI für den Betrieb des ADNS3090*/
5
  adns3090_STATUS();  /*Prüfe den Status*/
6

7
  while(1)
8
    {
9
       /*hier kommt die FIFO für die Bilddaten hin*/      
10
    }
11
}

Wenn ich dieses Programm Step-by-Step durchlaufe funktioniert alles 
wunderbar, in der Variable status_result steht 0x07 und die Debug-LED 
geht an. Dies trifft ebenfalls auch zu, wenn ich diese Funktion in die 
while-Schleife stecke.

Lass ich es so laufen (mit F5) steht in der Variable 0x00 und die LED 
geht nicht an.

Wie kann das sein?

Vielen Dank im voraus und Gruß
Daniel
OP Persönliche Seite #4774695
Lesenswert?

g457 schrieb:
> Timing.

d.h.?

Hatte auch mal bis zu 5 Sekunden gewartet, also 5000 ms:
1
void adns3090_STATUS (void)
2
{
3
 ADNS3090_NPD_ON;  /*Schalte Control_LED an*/
4
 ADNS3090_NSS_LOW; /*Chip-Select auf LOW*/
5
  status_result = adns3090_Read(SPI2, ADNS3090_PRODUCT_ID); 
6
 ADNS3090_NSS_HIGH; /*Chip-Select auf HIGH*/
7
  delay_nms(5000); /*Warte 5s*/
8

9
  if (status_result == 0x07)
10
  {
11
    DEBUG_LED_ON;
12
  }
13

14
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren