mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm läuft nicht ohne debug_printf??


Autor: David Scheele (der_dave)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
while(1){
//  debug_printf("Ultra - Licht 1 - Licht 2\n");

  for(i=0;i<10;i++){
  if(AD0DR1&(1<<31)){
    b=((short)(AD0DR1>>6))/10;
    c=(1000-((short)(AD0DR2>>6)))/10;
    d=(1000-((short)(AD0DR4>>6)))/10;
    debug_printf("%i   ",b);
    debug_printf("     %i     ",c);
    debug_printf("   %i\n",d);
    if(b>15){
      IO1SET|=(1<<17); // P1.17 (Gelb) an!   
      }
    else{
      IO1CLR|=(1<<17); // P1.17 (Gelb) aus!
      }
    if(d<30){
      IO1SET|=(1<<18); // P1.18 (Grün) an!
      }
    else{
      IO1CLR|=(1<<18); // P1.18 (Grün) aus!
      }
    if(c<30){
      IO1SET|=(1<<16); // P1.16 (Rot) an!
      }
    else{
      IO1CLR|=(1<<16); // P1.16 (Rot) aus!
      }
  }
  wait(50);
}
}

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch schlimmer:
Ich gebe im Normalfall das ganze Auto in die Werkstatt und nicht nur den 
Motor. Wenn er nicht mehr startet, könnte es auch an einem leeren Tank 
oder einer defekten Treibstoffleitung liegen.

Autor: David Scheele (der_dave)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: jl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: David Scheele (der_dave)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
AD0CR|=(1<<1); //KANAL 1
AD0CR|=(1<<2); //KANAL 2
AD0CR|=(1<<4); //KANAL 3

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

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

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

// Ultraschall an AD0.1
// Licht 1 an AD0.2 
// 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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die AD0DR_x nicht volatile sind, liest er sie nur einmal ein.


Peter

Autor: David Scheele (der_dave)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: David Scheele (der_dave)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.