Problem mit main und Timer1, ATMEG8

Gast #2173670
Lesenswert?
• ▲
▼
Guten Abend,

Habe folgendes Problem. Habe ein Programm geschrieben wo der Timer1 des 
ATMEGA8 einen Port toggeln soll, und zwar mit verschiedenen 
Impulslängen.
Das funktioniert auch alles soweit bestens, außer dass in meiner main 
die Werte nicht übernommen werden, wenn ich z.B. die Pulslänge während 
der Laufzeit ändern will. Hier mal mein Code, kann mir einer sagen was 
ich falsch mache???
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <avr/interrupt.h>
4

5
#define STANDARD 60535;
6

7
unsigned short LOAD;
8

9

10
int main(void) 
11
{
12
  DDRD = 0x00;
13
  PORTD = 0xFF;
14

15
  DDRC |= (1<<PC0);
16
  PORTC |= (1<<PC0);
17

18
  TCCR1B = 0x02;
19
  TIMSK = 0x04;
20
  LOAD = 50000;
21

22
  TCNT1 = LOAD;
23

24
  sei();
25

26

27
  while(1)
28
  {
29
    LOAD = 10000;
30
    _delay_ms(1000);
31
    LOAD = 20000;
32
    _delay_ms(1000);
33
  }  
34

35
return 0;
36
}
37

38

39

40
ISR(TIMER1_OVF_vect)
41
{
42
  if(PORTC & 0x01)
43
    TCNT1 = STANDARD;
44
  if(!(PORTC & 0x01))
45
    TCNT1 = LOAD;
46

47
  PORTC ^= (1<<PC0);
48

49
}
#2173709
Lesenswert?
• ▲
▼
AUsserdem benutzt man für sowas den CTC Modus und nicht dieses 
bescheuerte Timer-Vorladen.

Dann hast du überhaupt keine Arbeit sondern weist einfach nur deinen 
neuen Wert dem Vertgleichsregister zu. Die Hardware kümmert sich dann 
selber darum, dass der Vergleichswert erst zum richtigen Zeitpunkt 
übernommen wird.
Gast #2173732
Lesenswert?
• ▲
▼
@Tueftler
Danke du bist ein Schatz, es geht:)
Was genau bewirkt denn dieses volatile?

@Karl Heinz Buchegger
Ja das hatte ich auch danach vor, wollte es aber einmal so versuchen, 
muss ma wieder nen bisschen in die Timer reinkommen:)

Also vielen Dank euch beiden!

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.