Hallo ich verfolge nun seit wochen dieses Forum und versuche immer
wieder mit dem Timer zu arbeiten. ich muss dazu sagen das ich nicht der
talentierteste bin und sicher oft sehr umständliche wege wähle. nun
jedoch wende ich mich in der Hoffnung an euch das ihr weiterhelfen könnt
und vorallem wollt.
zu meinen Problemen: schon beim start bleibt er am anfang der Main
funktion hängen und will gar nicht in while schleifen, gelinde gesagt
befürchte ich das dies nicht das einzige problem ist (mal abgesehen
davon das es vielleicht etwas umständlich ist) vielleicht mag mir da
jemand helfen.
1 | //Includedateien
|
2 | #include <avr/io.h>
|
3 | #include <avr/interrupt.h>
|
4 | #include <stdint.h>
|
5 |
|
6 | //Variablen für die Zeit
|
7 | unsigned int ms=0;
|
8 | unsigned int s=0;
|
9 | unsigned int hs=0;
|
10 |
|
11 | int main(void)
|
12 | {
|
13 |
|
14 | while(1)
|
15 | {
|
16 |
|
17 | if(PINA & 1<<PINA0)
|
18 | {
|
19 |
|
20 | TCNT0=0x00;
|
21 | OCR0=0xFF;
|
22 |
|
23 | TIMSK=(1<<TOIE0);
|
24 |
|
25 | TCCR0|=((1<<CS01));
|
26 |
|
27 | sei();
|
28 |
|
29 |
|
30 | while(1)
|
31 | {
|
32 | if(PINA & 1<<PINA5)
|
33 | {
|
34 | TCCR0=(0<<CS00);
|
35 | DDRA=0xFF;
|
36 | PORTA=s;
|
37 |
|
38 | while(1)
|
39 | {
|
40 | if (PINA & 1<<PINA6)
|
41 | {
|
42 | PORTA=0x00;
|
43 | if(ms<100)
|
44 | { hs=0; }
|
45 |
|
46 | else if(100<=ms && ms<200)
|
47 | { hs=1; }
|
48 |
|
49 | else if(200<=ms && ms<300)
|
50 | { hs=2; }
|
51 |
|
52 | else if(300<=ms && ms<400)
|
53 | { hs=3; }
|
54 |
|
55 | else if(400<=ms && ms<500)
|
56 | { hs=4; }
|
57 |
|
58 | else if(500<=ms && ms<600)
|
59 | { hs=5; }
|
60 |
|
61 | else if(600<=ms && ms<700)
|
62 | { hs=6; }
|
63 |
|
64 | else if(700<=ms && ms<800)
|
65 | { hs=7; }
|
66 |
|
67 | else if(800<=ms && ms<900)
|
68 | { hs=8; }
|
69 |
|
70 | else
|
71 | { hs=9; }
|
72 |
|
73 | PORTA=hs;
|
74 |
|
75 | while(1)
|
76 | {
|
77 | if (PINA & 1<<PINA7)
|
78 | {
|
79 | ms=0;
|
80 | s=0;
|
81 | PORTA=0x00;
|
82 | break;
|
83 | }
|
84 | }
|
85 | }
|
86 | }
|
87 | }
|
88 |
|
89 | }
|
90 |
|
91 | }
|
92 |
|
93 | }
|
94 | }
|
95 |
|
96 | //#ifndef TIMER0_OVF_vect
|
97 | // Für ältere WinAVR Versionen z.B. WinAVR-20071221
|
98 | //#define TIMER0_OVF_vect TIMER0_OVF0_vect
|
99 | //#endif
|
100 |
|
101 |
|
102 | ISR (TIMER0_OVP_vect)
|
103 | {
|
104 | ms++;
|
105 |
|
106 | if(ms == 1000)
|
107 | {
|
108 | s++;
|
109 | ms = 0;
|
110 | }
|
111 |
|
112 | }
|