im gcc-tutorial gibt es ein beispiel in c zum tasten-entprellen, das die funktion _delay_ms(time) benutzt. der parameter time ist in der definition von _delay_ms (die über delay.h eingebunden wird) als double definiert. compiliere ich das programm für den attiny2313 mit z.b _delay_ms(100), so wird 100 als double interpretiert, die double-routinen geladen(?) und somit sprengt das kleine programm den speicher des attiny2313. wie kann ich dem compiler beibringen, dass die konstante "time" z.b. byte (oder sonst ein ganzzahltyp) ist? - ich will nicht delay.h umändern! danke für die bisher gewährte hilfe jr
Du musst den Optimizer einschalten. Der optimiert das alles so zurecht, dass die double Berechnung rausfällt. Übrigens: Eine vernünftigere Entprellung findest du zb. hier. Die ist kurz, einfach zu benutzen und funktioniert hervorragend: http://www.mikrocontroller.net/articles/Entprellung DIe Kosten für einen Timer sind mehr als gut investiert.
da ich c erst selbst lerne, aber in meinem unterricht einsetzen will mit dem attiny2313, bin ich auch an dieser software-lösung wegen der grundsätzlichen bedeutung interessiert. deshalb die frage: wie kann ich den optimizer einschalten für den c-compiler im avr-studio?
Project | Configuration Options, dann unten im Feld "Optimization" ein anderes Level als -O0 einstellen (-Os ist Codesize-Optimization, -O1 bis -O3 sind Optimierungen, die i.d.R. mehr oder weniger Kompromisse zwischen Codegröße und Geschwindigkeit machen).
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.