PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro soll die Werte von Variab über Hyper terminal ausgeben



Problem
22.11.2010, 17:57
Frage

Es ist ja möglich den aktuellen Wert der Liniensensoren über Hyper Terminal auszugeben


ist es auch möglich den aktuellen Wert von LANG auszugeben

Hier ein Programm





#include <asuro.h>
int main(void)
{
Init();

int LANG = 0,x = 0;

while( 1 )
{
x=x+1;

if (x > 1000)
LANG=LANG+1;
if (x > 1000)
x=0;


//Hier steht dann das Programm

if ( LANG > 200)
LANG=0;
}


return 0;
}



Was ich möchte, ist das ich wärend das Programm abläuft über Hyper T nachsehen kann welchen Wert LANG gerade besitzt
müsste eigentlich gehen oder

the.speciali
22.11.2010, 18:43
Wie schon im anderen Thread gesagt. SerWrite benötigt einen String bzw Char. Denn muss man erst mit dem "itoa" Befehl umwandeln :)

beste Grüße
the.speciali

Problem
22.11.2010, 19:57
ok danke dann versuch ich mal den code umzuschreiben


mfg

Problem
22.11.2010, 20:29
#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int LANG[1];
char LANG[4];
int t,LANG,x;


Init();
StatusLED (GREEN);
FrontLED (ON);


while (1)
{


itoa (LANG, 4);


SerWrite (LANG, 4);
SerWrite (" LANG\n\r", 7);



for (t=0; t< 100; t++)
{
Sleep (72);
}

x=x+1;

if (x > 1000)
LANG=LANG+1;
if (x > 1000)
x=0;




if ( LANG > 200)
LANG=0;

}
}

So ungefähr oder?

Ich habe mal statt data 1/2 LANG genommen eber es kommen fehlermeldungen error........ .

mfg

the.speciali
22.11.2010, 21:13
Die Referenz von C sei dir nahe gelegt: klick hier (http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/). Sollte alles drin stehen.

Und eine bitte: Schreibe das nächste mal den Quellcode in [ c o d e ] [ / c o d e ] Tags (ohne leerzeichen), der Thread bleibt dann um einiges übersichtlicher.

beste Grüße
the.speciali

Problem
23.11.2010, 12:43
Ok mach ich


mfg

Problem
30.11.2010, 15:42
#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int data[2];
char data0[5], data1[5];
int t,LANG,x;


Init();


while (1)
{
x++;
if (x > 1000)
LANG=LANG+1;

itoa (LANG, LANG, 5);
//itoa (data[1], data1, 5);

SerWrite (LANG, 4);
SerWrite (" links\n\r", 8);

//SerWrite (data1, 4);
//SerWrite (" rechts\n\r", 9);

for (t=0; t< 100; t++)
{
Sleep (72);
}


if(LANG > 500)
LANG=0;
}
}


Die Fehlermeldungen habe ich jetzt weg aber er sendet immer nur links links...........

Kannst mirs bitte sagen ich habs nicht so mit englisch

Valen
30.11.2010, 19:51
Den daten führ Links werden nicht gesendet weil dieze zeilen 'ausgeschaltet' sind. Den "//" Zeichen sagen den Kompiler das was dannach kommt auf die selbe Zeile ignorriert werden soll. Data1 wird nicht umgewandelt zu char oder Zeichenketten, und diese deshalb auch nicht gesendet.

Problem
30.11.2010, 21:01
Ja weiß ich ein Komeentar
Ich hatte zuvor ein Programm das die Werte von den Liniensensoren überträgt aufs Hyper T

Ich habe das was ich nicht brauche in // getan damit ich sehe wie es zuvor ausgesehen hat

Aber jetzt möchte ich das der wert der Variable LANG übertragen wird weil wenn ein Programm nicht funkt weiß ich wo es stehen bleibt

mein Problem ist das immer

LANG
LANG
LANG
LANG
LANG
LANG

übertragen wird ich möchte aber das der Wert auch dabei steht

Ich habe es jetzt so

#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int data[2];
char data0[5], data1[5];
int t,LANG,x;


Init();


while (1)
{
x++;
if (x > 1000)
LANG=LANG+1;

itoa (LANG, LANG, 5);
//itoa (data[1], data1, 5);

SerWrite (LANG, 4);
SerWrite (" LANG\n\r", 7);

//SerWrite (data1, 4);
//SerWrite (" rechts\n\r", 9);

for (t=0; t< 80; t++)
{
Sleep (72);
}


if(LANG > 500)
LANG=0;
}
}


