Hi Ich mache gerade meine ersten Versuche mit den Atmels und der C-Programmierung. Hier mal mein Testcode: #include <avr/io.h> #include <stdint.h> #include <util/delay.h> int main(void) { DDRA = 0xff; PORTA = 0xff; DDRB = 0xff; PORTB = 0xff; DDRC = 0xff; PORTC = 0xff; DDRD = 0xff; PORTD = 0xff; _delay_ms(1000); PORTA=0; PORTB=0; PORTC=0; PORTD=0; _delay_ms(1000); PORTA=0xff; PORTB=0xff; PORTC=0xff; PORTD=0xff; _delay_ms(1000); PORTA=0; PORTB=0; PORTC=0; PORTD=0; return 1; } Das ganze ergibt aber keine Sekundenpausen, sondern nur eine sehr kurze Unterbrechung an den Ausgängen. Zum Thema F_CPU siehe Dateianhang. Was mach ich noch falsch? Ciao Tobias
_delay_ms() kann nur ziemlich kurze Zeiten verzögern. Den genauen Wert schlag mal selber in der lib-Doku nach. Wenn du mehr Zeit haben willst, schreib ne Funktion, die _delay_ms in ner Schleife mehrmals aufruft...
Damit hatte ich (auch anfänger) auch schon öfter Probleme. Das Größte was anscheinend mit einer einfachen Delay Funktion möglich ist, sind 100ms. Mehr habe ich (messtechnisch nachgeschaut) auch noch nicht hinbekommen. Gruß Thomas
Wieviel man mit den _delay-Funktionen maximal verzögern kann, hängt von der Taktfrequenz ab. Bei _delay_us() sind es 768µs/(f_CPU in MHz), bei _delay_ms() 262,14ms/(f_CPU in MHz). Steht in der Header-Datei delay.h.
Hi Danke, so gehts! Hätte nicht gedacht, dass die Funktion schon bei ca. 30 ms ausgereizt ist! Ciao Tobias
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.