Gast
#2725856
Hallo, Wie ich schon in meinem anderen Beitrag geschrieben habe habe ich mein ATmega 8 durch einen ATmega 328 ersetzt. Unter anderen Problemen die ich habe ist die delay Funktion die bei ATmega 8 funktioniert hat und bei ATmega 328 leider nicht. Was kann die Ursache sein? Kann ich die Funktion durch eine Warte Routine oder einen Timer ersetzen? (Von Warte Routinen oder Timer habe ich noch keine Ahnung! Für Anregungen bin ich sehr dankbar. Mit freundlichen Grüßen Paul Auszug aus dem Programm: #define F_CPU 3686400 // Taktferquenz des myAVR-Boards #define BAUD 9600 #include <avr\io.h> // AVR Register und Konstantendefinitionen #include <avr\delay.h> // Bibliothek mit Warteroutinen #include <avr\interrupt.h> while(1) { if (WS) an_WA; else aus_WA; if (start_BEETE) PORTC |= 0b00100000; // Markise öffnen if (start_HECKE) PORTC &= 0b11011111; // Markise schließen if (start_RASEN) { an_MA; // Anzeige Markise ZU _delay_ms(3000); // Warten } aus_MA; } Noch eine kurze Erklärung: WS, an_WA usw. habe ich natürlich entsprechen definiert. Was mach das? Nach betätigen WS, WA schaltet ein. Nach betätigen „start_RASEN“, „MA“ schaltet ein und geht nicht mehr aus. Ganzes Programm hängt (Nach Ablauf der delay Funktion müsste wieder „MA“ ausschalten und alles andre funktionieren.


