Hallo!
Also ich bin etwas verwirrt.. Ich verwende ein STK500 mit einem
ATMEGA88.
Jumper scheinen richtig gesetzt, da das Programm bei gesetzem 4MHz-Quarz
2.5 mal langsamer abläuft als bei 10MHz-Quarz. Ohne Quarz läuft nichts.
Es wird also der gesteckte Quarz verwendet.
Mit meinen 20MHz-Quarzen läuft der ATMEGA88 nicht, aber das ist momentan
nicht schlimm. (Reichelt G13-704 20,0000-HC18)
Zum Problem:
1 | #define F_CPU 10000000UL //Takt in Hertz
|
2 |
|
3 | #include <avr/io.h>
|
4 | #include <avr/delay.h>
|
5 |
|
6 | int main()
|
7 | {
|
8 | DDRD = 0xFF; // Port D komplett Ausgang
|
9 |
|
10 | while(1)
|
11 | {
|
12 | PORTD=0xFF; // Ausgang high
|
13 | _delay_us(10);
|
14 | PORTD=0x00; // Ausgang low
|
15 | _delay_us(10);
|
16 | }
|
17 | }
|
Dies ergibt auf dem Oszilloskop eine Verzögerung von 76µs und nicht die
gewünschten 10µs.
Wenn ich F_CPU nun durch 7.6 dividiere, erhalte ich exakt die
gewünschten 10µs.
Das ganz betrifft auch die Funktion _delay_ms();
Kann mir jemand verraten was hier schief läuft??