Hallo zusammen,
Aufgrund Probleme mit der USART Kommunikation (empfange nichts) habe ich
die AVR Checkliste (unter Artikel) konsultiert. Unter UART/USART steht:
"Um zu prüfen, ob der externe Quarz auch wirklich verwendet wird, kann
man mittels _delay_ms() einfach mal eine LED im Sekundentakt blinken
lassen. Den Unterschied zwischen Quarz und internem RC-Oszillator kann
man bei grösseren Frequenzunterschieden leicht sehen. [...]"
Also schrieb ich ein C Programm, um ein blinkendes LED zu erzielen:
1 | #define F_CPU 1000000UL // 1 MHz
|
2 | #include <avr/io.h>
|
3 | #include <util/delay.h>
|
4 |
|
5 |
|
6 | int main (void) {
|
7 |
|
8 | DDRB = 0xff;
|
9 |
|
10 | while(1){
|
11 | PORTB = 0xFE;
|
12 | _delay_ms(200);
|
13 | PORTB = 0xFF;
|
14 | _delay_ms(200);
|
15 | }
|
16 | return 0;
|
17 | }
|
Ich benutze den Atmega8515L mit dem STK500 über AVR Studio4. Für den
internen RC Oscillator habe ich die SUT_CKSEL fuses auf "int. RC Osc.
1MHz; Start-up time: 6CK+64ms" gesetzt.
Lass ich das Programm laufen, blink es eher langsam.
Stecke ich einen 4MHz Quarz auf das STK500 board (OSCSEL Jumper auf 2,3)
und stelle die Fuses auf "Ext. Crystal/Resonator Medium Freq.; Start-up
time: 1K CK+64 ms" blink es anschliessend schneller (Programm nicht neu
geflasht).
Aber genauso schneller blinkt es auch, wenn ich den Quarz vom board
wegnehme. In dem Fall wird der externe Quarz gar nicht verwendet. Aber
trotzdem blinkt es schneller.
Wo muss ich noch Einstellungen machen, damit mein Quarz verwendet wird?
Der Clock Generator Wert von 3.686MHz unter "HW Settings" bleibt in
jedem Fall immer der selbe (sollte wahrscheinlich auch nicht so sein).
Wäre um hilfreiche Tipps sehr froh! Stehe eher am Anfang meiner
Mikrocontroller-Karriere ;-)
Danke im voraus.