Ich weiß auch nicht genau wie das vorher funktioniert
hat mit data[1] und data kann mir das jemand erklären

LG

Valen
30.11.2010, 21:47
...
itoa (LANG, LANG, 5);
//itoa (data[1], data1, 5);

SerWrite (LANG, 4);
SerWrite (" LANG\n\r", 7);
...Den Umwandlung von den Variable in einem Zeichenketten mit itoa geht Falsch. Du wandelst ein int variable um in einer int, statt ein char array (wie data0 und data1). Ich wundere mich wieso das keine Fehlermeldung beim Kompilieren gegeben hat. Ich kann nicht glauben du hast keiner bekommen. Und ein int variable senden mit SerWrite soll auch nicht funktionieren.

the.speciali
01.12.2010, 13:33
Wie schon Valen sagte das was du da machst ist falsch. Du bräuchtest sowas wie "char langC[5]" und dann "itoa (LANG, langC, 10)".

beste Grüße
the.speciali

Problem
01.12.2010, 17:46
OK

kann ich da auch statt char langC[5]
cahr langB[5] nehmen


Und ist der [5] weil es 5 Byte sind oder

Also wenn ich statt LANG X ausgeben will muss ich char xB[2] schreiben oder

Habe es jetzt so weit aber noch nicht ganz fertig






[/code]#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int LANG;
char langC[5];
int t,x,LANG;


Init();
StatusLED (GREEN);
FrontLED (ON);


while (1)
{


itoa (LANG, LangC, 10);

SerWrite (LangC, 4);
SerWrite (" LANG\n\r", 7);

for (t=0; t< 100; t++)
{
Sleep (72);
}

x++;
if (x > 1000)
LANG++;
if (x > 1000)
x=0;

if (LANG > 1000)
LANG = 0;


}
}



LG

Valen
01.12.2010, 18:04
OK

kann ich da auch statt char langC[5]
cahr langB[5] nehmen


Und ist der [5] weil es 5 Byte sind oder

Also wenn ich statt LANG X ausgeben will muss ich char xB[2] schreiben oder

LgDas erste: Ja, du kannst jeder Nahme wahlen.(das nicht schon bekannt ist in dem C-sprache) Aber ich vermute the.speciali slagt "langC" vor weil die C vielleicht steht führ char. Dann weisst du später wieder welcher type von Variabele das ist.

Das letzte verstehe ich nicht. Kannst du das weiter erklären? Jedenfalls, wan du einer (Zeichenketten) Variabele deklarieren möchtest schreibst du nur einen mal:

char nahme[grosse in Bytes];

Wan du auf einer bestimmte Zeichen in dem Ketten ziehlst schreibst du: (zbs.)


langC[2]='b'; // den dritte Zeichen im langC wird einer 'b'. Weil [0] das erste Zeichen ist.

Problem
01.12.2010, 18:17
ja ist klar danke

Was ist hier noch falsch ?


#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int LANG;
char langC[5];
int t,x,LANG;


Init();
StatusLED (GREEN);
FrontLED (ON);


while (1)
{


itoa (LANG, LangC, 10);

SerWrite (LangC, 4);
SerWrite (" LANG\n\r", 7);

for (t=0; t< 100; t++)
{
Sleep (72);
}

x++;
if (x > 1000)
LANG++;
if (x > 1000)
x=0;

if (LANG > 1000)
LANG = 0;


}

Problem
01.12.2010, 20:04
Ein fehler ist LangC und langC
juhu

nur noch

test.c:9: error: conflicting types for `LANG' // irgendwas widerspricht sich
test.c:7: error: previous declaration of `LANG'

the.speciali
01.12.2010, 20:09
Valen hat das mit den Variablen super erklärt:)

Aber zum jetzigen Problem: da steht schon der Fehler da, conflicting typs und pervious declaration! Schau mal oben bei der Variablen deklaration: du verwendest einmal unsignet int für LANG und einmal ein einfaches int.

Ps: die Zahl am Anfang in der Fehlermeldung gibt die Zeile an in der der Fehler ist;)

Valen
01.12.2010, 20:19
...
char langC[5];
...
itoa (LANG, LangC, 10);
...


Ich weiss nicht ob du einer derartigen Fehler bekommen hat, aber etwas in in einer Variabele schreiben das nicht passen kann muss Problemen geben. Etwas von 10 Zeichen in einer Speicher platz von 5 Zeichen speichern geht nicht. Solcher fehler habben manche Virussen und Worms eine Tur zu Windows Betriebsystemen gegeben. ;)

