Programm läuft nicht ohne debug_printf??

OP #1614468
Tag auch, vor kurzem hatte ich mich mal wegen einem IR Sensor hier 
gemeldet, das hat sich mittleriwele erledigt wir haben den Fehler 
gefunden: wir hatten Masse nicht angesteckt ;)

naja auf jedenfall neuer fehler:

Unser Programm ist lauffähig, macht das was es soll und funktioniert 
formidabel. Das Problem ist jedoch das am Anfang der whileschleife die 
durchgehend unsere sensoren abfragt ein "debug_printf" steht und ohne 
dieses funktioniert das programm nicht. wir können auch nichts drucken 
lassen, dann funktioniert es trotzdem aber leider nur im debug modus. 
beim normalen laufenlasen funktioniert es nicht mehr. auskommentieren 
der zeile führt zu gar keiner reaktion des programms.

hier der code in frage:
1
while(1){
2
//  debug_printf("Ultra - Licht 1 - Licht 2\n");
3

4
  for(i=0;i<10;i++){
5
  if(AD0DR1&(1<<31)){
6
    b=((short)(AD0DR1>>6))/10;
7
    c=(1000-((short)(AD0DR2>>6)))/10;
8
    d=(1000-((short)(AD0DR4>>6)))/10;
9
    debug_printf("%i   ",b);
10
    debug_printf("     %i     ",c);
11
    debug_printf("   %i\n",d);
12
    if(b>15){
13
      IO1SET|=(1<<17); // P1.17 (Gelb) an!   
14
      }
15
    else{
16
      IO1CLR|=(1<<17); // P1.17 (Gelb) aus!
17
      }
18
    if(d<30){
19
      IO1SET|=(1<<18); // P1.18 (Grün) an!
20
      }
21
    else{
22
      IO1CLR|=(1<<18); // P1.18 (Grün) aus!
23
      }
24
    if(c<30){
25
      IO1SET|=(1<<16); // P1.16 (Rot) an!
26
      }
27
    else{
28
      IO1CLR|=(1<<16); // P1.16 (Rot) aus!
29
      }
30
  }
31
  wait(50);
32
}
33
}

wir sind kurz vorm verzweifeln weil das ganze bald abgenommen wird und 
es schade wäre wenn wir nur über debug starten können.

vielen dank für eine schnelle antwort
Moderator (Firma: Titel) Persönliche Seite
Woher soll denn hier wer wissen was geht, und was nicht geht...
Was ist das für ein Controller, was für ein Compiler, was für ein 
Sensor...?

Du kommst ja auch nicht in die Werkstatt und sagst: wenn ich die 
Schraube hier rausmache geht mein Auto nicht mehr. Sondern du sagst, 
was an deiner Karre nicht mehr geht.
OP
oh sorry, in der hast ganz vergessen

es handelt sich um ein lpc2148p board also der olimex arm7 prototyp.
daran haben wir 2 sharp IR sensoren geklemmt und einen 
ultraschallsensor.
wir programmieren in c, mit rowley crossworks.

problem ist wie gesagt:

debug_printf ist drin:
debug modus läuft perfekt
normaler run modus läuft nicht

debug_printf ist nicht drin:
nichts läuft mehr
Gast
cool, muss was zeitliches sein. Aber wie started ihr eure Wandlung?

Alles etwas unsauber, wenn der Wandler mit channel 1 fertig ist lest ihr 
die Ergebnisse für 1,2 und 4 aus. Ob die anderen beiden fertig sind 
scheint egal zu sein.
OP
Peter Diener schrieb:
> Ich habe den Verdacht, dass das etwas damit zu tun haben könnte, dass
> debug_printf recht lange dauert und diese Verzögerung für was auch immer
> benötigt wird.
> Ich würde testweise dort Wartezeiten einbauen.
>
> Grüße,
>
> Peter

jl schrieb:
> cool, muss was zeitliches sein. Aber wie started ihr eure Wandlung?
>
>
>
> Alles etwas unsauber, wenn der Wandler mit channel 1 fertig ist lest ihr
>
> die Ergebnisse für 1,2 und 4 aus. Ob die anderen beiden fertig sind
>
> scheint egal zu sein.


Also erstens hab ich davor mal unsere wait funktion mit verschiedenen 
werten gesetzt so 25, 50 100 millisekunden, hat aber nichts geändert.

unsere AD-Wandler konfiguration ist diese:
1
AD0CR|=(1<<1); //KANAL 1
2
AD0CR|=(1<<2); //KANAL 2
3
AD0CR|=(1<<4); //KANAL 3
4

5
AD0CR|=(1<<9); // 110 an Bit 8-15 schreiben
6
AD0CR|=(1<<10); // 110 an Bit 8-15 schreiben
7

8
AD0CR|=(1<<16); // INSTANT START
9
AD0CR|=(1<<21); // AN!
10

11
AD0CR&=~(1<<17);
12
AD0CR&=~(1<<18); // Auflösung auf 10 bits
13
AD0CR&=~(1<<19);
14

15
// Ultraschall an AD0.1
16
// Licht 1 an AD0.2 
17
// Licht 2 an AD0.3

und das mit dem auslesen wenn channel 1 fertig ist schon in ordnung so 
;)
es funktioniert ja :) aber danke für den hinweis

hat noch jemand ideen warum uns das debug dazwischen funken könnte?
OP
Peter Dannegger schrieb:
> Wenn die AD0DR_x nicht volatile sind, liest er sie nur einmal ein.
>
>
> Peter

Sorry verstehe ich nicht.
Auf welche frage war das jetzt eine antwort und wie behebe ich das 
angesprochene problem konkret?
OP
Hat sich erledigt Leute: Eigene Dummheit wie es immer so ist ;)

in meiner wait funktion hatte ich ein y verwendet das vorher nicht 
initialisiert wurde, und irgendwie scheint mein compiler nicht über 
debug befehle im normalen run modus hinweg zu kommen.

Auf jedenfall funktioniert es jetzt. Vielen dank für die Bemühungen :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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]
  • [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.