Natürlich bringt ein zusätzlicher richtig platzierter Kondensator etwas. Es ist nicht so das seine Funktion durch einen schlecht platzierten wieder aufgehoben wird.
Natürlich bringt ein zusätzlicher richtig platzierter Kondensator etwas. Es ist nicht so das seine Funktion durch einen schlecht platzierten wieder aufgehoben wird.
Noch mal eine Frage zu dem Quarz:
Ich hae deine Fuse-bits gestzt, aber wenn ich jetzt einen 16MHz-Quarz einsetze blinken die LEDs die normalerweise alle 100ms blinkensolten erheblich schneller. was kann ich dagegen machen?
Nichts existiert durch sich allein!
Bild hier
Die richtigen Fuse Bit´s setzen?
Gruß Richard
Ich denke nicht das es etwas mit den Fuse Bits zu tun hat.
Zeig mal den Code.
Hier ist der Code:
Code:#ifndef MCU #define MCU atmega32 #endif #ifndef F_CPU #define F_CPU 16000000UL #endif #include <avr/io.h> #include <util/delay.h> uint8_t Geschwindigkeit = 100; uint8_t i = 0; uint8_t v = 0; void run (void) { while (i < 20) { PORTC = 0b00000001; _delay_ms(Geschwindigkeit); PORTC = 0b00000010; _delay_ms(Geschwindigkeit); PORTC = 0b00000100; _delay_ms(Geschwindigkeit); PORTC = 0b00001000; _delay_ms(Geschwindigkeit); PORTC = 0b00010000; _delay_ms(Geschwindigkeit); PORTC = 0b00100000; _delay_ms(Geschwindigkeit); PORTC = 0b01000000; _delay_ms(Geschwindigkeit); PORTC = 0b10000000; _delay_ms(Geschwindigkeit); i++; } } void crash (void) {while (v < 20) { PORTC = 0b10000001; _delay_ms(Geschwindigkeit); PORTC = 0b01000010; _delay_ms(Geschwindigkeit); PORTC = 0b00100100; _delay_ms(Geschwindigkeit); PORTC = 0b00011000; _delay_ms(Geschwindigkeit); PORTC = 0b00100100; _delay_ms(Geschwindigkeit); PORTC = 0b01000010; _delay_ms(Geschwindigkeit); PORTC = 0b10000001; _delay_ms(Geschwindigkeit); PORTC = 0b00000000; _delay_ms(Geschwindigkeit); v++; } } int main(void) { DDRC = 0b11111111; PORTC = 0b11111111; _delay_ms(2000); while (v < 9999999) { run(); crash(); v++; } }
Nichts existiert durch sich allein!
Bild hier
The maximal possible delay is 262.14 ms / F_CPU in MHz
When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms,
Es dürfen auch keine Variablen für die Zeit eingesetzt werden, bei dir hier allerdings kein Problem, da der Wert der Variablen bereits zur Kompilezeit bekannt ist.
Ich habe jetzt 262.14/16 gerechnet. Das Ergebnis war 16.38375. Heißt das, dass ich, um auf 100ms zu kommen, ca. 6 mal die delay-Funktion aufrufen mass?
Nichts existiert durch sich allein!
Bild hier
Wenn du 10 mal 10ms aufrufst, am besten in einer Schleife, dann hast du 100ms.
Ein Timer ist aber die bessere Lösung
Ich habe noch nicht vil mit timern gearbeitet. Aber im Prinzip müsste man den Timer starten können und dann den Status abfragn können um eine Aktion auszulösen?!
Nichts existiert durch sich allein!
Bild hier
Lesezeichen