-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: IF Else SCHLEIFEN

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.05.2007
    Alter
    38
    Beiträge
    14

    IF Else SCHLEIFEN

    Anzeige

    Moin zusammen !

    Hab da mal wieder ein Problemchen, bei dem ich seid Tagen verzweifel !
    Ich will eigentlich nur ne If Else Schleife machen.
    Ohne die Schleife funktioniert mein Programm.
    Sobald ich die Schleife drin hab, bekomme ich im AVR Studio folgende Meldung :

    c:\winavr\bin\..\lib\gcc\avr\4.1.1\..\..\..\..\avr \bin\ld.exe: region text is full (Aquacontrol.elf section .text)

    Kann mir da jemand weiterhelfen ?

    Danke schonmal für Eure Hilfen !
    Angehängte Dateien Angehängte Dateien

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Versuch's mal so, versuchsweise, das kommt mir übersichtlicher vor
    Code:
    new_line(1,4);				// Schreibe in Zeile1, Spalte4
    lcd_write("Temperatur");		// den Text "Temperatur" auf das LCD	
    new_line(2,10);				// Schreibe in Zeile12 Spalte10
    lcd_write("ßC");				// den Text "Grad Celcius" auf das LCD		
    new_line(2,3);				// Schreibe in Zeile2, Spalte3
    if (Temperatur<24)
    { 
    	lcd_write("zu niedrig!");		// den Inhalt "zu hoch !" auf das LCD
    }
    else 
    {
    	if  (Temperatur>28)
    	{ 
    		lcd_write("zu hoch !");		// den Inhalt "zu hoch !" auf das LCD
    	}
    	else 
    	{ 
    		lcd_write(Buffer);		// den Inhalt des ADC Registers 
    	}
    }
    for(i=1;i<25;i++)					// Durchlaufe die Schleife 30 mal
    {
    	_delay_ms(250);				
    }
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    23.05.2007
    Alter
    38
    Beiträge
    14
    Danke für die superschnelle Antwort !
    Also ich bekomme jetzt beim Kompilieren keine Fehlermeldung mehr.
    Jedoch wenn ich brennen will kommt die für mich nicht gewohnte angehängte Meldung !

    Im Display seh ich wenn ich auf ja gehe,nach dem brennen teilweise Hypogliphen, teilweise ists okay !?!?
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken bild1_175.jpg  
    Angehängte Dateien Angehängte Dateien

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Es ist im Endeffekt die gleiche Fehlermeldung wie oben:

    Das Programm ist zu fett für den µC und passt nicht komplett rein.
    Disclaimer: none. Sue me.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    23.05.2007
    Alter
    38
    Beiträge
    14
    Hmmm, komisch ! Besteht eigentlich nur aus ein paar zeilen Ausgabe auf Display, ner Uhr die über I2C ausgelesen wird und dieser messung hier.

    Ist ein MEGA8

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    Dein Problem werden neben den paar strings wohl die float-Rechnungen sein. Die brauchen schon böse viel Speicherplatz. Überleg dir mal, wie du das evtl. einfach gestalten könntest.
    So ein ATMega8 ist schon ziemlich schnell voll.

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Na, stell dein Programm mal da rein. Ich denke doch, daß wir es ein bisschen kompakter kriegen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    23.05.2007
    Alter
    38
    Beiträge
    14
    Also, hier mein Programm, was mal mein Technikerprojekt geben sollte !
    Eigentlich kommt noch eine AD Wandlung für den PH Wert dazu, was aber glaub dann wirklich zuviel fürn Prozessor wird. Wenns ihm jetzt schon zuviel ist.
    Die Funkionen macht man ja normal in C Files, wie wirs gelernt haben. *lol* funktioniert so aber auch. Brauch das so mehr Platz ?

    Möglich dass hier und da ein paar Unschönheiten drin sind --> Anfänger

    Aber es ist noch kein Meister vom Himmel gefallen !
    Angehängte Dateien Angehängte Dateien

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich versuch's portionen-weise, weil ich leider nicht durchgehend Zeit habe:

    z.B Wochentag ausgabe, statt "switch"
    Code:
    static char	daytab[] = "MoDiMiDoFrSaSo";
    
    	memcpy(Buffer, daytab[ (day-1) << 1 ],  2);
    	Buffer[2] = '.';	
    	Buffer[3] = 0x00;		// string-terminator
    	lcd_write(Buffer);
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    So, nun die komplette Uhr-Ausgabe. Ich denk, da ist ein bisschen was zu holen
    Code:
    static char	daytab[] = "MoDiMiDoFrSaSo";
    
    //---------------------------------------------------------
    //line2  123456789012
    //           hh:mm:ss
    			Buffer[0]	= (std >> 4) | 0x30;			// 5
    			Buffer[1]	= (std & 0x0f) | 0x30;			// 6 
    			Buffer[2]	= ':'							// 7
    			Buffer[3]	= (min >> 4) | 0x30;			// 8
    			Buffer[4]	= (min & 0x0f) | 0x30;			// 9 
    			Buffer[5]	= ':'							// 10
    			Buffer[6]	= (sek >> 4) | 0x30;			// 11
    			Buffer[7]	= (sek & 0x0f) | 0x30;			// 12
    			Buffer[8]	= 0x00;							// string-terminator
    			new_line(2,5);					// legt die Zeile, und dann die Spalte fest						
    			lcd_write(Buffer);
    //---------------------------------------------------------
    //line1  12345678901234
    //        dd.  dd.mm.yy
    			memcpy(Buffer, (char*)&daytab[ (day-1) << 1	], 2);
    			Buffer[2] = '.';	
    			Buffer[3] = 0x00;
    			new_line(1,2);					// legt die Zeile, und dann die Spalte fest						
    			lcd_write(Buffer);
    
    			Buffer[0]	= (date >> 4)	| 0x30;	
    			Buffer[1]	= (date & 0x0f) | 0x30;	
    			Buffer[2]	= '.'						
    			Buffer[3]	= (month >> 4)	| 0x30;	
    			Buffer[4]	= (month & 0x0f) | 0x30;	
    			Buffer[5]	= '.'						
    			Buffer[6]	= (year >> 4)	| 0x30;	
    			Buffer[7]	= (year & 0x0f) | 0x30;	
    			Buffer[8]	= 0x00;						
    			new_line(1,7);					// legt die Zeile, und dann die Spalte fest						
    			lcd_write(Buffer);
    Schau aber sicherheitshalber, ob ich mich wo verschrieben habe.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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