Problem
01.12.2010, 20:21
Wow ich habe gerade gedacht ich machs einfach weg und dann auf einmal

> Process Exit Code: 0

Dann wollt ich es posten und lese deinen Beitrag

juju habe dazu gelernt so merke ich s mir länger

Aber danke für die antwort

Problem
01.12.2010, 20:22
ja vorfreude ist die größte Freunde

33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG
33 LANG


sendert er immer aber wieso

der Wert müsste ja größer werden

Valen
01.12.2010, 20:36
Erst mal, was denkst du das den Anfangswert von LANG und x ist beim Programmstart? Das ist wichtig für deine Begriff.

Es wird großer, aber nur nach den 1000-ste mal das gesendet zu haben. Und mit nur 2400 Baud dauert es eine weile. Es macht nur ein Erhöhungen von LANG jeder 1000 Erhöhungen von x. Und jeder Erhöhung von x wird es gesendet.

Ich fürchte es stimmt immer noch nicht mit dein itoa Befehl. ( wegen das 33undnochetwas das gesendet wird) Bitte zeige wieder deine gesamte Code.

Problem
01.12.2010, 20:43
#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int LANG =0;
char langC[5];
int t=0,x=0;


Init();
StatusLED (GREEN);


while (1)
{


itoa (LANG, langC, 10);

SerWrite (langC, 4);
SerWrite (" LANG\n\r", 7);

for (t=0; t< 100; t++)
{
Sleep (72);
}

x++;
if (x > 1000)
LANG++;
if (x > 1000)
x=0;



if (LANG < 50)
{BackLED(OFF,OFF);
StatusLED(RED);}
if ((LANG > 50) && (LANG < 150))
{ BackLED(ON,ON);
StatusLED(GREEN);}

if (LANG > 150)
LANG = 0;

}

return 0;
}

Problem
01.12.2010, 20:45
wenn ich diesen Teil entferne funkt es (Die lichter blinken)


itoa (LANG, langC, 10);

SerWrite (langC, 4);
SerWrite (" LANG\n\r", 7);

for (t=0; t< 100; t++)
{
Sleep (72);
}

ich weis das mit der verzögerung ich mach alle Programme so

Lg

Problem
01.12.2010, 20:46
wenn ich diesen Teil entferne funkt es (Die lichter blinken)


itoa (LANG, langC, 10);

SerWrite (langC, 4);
SerWrite (" LANG\n\r", 7);

for (t=0; t< 100; t++)
{
Sleep (72);
}

Mit diesem Teil zählt LANG nicht mehr und die S.LED leuchtet immer rot


ich weis das mit der verzögerung ich mach alle Programme so

Lg

Valen
01.12.2010, 20:46
Gut, du hast den Anfangswert nun gut initialisiert. Man kann nicht darauf verlassen das alle Speicherplatzen eine bestimmte wert haben beim start. Immer selb einer wert geben, oder sicher sein das einer Funktion das macht, vor das einer logische Entscheidung darüber gemacht wird.

Leider hast du diese meiner Berichten noch nicht gesehen oder verstanden:

https://www.roboternetz.de/phpBB2/viewtopic.php?p=528439#528439

Problem
01.12.2010, 20:50
...
char langC[5];
...
itoa (LANG, LangC, 10);
...


Ich weiss nicht ob du einer derartigen Fehler bekommen hat, aber etwas in in einer Variabele schreiben das nicht passen kann muss Problemen geben. Etwas von 10 Zeichen in einer Speicher platz von 5 Zeichen speichern geht nicht. Solcher fehler habben manche Virussen und Worms eine Tur zu Windows Betriebsystemen gegeben. ;)

Diese Antwort oder

Valen
01.12.2010, 21:12
Genau

Problem
01.12.2010, 21:20
Das verstehe ich doch nicht ganz

Problem
01.12.2010, 21:25
#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int LANG =0;
char langC[10];
int t=0,x=0;


Init();
StatusLED (GREEN);


while (1)
{


itoa (LANG, langC, 5);

SerWrite (langC, 4);
SerWrite (" LANG\n\r", 7);

for (t=0; t< 100; t++)
{
Sleep (72);
}

x++;
if (x > 1000)
LANG++;
if (x > 1000)
x=0;



if ((LANG > 1) && (LANG < 50))
{BackLED(OFF,OFF);
StatusLED(RED);}
if ((LANG > 50) && (LANG < 150))
{ BackLED(ON,ON);
StatusLED(GREEN);}

if (LANG > 150)
LANG = 0;

}

