Hallo,
Ich bin noch ein ziemlicher Neuling in diesem Gebiet, mir hat jetzt auch
kein anderer Beitrag aus dem Froum weitergeholfen, deshalb frage ich nun
endlich.
Ich arbeite ein wenigs das AVR-GCC-Tutorial hier durch, und wollte es
nun hinbekommen,dass meine LED bis 9 zählen im sekunden abstand. Mein
Quellcode dazu:
1 | #include <avr/io.h>
|
2 | #define Byte unsigned char
|
3 |
|
4 | void delay_ms(int ms) ;
|
5 |
|
6 | int main(void)
|
7 | {
|
8 | DDRB=0xFF;
|
9 | Byte zahl=0;
|
10 |
|
11 | while(1) {
|
12 | while (zahl<10) {
|
13 | PORTB = 0xFF-zahl;
|
14 | zahl++;
|
15 | delay_ms(1000);
|
16 | }
|
17 | }
|
18 | return 0;
|
19 | }
|
20 |
|
21 | void delay_ms(int ms) {
|
22 |
|
23 | TCCR0B |= (1<<CS01) | (1<<CS00) ;
|
24 | int i ;
|
25 | for(i=0; i<ms; i++) {
|
26 |
|
27 | while(TCNT0<156) ;
|
28 | TCNT0=0;
|
29 | }
|
30 | TCCR0B=0;
|
31 | }
|
Leider brauche ich aber für eine sekunde ca. 10s. Also anders gesagt,
ich muss davon ausgehen, dass ich nur einen CPU Core von 1MHz habe,
damit ich eine sekunde rausbekommen, bei meinem Quellcode.
Kann mir jemand vielleicht sagen, woran es liegt?