Hallo ich möchte fragen ob ich das so richtig gemacht hab. Ich hab gedacht das ich das mit SD mache aber ein Atmega8 kann das nicht leisten allso hab ich SEHR lange überlegt. Dann kam ich auf die idee das man immer 4 Bit sendet die dan gelesen werden :D Auf Board sind 2 LED's. Eine an PC0 und eine PB6 zu masse. Anfangs ging es nicht nun geht es. Die werden durch 4 Schalter gelesen wenn man Knopf zum Lesen drückt. PC1 ist der Knopf PC2 bis PC5 sind die schalter. Es wird 2 mal gelesen um eine Funktion zu starten. z.B. 1000 0000 } befehl: LED an Bis jetzt hab ich 3 Funktione: 0000 0000 LED aus 1000 0000 LED an 1111 1111 Conntroller schaltet sich aus Nun ist mein conntroller 79% voll und weiß nciht wiso... so viel code ist das nicht oder? Ich will nur wissen ob ich es richtig gemacht hab und wie ich weiter machen soll. Endweder ein Atmega168 kaufen oder Code Optemieren...denn es kommt noch viel dazu
:
Verschoben durch User
Alexander Ljubizki schrieb: > Nun ist mein conntroller 79% voll und weiß nciht wiso... so viel code > ist das nicht oder? Du hast den ganzen LCD Code noch im Projekt, den kein Mensch braucht. Auch nicht aufgerufene Funktionen benötigen Platz. Und der Rest. Im Prinzip hast du recht, so kompliziert ist dein Programm nicht. Es ist nur kompliziert geschrieben
Aber hier steckt dein Haupt-Codefresser
1 | void LED(int On, int Loop, int MS) |
2 | {
|
3 | if(Loop) |
4 | {
|
5 | while(Loop) |
6 | {
|
7 | PORTC |= (1 << PC0); //An |
8 | _delay_ms(MS); |
9 | PORTC &= ~(1 << PC0); //Aus |
10 | _delay_ms(MS); |
11 | Loop--; |
12 | }
|
13 | }
|
14 | else
|
15 | {
|
16 | if(On) |
17 | PORTC |= (1 << PC0); //An |
18 | else
|
19 | PORTC &= ~(1 << PC0); //Aus |
20 | }
|
21 | }
|
_delay_ms niemals mit einer Variablen aufrufen: * das zieht die komplette Floating Point Library mit ins Boot * die angestrebten Wartezeiten sind damit illusorisch. Da der Optimizer die Berechnungen nicht optimieren kann, dauern die Berechnungen selber dann schon fast so lang oder noch länger als die angestrebte Wartezeit.
Ein Mega 8 ist nicht wirklich der Typ, womit man ein Design startet. Ausser die gesparten 20cents bringen ein gutes Gefuehl. Wenn man ein printf() im Code hat, ist der Speicher eigentlich schon voll. Ein ASM Listing des Codes zeigt wofuer wieviel Platz draufgeht.
Hey noch Was schrieb: > Ein Mega 8 ist nicht wirklich der Typ, womit man ein Design startet. Na ja. Wenn die AUfgabe darin besteht 5 Eingänge zu überwachen und abhängig vom Zustand dieser Eingänge einen oder 2 Ausgänge ein oder aus zu schalten, dann ist im Grunde selbst ein Mega8 schon hoffnungslos überdimensioniert. Und um mehr gehts hier nicht. Zumindest hab ich mir das aus Code und Begleittext zusammengereimt :-)
Nicht mal dann. Denn naechstens kommt der Wusch nach einem Delay, dann dieses, dann Jenes. Ich wuerd einen Mega8 nicht mal fuer eine 100er Serie einsetzen. Die Ersparnis gegenueber einem Mega16 ist zu gering.
Karl heinz Buchegger schrieb: > Aber hier steckt dein Haupt-Codefresser > >
1 | > void LED(int On, int Loop, int MS) |
2 | > { |
3 | > if(Loop) |
4 | > { |
5 | > while(Loop) |
6 | > { |
7 | > PORTC |= (1 << PC0); //An |
8 | > _delay_ms(MS); |
9 | > PORTC &= ~(1 << PC0); //Aus |
10 | > _delay_ms(MS); |
11 | > Loop--; |
12 | > } |
13 | > } |
14 | > else |
15 | > { |
16 | > if(On) |
17 | > PORTC |= (1 << PC0); //An |
18 | > else |
19 | > PORTC &= ~(1 << PC0); //Aus |
20 | > } |
21 | > } |
22 | >
|
> > _delay_ms niemals mit einer Variablen aufrufen: > * das zieht die komplette Floating Point Library mit ins Boot > * die angestrebten Wartezeiten sind damit illusorisch. Da der > Optimizer die Berechnungen nicht optimieren kann, dauern die > Berechnungen selber dann schon fast so lang oder noch länger > als die angestrebte Wartezeit. Wau das brigt ja 30% mehr speicher frei O.o Jetzt überlege ich grad ob ich auf Atmega168 oder Atmega16 gehen soll. Ich werde jetzt erstmal alle tutorials auf diser homepage lesen um die "resourcen" fresser zu töten. DANKE an alle ich dachte am anfang das ihr mich auslacht :C
Hey noch Was schrieb: > Nicht mal dann. Denn naechstens kommt der Wusch nach einem Delay, dann > dieses, dann Jenes. Ich wuerd einen Mega8 nicht mal fuer eine 100er > Serie einsetzen. Die Ersparnis gegenueber einem Mega16 ist zu gering. Er wird schon seinen Grund für den 8-er haben. Vielleicht hat er auch einfach nur welche rumliegen. Sein Programm in der jetzigen Form lastet den 8-er noch nicht einmal zu 10% aus. Da ist noch massig Platz für Erweiterungen. Ich verbau auch gerne die 16-er. Aber wenn ein 8-er locker ausreicht und ich einen rumliegen hab, dann nehm ich den auch. Auf jeden Fall ist sein Programm in der jetzigen Form (und auch das was in 2 Wochen noch daraus entstehen kann) noch lange kein Grund die Diskussion in Richtung größerern Prozessor zu lenken. Die Grenze ist noch so weit weg, dass das einfach die falsche Richtung ist. Sauber programmieren allerdings wäre die richtige Richtung. IMHO natürlich.
Hey noch Was schrieb: > Ich wuerd einen Mega8 nicht mal fuer eine 100er > Serie einsetzen. Die Ersparnis gegenueber einem Mega16 ist zu gering. Da gibts aber immer noch die Hobbybastler, die lieber DIP statt SMD löten. Und für die ist ein Mega 8 rein äusserlich doch erheblich kleiner, als ein Mega16. Oliver
Oliver schrieb: > Hey noch Was schrieb: >> Ich wuerd einen Mega8 nicht mal fuer eine 100er >> Serie einsetzen. Die Ersparnis gegenueber einem Mega16 ist zu gering. > > Da gibts aber immer noch die Hobbybastler, die lieber DIP statt SMD > löten. Und für die ist ein Mega 8 rein äusserlich doch erheblich > kleiner, als ein Mega16. > > Oliver Karl heinz Buchegger schrieb: > Hey noch Was schrieb: >> Nicht mal dann. Denn naechstens kommt der Wusch nach einem Delay, dann >> dieses, dann Jenes. Ich wuerd einen Mega8 nicht mal fuer eine 100er >> Serie einsetzen. Die Ersparnis gegenueber einem Mega16 ist zu gering. > > Er wird schon seinen Grund für den 8-er haben. Vielleicht hat er auch > einfach nur welche rumliegen. > > Sein Programm in der jetzigen Form lastet den 8-er noch nicht einmal zu > 10% aus. Da ist noch massig Platz für Erweiterungen. > > Ich verbau auch gerne die 16-er. Aber wenn ein 8-er locker ausreicht und > ich einen rumliegen hab, dann nehm ich den auch. > > Auf jeden Fall ist sein Programm in der jetzigen Form (und auch das was > in 2 Wochen noch daraus entstehen kann) noch lange kein Grund die > Diskussion in Richtung größerern Prozessor zu lenken. Die Grenze ist > noch so weit weg, dass das einfach die falsche Richtung ist. Sauber > programmieren allerdings wäre die richtige Richtung. IMHO natürlich. Ja genau wegem dem Gründen nehme ich ein Atmega8 in anspruch. Und da kommt wie frage wiso so viele Pinns=? 22 Pins reichen mir: 5 LCD 5 Festplatte 5 Tastatur(5 Pins 5 pins 1 Bit = 25 Schaltreihenmöglichkeiten :D A-Z + ÄÖÜ) 2 RS232 2 Led's So ich werde nun jeden Sonntag mal hier mein zwischen bericht presentieren(und vl. nehme ich den Atmega168 :D ist 100 % gleich wie Atmega8 nur mit 16 KB speicher)
> und vl. nehme ich den Atmega168 :D ist 100 % gleich wie > Atmega8 nur mit 16 KB speicher Der ATmega168 ist deutlich weg von „100% gleich“ zum ATmega8. Das wäre der ATmega88.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.