Hallo, folgenden Code habe ich aus mc.net übernommen. Ich kann nur ein dauerleuchten der LED erzeugen, sie sollte aber blinken. Wo ist mein Fehler??? Ich habe ihn nach 7h immer noch nicht gefunden. Verzweifelung! Ich bin dabei C und MC zu lernen, und hänge jetzt echt fest. Ich habe einen atmel 32 mit 7.328Mhz Danke für eure Hilfe!!! #include <avr/io.h> #ifndef F_CPU /* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert (z.B. durch Übergabe als Parameter zum Compiler innerhalb des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die "nachträgliche" Definition hinweist */ #warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert" #define F_CPU 3686400UL /* Quarz mit 3.6864 Mhz */ #endif #include <util/delay.h> /* in älteren avr-libc Versionen <avr/delay.h> */ /* lange, variable Verzögerungszeit, Einheit in Millisekunden Die maximale Zeit pro Funktionsaufruf ist begrenzt auf 262.14 ms / F_CPU in MHz (im Beispiel: 262.1 / 3.6864 = max. 71 ms) Daher wird die kleine Warteschleife mehrfach aufgerufen, um auf eine längere Wartezeit zu kommen. Die zusätzliche Prüfung der Schleifenbedingung lässt die Wartezeit geringfügig ungenau werden (macht hier vielleicht 2-3ms aus). */ void long_delay(uint16_t ms) { for(; ms>0; ms--) _delay_ms(1); } int main( void ) { DDRB = ( 1 << PB0 ); // PB0 an PORTB als Ausgang setzen while( 1 ) { // Endlosschleife PORTB ^= ( 1 << PB0 ); // Toggle PB0 z.B. angeschlossene LED long_delay(1000); // Eine Sekunde warten... } return 0; }
In deinem Programm gibt es erst mal keinen Fehler. Wenn die LED nicht wie gewünscht blinkt, dann hat das andere Ursachen, die von hier aus nicht diagnostizierbar sind. zb. ist das Programm korrekt gebrannt worden?
Hast du lange genug gewartet mit deiner Einschätzung? Wenn du statt mit 7,37 MHz vom Quarz mit den internen 1 MHz des RC-Oszillators fährst, geht die LED erst nach reichlich 7 s das erste Mal aus (um dann 7 s lang aus zu bleiben).
Ist es moeglich dass der AVR CPU nicht angegeben wurde? Ich sehen nirgendwo den AVR Typ. Ich habe das Program auf einen PIC in CCS C schnell ausprobiert und es fuktionierte auf Anhieb. Am eigentlichen Program kann es wirklich nicht liegen. Gruss, Gerhard
Hallo zusammen, bin neu hier und hab vor mich richtig ins Thema einzuarbeiten. Dazu habe ich mir von Olimex das Board P28 gekauft zusammen mit einem Atmega8 und dem AVRISP MK2 USB Programmierer. Alles soweit schön und gut. Das Programmieren funktioniert. Jedoch funktionieren nur die Programme, die auf der Olimex Homepage als Beispiel zu finden sind. Sobald ich einen Quell-C-Text herauskopiere, in ein eigenes Projekt einfüge, kompiliere und versuche zu flashen, geht es nicht mehr. Das BlinkingLed Programm zB sorgt nur dafür, dass die LED dauerleuchtet, aber nicht blinkt. Der Atmega8 wird mit einem 8MHz Quarz getaktet. Ich benutze AVR Studio um zu programmieren und zu flashen, neueste Version. WinAVR ist auch frisch installiert. Ich habe schon vermutet, dass die Makefile evtl nicht passt, die AVR Studio kreiert. Allerdings weiß ich nicht welche Einstellungen ich noch tätigen soll, abgesehen von "Device" und "Frequency" unter Project>Config. Options. Sind sonst noch wichtige Einstellungen vorzunehmen? Im Anhang das Makefile von AVR Studio. Bitte gebt bescheid wenn ich das Makefile von Olimex auch posten soll. Vielen Dank im Voraus! Thomas
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.