Timer 2 Problem ATmega640

Gast #2766057
Lesenswert?
• ▲
▼
Hallo,

ich versuche schon seit einiger Zeit meinen 2. Timer zum laufen zu 
kriegen, aber irgendwie will er einfach nicht. Das Programm lief vorher 
schon auf dem Atmega64 und ich will es einfach nur so anpassen dass es 
auf dem Atmega640 läuft. Beim starten des Programms hängt es sich jedoch 
einfach auf.
1
void Interrupt_Timer2_Konfig(void)
2
{
3
bit_setzen(TCCR2B,CS22);
4
bit_setzen(TCCR2B,CS21);
5
bit_loeschen(TCCR2B,CS20);
6

7
bit_setzen(TCCR2A,WGM21);
8
bit_loeschen(TCCR2A,WGM20);
9
bit_loeschen(TCCR2B,WGM22);
10

11
bit_setzen(TIMSK2,OCIE2A);
12

13
OCR2A = 62;
14
}
15

16
ISR (TIMER2_COMPA_vect)
17
{
18
.
19
.
20
.
21
}

Infos:
Atmega640
Fclock = 16 MHz
Timer 1 und 3 auch im Einsatz


Schonmal Vielen Dank für Eure Hilfe

Chris
Gast #2766409
Lesenswert?
• ▲
▼
Hi

>die Idee hatte ich auch schon aber wenn ich die rausnehme klappt es
>trotzdem nicht :/

Das passt aber nicht zu deiner Aussage:

>Ja eigentlich schon, sobald ich das OCIE2A bit nicht setze funktioniert
>alles einwandfrei.

Ohne Interruptroutine, aber mit gesetztem OCIE2A-Bit geht natürlich 
nichts. Was machst du denn in deiner Interruptroutine?

MfG Spess
Gast #2766742
Lesenswert?
• ▲
▼
>Ohne Interruptroutine, aber mit gesetztem OCIE2A-Bit geht natürlich
>nichts. Was machst du denn in deiner Interruptroutine?

Irgendwie riecht doch alles danach das das Programm für den
falschen Controller übersetzt wurde;)
Moderator Persönliche Seite #2766756
Lesenswert?
• ▲
▼
Vielleicht gibst du uns ja compilierfähigen Code.

Die Steuerregister bitweise einzeln zu setzen hat übrigens nicht viel
Sinn.  Sinnvoller ist es dort, sie komplett zu setzen:
1
TCCR2B = _BV(WGM22) | _BV(CS22) | _BV(CS21);
2
TCCR2A = _BV(WGM21) | _BV(WGM20);

Chris schrieb:
> Das Programm lief vorher
> schon auf dem Atmega64 und ich will es einfach nur so anpassen dass es
> auf dem Atmega640 läuft.

Du hast aber dran gedacht, dass der Vorteiler von T/C2 auf dem
ATmega640 andere Einstellungen hat als der des T/C2 auf dem ATmega64,
ja?  (Das hängt damit zusammen, dass T/C2 hier derjenige ist, der
asynchron vom 32-kHz-Quarz betrieben werden kann, das war beim 64er
der T/C0.)

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.