return 0;
}


Habe es auf char langC[10]; geändert
vorher wars char langC[5];

Valen
01.12.2010, 21:27
Du hast recht. Ich hab mir ge-irrt mit den 10. Das ist den Zahlsystem-basis, nicht ein Anzahl von Zeichen in den Zeichenketten. Bitte entschuldigung. Es wird Zeit fuhr mich schlafen zu gehen.

Problem
01.12.2010, 22:03
Wennst du noch ne Idee hast kannst es mir ruhig sagen

ich freue mich sehr!!!!!!!!!

the.speciali
02.12.2010, 22:12
Mach mal beim itoa trotzdem 10 herein, es ist das Zählsystem wie schon Valen oben sagte. und SerWrite eine Zeile drunter (langC, 6). Da langC 5-werte groß ist. Aber so langsam bin ich auch mit meine Latein am Ende.

Auch frage ich mich so recht wo der Sinn hinter diesem Programm ist^^


Eine Kritik am Rande: Du "kämpfst" so wie ich die Threads hier sehe an 3 Fronten gleichzeitig und forderst von uns mehr oder weniger das wir dir alles auf einem Silbertablett präsentieren. Auch wir haben zwar mal so angefangen wie du, doch wir haben uns Tage- oder Wochenlang durch Dokumentationen gewühlt, Suchanfragen gestartet etc. Auch wenn uns Englisch nicht liegt, wozu gibt es denn Wörterbücher;)
Verstehe die Kritik nicht falsch, aber in der Robotik muss nun mal auch vieles selber erarbeitet werden und nur dann kommt man auch wirklich weit!

beste Grüße
the.speciali

Problem
03.12.2010, 16:33
Ja das stimmt zu Teil aber ich spiele mich in der ganzen freizeit mit Proggen und schaue auch in anderen Themen nach obs da was gibt aber finde nicht so das wirklich passende
Ich probiere auch sehr viel aus schau auch hin und wieder im LEO-Wörterbuch wenn ich einen Fehlercode nicht verstehe

Ich versuche auch so wenig wie möglich themen zu poste aber wenn ichnicht mehr weiter weiß frag ich hald da

Der sinn ist, wenn ein Programm nicht funkt oder hängen bleibt damit ich sehen kann wo genau es steht oder dass ich ca. geschwindigkeiten sehen kann
LG

Problem
03.12.2010, 16:45
Ich habe das jetzt so geändert und auch noch andere Zahlen probiert

aber ich habe das Problem das er immer NULL anzeigt.
Wenn du noch was weißt mögest du mir es kurz schreiben
Bitte

Lg

Richard
03.12.2010, 17:04
Ich kenne den Asuro und auch C nicht gut genug aber wenn ich Fehler suche dan wenn möglich mit einem Simulator im Einzelschritt Modus.

AVRstudio ist kostenlos......

http://www.robomodules.de/portal/index.php?id=199

Gruß Richard

neo98
07.12.2010, 17:33
hier hab ich zwei mehr oder weniger gute Vorschläge für dich:
1. Ich hatte vor nicht alzu langer zeit das selbe problem und hab es wie folgt gelöst. die meisten hier würden mir glaub ich den kopf abreisen,aber hey es funktioniert. Falls du nichts mit sprintf anfgangen kannst. Goggle ist dein Freund und helfer.


#include "asuro.h"
#include <stdio.h>

int main() {
int i = 10;
char aC[2];
Init();
sprintf(aC, "%d", i);
SerWrite(aC, 2);
while(1);
}


2. Dieso Lösung hab ich aus der erweiterten lib abgeschrieben. Funktioniert einwandfrei.


#include "asuro.h"
#include <stdio.h>

void UartPutc(unsigned char zeichen) {
UCSRB = 0x08;
UCSRA |= 0x40;
while(!(UCSRA & 0x20));
UDR = zeichen;
while(!(UCSRA & 0x40));
UCSRB = 0x00;
}

void SerPrint(char *data){
unsigned char i = 0;
while(data[i] != 0x00)
UartPutc(data[i++]);
}

void PrintInt(int wert){
char text[7];
itoa(wert, text, 10);
SerPrint(text);
}

int main() {
Init();
PrintInt(10);
PrintInt(200);
while(1);
}

Problem
07.12.2010, 18:05
Danke

Das muss ich mir mal genauer ansehen

Problem
08.12.2010, 20:19
sprintf(aC, "%d", i);

