Dan wrote:
> compilieren ... In file included from qertwert2.cc:21:
>
> c:/programme/myavrworkpadplus/winavr/bin/../avr/include/avr/delay.h:36:2 :
> warning: #warning "This file has been moved to ."
> In file included from
> c:/programme/myavrworkpadplus/winavr/bin/../avr/include/avr/delay.h:37,
>
> from qertwert2.cc:21:
> c:/programme/myavrworkpadplus/winavr/bin/../avr/include/util/delay.h:89: 3:
> warning: #warning "Compiler optimizations disabled; functions from won't
> work as designed"
>
> Keine Ahnung was mir der Compiler damit sagen will.
Er sagt Dir doch recht präzise, was er sagen will! Die erste Meldung ist
zwar unvollständig, aber sie bezieht sich aller Wahrscheinlichkeit nach
darauf, dass in Deinem Programm irgendwo ein "#include<avr/delay.h>"
steht, wo ein "#include<util/delay.h>" hingehört. Die delay.h war bei
älteren Versionen im Ordner avr und ist seit längerem schon im Ordner
util untergebracht.
Die zweite Meldung besagt, dass Du die Compiler-Optimierungen nicht
aktiviert hast. Die Funktionen aus der delay.h funktionieren aber nur
richtig, wenn die Optimierung aktiv ist!
Abgesehen davon ist SIGNAL genauso veraltet. Schau bitte mal intensiv
ins AVR-GCC-Tutorial in die entsprechenden Abschnitte. Da steht
wie's geht.
> Zudem habe ich neben
> den Hauptprogramm noch einen sehr schnellen Timer am Laufen. Durch die
> Delayfunktionen könnte es daher zu Problemen kommen. Deswegen dachte ich
> mir, man könne einfach durch einen anderen Interrupt schauen welcher
> Taster gedrückt ist,
Interrupt und Taster vertragen sich nicht ohne weiteres! Interrupts sind
zur Auswertung mechanischer Kontakte viel zu schnell. Genau deshalb
haben viele Leute sich bemüht, Entprellroutinen zu schreiben.
> beispielsweise so:
>
>
1 | >
|
2 | > SIGNAL(SIG_INTERRUPT0)
|
3 | > {
|
4 | >
|
5 | > if( !(PIND & ( 1 << PD2)) )
|
6 | > {
|
7 | >
|
8 | > //etwas machen
|
9 | > }
|
10 | > else if( !(PIND & ( 1 << PD3)) )
|
11 | > {
|
12 | > //etwas anderes machen
|
13 | > }
|
14 | >
|
15 | > }
|
16 | >
|
Nee, genau so geht es nicht! Hier wird schließlich überhaupt nichts
entprellt. Das ist aber unbedingt erforderlich.