kleines Timerproblem

OP #690146
Lesenswert?
• ▲
▼
Hallo Zusammen,
ich habe ein kleines Timerproblem.

Zur Steuerung eines Motors über eine Fernbedienung verwende ich für die 
Fernbedienung die RC5 Bibliothek von Peter.

Damit der Motor ohne ruckeln läuft, möchte ich einen zweiten Timer 
verwenden, der nach einer einstellbaren Zeit den Motor abschaltet, falls 
die gleiche Taste  nicht wiederholt gesendet wird.

Leider schaffe ich es nicht, den Overflow des zweiten Timers zu 
produzieren.

Alle Routinen laufen einzeln ohne Probleme, lediglich der Overflow für 
den zweiten Timer wird nicht ausgelöst.

Hier mein Codeausschnitt:
1
void restartTimer() {
2
  timerHighByte = 0;                        
3
  TCNT1 = 0;                                
4
  TCCR1B |= 1<<CS12;                   
5
}
6

7
void stopTimer() {
8
  TCCR1B  &= ~(1 << CS12);
9
}
10

11

12
void MotorOff(void)
13
{
14
}
15

16
void motor_left_on( void )
17
{
18
  stopTimer();            
19
  if ( MotorRightIsOn == MOTOR_ON )   
20
  {
21
    MotorOff();
22
  }
23
  if ( MotorLeftIsOn != MOTOR_ON )
24
  {
25
    MotorLeftOn();
26
  }
27
  restartTimer();
28
}
29

30
SIGNAL (SIG_OVERFLOW1) 
31
{
32
  timerHighByte++;
33
  if ( timerHighByte >= MOTOR_ON_TIME )
34
  {
35
    MotorOff();
36
  }
37
}
38

39
void main(void)
40
{
41
  // von Peter für RC5 funktioniert!!!
42
  TCCR0 = 1<<CS02;               //divide by 256
43
  // Meiner, funktioniert nicht!!!
44
  TCCR1B = 1<<CS12;              //divide by 256
45
  TIMSK = 1<<TOIE0^1<<TOIE1;           //enable timer interrupt
46
  
47
  sei();
48
  motor_left_on();
49
}

Gruss und Danke für jede Hilfe

Frank

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