ist eigentlich das gleiche wie

itoa (LANG, langC, 5);

nur mit sprintf kann ich im Hyper Terminal sehen wie er hochzählt

Problem
10.12.2010, 20:07
Habe hier zur Fehlersuche 2 Programme combiniert.
Da das Programm mit bool noch nicht so richtig funkt wollt ich mal schauen wie groß eigentlich "z" ist(wie schnell es zählt)




#include <stdbool.h>
#include <stdio.h>
#include <asuro.h>
int main(void)
{
Init();
char aC[2];
bool blinken = true;
int LANG = 0,z = 0,x = 0, y = 0,t = 0;


if (blinken == true)

{
//Schalter
//Begin Blinktakt Backleds
x=x+1;
if (x > 1000)
LANG=LANG+1;
if (x > 1000)
x=0;
if((LANG > 0) && (LANG < 20))
BackLED(ON,OFF);
if((LANG > 20) && (LANG < 40))
BackLED(OFF,ON);
if ( LANG > 40)
LANG=0;
//Ende Blinktakt Backleds
}
if (blinken == false)
BackLED(OFF,OFF);

while( 1 )
{
y++;
if (y > 1000)
z++;
if (y > 1000)
y=0;


if (z < 20) // Wenn z kleiner 20 ist blinkt es
{ blinken = true;
StatusLED(OFF);
}
if (z > 20)
{ blinken = false;
StatusLED(RED);
}
if (z > 30)
z=0;


sprintf(aC, "%d", z);
SerWrite(aC, 2);
SerWrite (" aC\n\r", 5);
for (t=0; t< 20; t++) //Kurze Pause beim Übertragen
{
Sleep (72);
}


}
return 0;
}


Das Ergebniss:

0 aC
0 aC
0 aC //Edit ich hätte min 30 min warten müssen biss es 1 wird weil y so langsam zählt aber das ist noch nicht das Problem (https://www.roboternetz.de/phpBB2/viewtopic.php?t=57218)
0 aC //EDIT Das problem sind die warnungen oder sind die harmlos
0 aC

Dies 2 warnungen sind gekommen:
sind die harmlos?

test.c:55: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:56: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness




Lg

Valen
10.12.2010, 23:41
...

Dies 2 warnungen sind gekommen:
sind die harmlos?

test.c:55: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:56: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness




LgSerWrite (in den originale asuro lib, aber auch den erweiterte lib) erwartet ein Zeiger zu ein 'unsigned char' Zeichenketten. Du hasst ein normales 'char' Zeichenketten deklariert. Das ist vermutlich harmlos. Die Meldung sagt die benutzte Variabele kann eine negative Wert enthalten, aber die erwartete Variabele darf das nicht. Berechnungen auf Zeichenketten macht man nicht (oder kaum, und mit Zeiger noch weniger!), deshalb kann es keine schade machen.

Problem
12.12.2010, 11:09
Habe da eine Frage


Habe hier was mit dem Timer getestet

aber er springt nicht von 200 auf 0



#include <stdbool.h>
#include <stdio.h>
#include <asuro.h>
int main(void)
{
Init();
char zC[2];
unsigned char umschaltpunkt;
int LANG = 0,z = 0,y = 0,t = 0,gas = 0;
/************************************************** *****************************************/
while( 1 )
{
if(Gettime() > umschaltpunkt) // Umschaltzeitpunkt überschritten?
{
umschaltpunkt += 1000; // neuen Umschaltzeitpunkt festlegen
z++;
}

if (PollSwitch() == 1)
z=0;


if (PollSwitch() == 2)
z = 90;

if (PollSwitch() == 4)
z = 190;



/************************************************** ********************/
sprintf(zC, "%d", z); //Übertragen
SerWrite(zC, 3); //Übertragen
SerWrite (" zC\n\r", 6); //Übertragen
for
(t=0; t< 40; t++) //Übertragen
{ //Übertragen
Sleep (72); //Übertragen
} //Übertragen
/************************************************** *********************/


if (z > 200)
z=0;
}
return 0;
}




Wenn ich im Hyper Terminal schaue sehe ich das




194 zC
195 zC
196 zC
197 zC
198 zC
199 zC
200 zC
201 zC
11 zC
21 zC
31 zC
41 zC
51 zC
61 zC
71 zC
81 zC
91 zC
10 zC
11 zC
12 zC
13 zC
14 zC



eigentlich soll er von 200 au 0 springen ncht auf 11,21,31,41,51,61....


