Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Verschiedene seltsame Probleme Kategorie: CC2-Unit & Appl.Board / CC2-Station (von André H. - 27.04.2004 19:34)
Als Antwort auf Re: Verschiedene seltsame Probleme von Compy - 22.04.2004 20:33
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
Hallo Compy,
 
> Hab ich, nur funktioniert dann garnichts mehr...
>  -> Wie frage ich den doofen ADC ab? (mit dem neuen Modul)

Beachte, da� einige HEX-Dateien geladen werden müssen, wenn Du nicht OSOPT V3.0
benutzt. Auch müssen die Einsprungadressen der Module lcdext.c2, i2c.c2 etc. für
für die entsprechenden HEX-Treiber ausgewählt sein. (Entweder für OSOPT V3.0 oder
für sys0001.hex/capture.hex)

 
> > Jedoch liegt das ursprüngliche Problem woanders.
> > Der Compiler kann mit unnützen Ausdrücken, wie 1==-1 oder while 1{}
> > nichts anfangen. Gut, das ist ein Fehler, aber wer schreibt schon
> > soetwas. :-)
>
> Has ja recht...aber das kann ja mal vorkommen... (adc-Abfrage + Vergleich.. o.ä.)

Nein. Das kann normal nie vorkommen.
Das Problem liegt darin, daÃ? Du zwei Konstanten in den Vergleich gesetzt hast.
Wenn sich in einem Vergleich mindestens eine Variable befindet, funktioniert alles, wie es soll.
Der Compiler versucht beim Kompilieren Konstante Ausdrücke/Berechnungen
zusammenzufassen.
Wenn Du nun if 1==-1 schreibst, versucht der Compiler 1==-1 zu berechnen.
Und hier geht etwas schief.
Sobald Du if a==-1 schreibst, wobei a eine Variable ist, geht es, wie gesagt, ohne Probleme.
 
> > zu 2.) von Deinem Prorblem gibt es sicher eine einfache Erklärung.
> > Aber ohne Quellcodeauschnitt kann man hier nicht helfen.
> > Es ist wahrscheinlich nur ein Programmierfehler.
>
> *ich mache keine Fehler* - nein - das wirds wohl sein...
> vermutlich hab ich was mit den Threads durcheinandergeschmissen...
> Hab eben "reset" entdeckt, und damit funzt es dann vielleicht...
>
>   -> Quelltext: wo soll ich den denn hintuen? Der is lang...

Es sollte nur der betroffene Abschnitt gepostet werden, wenn das Programm länger ist,
nicht das ganze Programm.
Quellcode setzt Du einfach zwischen den code-Tags. Also so:
<code>
Quellcode ...
</code>
hier entsteht dann

Quellcode ...

wobei C2-Schlüsselworte und Kommentare entsprechend formatiert werden.

> > zu 3.)
> > Hier muÃ?t Du beachten, daÃ? das Senden von Zeichenketten und Bytepuffern
> > an das interne LCD im Hintergrund geschieht und noch nicht beendet ist,
> > wenn die Funktion zurückkommt.
> > Daher muÃ?t Du ggf. ein wait lcd.ready(); oder ein kleines sleep einbauen,
> > wenn Du Lokale Variabeln ausgeben, oder die auszugebende Variabel
> > nach dem Aufrufen der Funktion neue Daten zuweist.
>
> Aber auch mit
>
>   wait lcd.ready();
>   lcd.print(s, str.length(s)); // Altes modul
>   // bzw.
>   lcd.print(s); // Neues Modul

Hier hast Du Die Funktion von der ready()-Abfrage falsch verstanden.
Du mu� nach dem Aufruf von lcd.print() auf ready() prüfen.
Also:

 lcd.print(s);
 wait lcd.ready();
 //Alternativ:
 // sleep 100; // 100ms sollten für die Ausgabe reichen.


Allerdings bringt die Ausgabe auf das Mini-LCD nicht viel, da es
1. wirklich nur für Debugging-Infos taugt
2. die Unit nurnoch ohne Mini-LCD/Gehäuse produziert wird. :-)


MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: