PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerproblem mit Lauflicht.



crabtack
12.04.2010, 22:15
Also, ich bin eigentlich noch anfänger.
Heute habe ich es geschafft mein atmega 32 zu flashen.
Jetzt möchte ich erstmal ein lauflich bauen aber es will noch nicht ganz klappen.denn es ikommen 3 warnungen und die led leuchtet die ganze zei.
also ich will erstmal nur eine led zum blinken bringen.

also, so sieht meion code aus:


#include <util/delay.h>
#include <avr/io.h>
#define F_CPU 1000000

int main(void)

{
DDRB = 2;
while(1)
{
PORTB = 0b00000010;
_delay_ms(60);
PORTB = 0b00000000;


};
}




Und es kommen diese warnungen:
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
../lauflicht.c:3:1: warning: "F_CPU" redefined
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:86:1: warning: this is the location of the previous definition

sternst
13.04.2010, 10:02
die led leuchtet die ganze zei.Nein, du siehst das Blinken nur nicht, weil die Ein-Zeit 20000 (zwanzigtausend) mal länger ist, als die Aus-Zeit.


Und es kommen diese warnungen:.F_CPU wird in delay.h benötigt, also muss das "#define F_CPU" vor das "#include <util/delay.h>".

oberallgeier
13.04.2010, 10:27
[quote=crabtack]... also muss das "#define F_CPU" vor das "#include <util/delay.h>" ...Hmmmm, wieder was gelernt. Ich hatte den Fehler nie (hab meine eigene "wait_ms"). ABER ich hätte das auch so gemacht, weil ich dachte, dass der Preprozessor das schon "richtet". Wieder was gelernt !

Frage: seit einigen Monaten habe ich den Prozessortakt im AVRStudio in die "Current Configuration Options" geschrieben - auf Rat aus dem Forum hin. Wann werden denn die abgefragt? Das wäre dann doch sicher auch hier eine richtige Möglichkeit?

Rabenauge
13.04.2010, 10:50
Der Präprozessor richtet sowas meistens auch: man _kann_ viele Warnungen durchaus ignorieren, aber eben nicht alle. Und ehe du dann ewig suchst...ich hab mir inzwischen angewöhnt, _jede_ Warnung erst zu beheben, ehe ich was flashe.
Im allgemeinen ergibt es dann nur "unlogisches" Programmverhalten. Dann finde mal das Problem.;)

sternst
13.04.2010, 11:54
Frage: seit einigen Monaten habe ich den Prozessortakt im AVRStudio in die "Current Configuration Options" geschrieben - auf Rat aus dem Forum hin. Wann werden denn die abgefragt? Das wäre dann doch sicher auch hier eine richtige Möglichkeit?Ja. F_CPU im Makefile zu definieren (und das ist letztlich das, was passiert, wenn du es in den "Configuration Options" einstellst), ist sogar der beste Weg. Aber der OP hat ja nicht gesagt, was er benutzt und wie er compiliert.


Jedes mal, wenn ich "Preprozessor" sehe, bekomme ich die Krätze. Ich habe ganz und gar nichts gegen Anglizismen, aber Englisch-Deutsch-Kombinationen innerhalb eines Wortes müssen es ja nun wirklich nicht unbedingt sein.
Es heißt entweder "Präprozessor" (deutsch) oder "Preprocessor" (englisch).

oberallgeier
13.04.2010, 12:16
Erstmal danke Stefan, und dann
... Jedes mal, wenn ich "Preprozessor" sehe ...Au Sch...e - genau das wollte ich nicht schreiben. Freud´sches Fehlverhalten - oder Altersdebilität. Egal - jedenfalls isses dämlich. Tut mir wirklich leid.

Wobei manche Denglish-Konstrukte so daneben sind, dass sie schon fast ihren Charme haben: Backshop zum Beispiel oder so *ggg*.

crabtack
13.04.2010, 13:43
Danke, ich habe es geschafft die led zum leuchrten zu brigen.
Und auch ein lauflicht aufgebaut.
http://www.sendspace.com/file/5jjn3m
(Ich habe leider keinen youtube account)
Jetzt werde ich dem lauflicht noch ein paar extras geben wioe einen schalter und einen trimmer mit dem man die abstäde zwichen dem blinken einstellen kann.
Dannn kommt eine großbestellung bei pollin und ich bau endlich einen malrobo.^^

Wie kann man eigentlich amn einem pin erkennen, wieviel spannung da ist und das atmega die zahl als variable speichern lassen?

BurningWave
13.04.2010, 19:21
#include <util/delay.h>
#include <avr/io.h>
#define F_CPU 1000000

int main(void)

{
DDRB = 2;
while(1)
{
PORTB = 0b00000010;
_delay_ms(60);
PORTB = 0b00000000;


};
}

Ist dieses Semikolon überhaupt erlaubt? Und muss es nicht #define F_CPU 1000000ul heißen?

crabtack
13.04.2010, 20:01
Erlaubt ist das semikiolon aber nicht notwendig.
ka, wieso ich es hingemacht habe.

Ich gkaube, dass mit dem ukl war nur früher so.

Habe jetzt auch ein video auf youtube

http://www.youtube.com/watch?v=XTE_r4x7YcY