- Akku Tests und Balkonkraftwerk Speicher         
Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 45

Thema: Asuro soll die Werte von Variab über Hyper terminal ausgeben

  1. #31
    Benutzer Stammmitglied
    Registriert seit
    20.04.2008
    Ort
    Bremen
    Alter
    34
    Beiträge
    85
    Anzeige

    Powerstation Test
    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
    Wer den Himmel auf Erden sucht hat im Erdkundeunterricht geschlafen!

  2. #32
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    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

  3. #33
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    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

  4. #34
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    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

  5. #35
    Benutzer Stammmitglied
    Registriert seit
    19.12.2009
    Beiträge
    30
    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.
    Code:
    #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.
    Code:
    #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);
    }

  6. #36
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    Danke

    Das muss ich mir mal genauer ansehen

  7. #37
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    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

  8. #38
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    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)



    Code:
    #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

  9. #39
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Zitat Zitat von Problem
    ...

    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
    SerWrite (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.

  10. #40
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.11.2010
    Ort
    Österreich
    Alter
    31
    Beiträge
    173
    Habe da eine Frage


    Habe hier was mit dem Timer getestet

    aber er springt nicht von 200 auf 0


    Code:
    #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



    Code:
    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

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test