Wieder mal Ein Timer (atmega 32 stoppuhr)

Gast #2078004
Lesenswert?

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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren