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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.