Weiß jamand wieso das so ist

Lg

Valen
12.12.2010, 12:15
Den Sprung von 201 auf 11 kann ich (noch) nicht erklären aber es gibt einiger Programmier-Fehler in dein Programm umsonst.


...
unsigned char umschaltpunkt;
...
if(Gettime() > umschaltpunkt)
{
umschaltpunkt += 1000;
...Du vergleichst ein Gettime Wert (unsigned long) mit umschaltpunkt (ein unsigned char) das bis jetzt noch kein Anfangswert bekommen hat! Ein unsigned long, das von 0 bis 4294967295 zahlen kann, ist oft größer als ein Wert das von 0 bis 255 sein kann. Das letzte ist aber im Prinzip kein Problem. Nur den Anfangswert ist, weil niemand ahnen kann wann das passieren soll.

Den Erhöhung von umschaltpunkt mit 1000 ist aber ein Problem. 1000 ist großer als den maximale wert das es enthalten kan (255). Genau welcher wert es bekommt nach dieses befehl weiss ich nicht genau. Aber es wurde ungefähr gleich sein als ein Reduktion mit 24. (vielleicht einiger werten mehr oder weniger wegen 2-Komplement Rechnung (Wiki) (http://de.wikipedia.org/wiki/Zweierkomplement) ).Das soll sicher Kompilier Fehler oder Warnungen gegeben haben müssen!

Problem
12.12.2010, 12:33
Den Sprung von 201 auf 11 kann ich (noch) nicht erklären aber es gibt einiger Programmier-Fehler in dein Programm umsonst.



Kann es sein das es nur den 1nser anzeigt der eigentlich nicht hingehört, weil wenn ich den 1nser wegdenke stimmt es


Habe jetzt das Programm so



#include <stdbool.h>
#include <stdio.h>
#include <asuro.h>
int main(void)
{
Init();
char zC[2];
unsigned char umschaltpunkt = 0;
unsigned int z = 0;
int t = 0;
/************************************************** *****************************************/
while( 1 )
{
if(Gettime() > umschaltpunkt) // Umschaltzeitpunkt überschritten?
{
umschaltpunkt += 200; // neuen Umschaltzeitpunkt festlegen
z++;
}

if (PollSwitch() == 1)
z=0;


if (PollSwitch() == 2)
z = 65500;

if (PollSwitch() == 4)
z = 190;



/************************************************** ********************/
sprintf(zC, "%d", z); //Übertragen
SerWrite(zC, 6); //Übertragen
SerWrite (" zC\n\r", 6); //Übertragen
for
(t=0; t< 40; t++) //Übertragen
{ //Übertragen
Sleep (72); //Übertragen
} //Übertragen
/************************************************** *********************/



}
return 0;
}


EDIT

unsigned int z = 0;
Eigentlich müsste er ja da bis 65 000 zählen oder ?

Aber



32762 zC
32763 zC
32764 zC
32765 zC
32766 zC
32767 zC
-32768 zC
-32767 zC
-32766 zC
-32765 zC
-32764 zC
-32763 zC
-32762 zC



Keine Ahnung wieso das so ist

Problem
12.12.2010, 12:51
Was ich möchte ist eigentlich nur
dass:

1. Einen Timer stellen
Dann soll ein int Wert hochgezählt werden(x):

if (timer irgendwo)
x++;


if timer irgendwo
timer = 0 // brauch ich ja oder weil er kann nicht größer wie 255 sein


Da möchte ich dann das Programm reinschreiben

if (x < 20)
FrontLED(ON);
.............
...........
...........
............

Programm ende

Valen
12.12.2010, 13:19
...
EDIT

unsigned int z = 0;
Eigentlich müsste er ja da bis 65 000 zählen oder ?

Aber



32762 zC
32763 zC
32764 zC
32765 zC
32766 zC
32767 zC
-32768 zC
-32767 zC
-32766 zC
-32765 zC
-32764 zC
-32763 zC
-32762 zC



Keine Ahnung wieso das so istJa das soll es auch meines Wissen. Wieso das nicht passiert verstehe ich auch nicht.

(Meiner) EDIT:
Laut diese link ist "unsigned int" nicht als standard definiert. Versuch mal mit "unsigned short".

http://www.rn-wissen.de/index.php/C-Tutorial#int.2C_char.2C_short.2C_long_.28ganze_Zah len.29

Problem
12.12.2010, 13:55
Wenn ich das ändere und neu rüberspielen möchte schreibt er gleich OK

Also es kennt da keien Unterschied