16-bit Timer ATmega8515

Gast #3151044
Lesenswert?

Hallo,
ich habe seit kurzem ein STK500 und arbeite mich durchs AVR-GCC-Tutorial 
durch und bis dato gings auch ganz gut. Am 16-bit Timer bin ich nun 
allerdings hängen geblieben und deshalb wollte ich hier mal fragen ob 
ihr mal kurz über meinen Code schauen könnt (Im Anhang).
Im Prinzip wollte ich nur den Timer setzen und ihn mit meinen 
vorgegebenen Werten die ich ins Output Compare Register geschrieben habe 
vergleichen. Im Falle eines "Matches" sollte dann die ISR aufgerufen 
werden und abwechselnd alle ports von C high und low schalten.
kompilieren tut er ohne probleme, aber sehen tu ich nichts (an port C 
hängen die LEDs vom STK500)

Ich wär sehr dankbar wenn da jemand mal rüberschauen könnte, bin noch 
nicht lang dabei.

MfG,
Tobi
Angehängte Dateien:
Gast #3151102
Lesenswert?

Hallo,
die soll dafür sorgen das beim Aufruf der ISR einmal die LED´s an und 
beim nächsten mal wieder ausgeschaltet werden. Je nachdem ob status=0 
oder 1 ist wird das if oder das else aufgerufen. So jedenfalls der 
Grundgedanke.
Gast #3151187
Lesenswert?

Tschuldige, deinen Beitrag habe ich im Eifer des Gefechts wohl 
übersehen. das (1<<CS11) ist mir wohl "rausgerutsch", habe ich gerade 
mal geändert. Ist aber immernoch alles duster...
Wenn ich mal den "Compare"-Kram weglasse und die Ausgänge per 
Overflow-ISR hin und her-schalten lasse funktioniert das ganze 
komischerweise...
#3151211
Lesenswert?

1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
volatile uint8_t toggle = 0;
5

6
int main(void)
7
{
8
   DDRC = 0xFF;   //äquivalent zu deiner Schreibweise
9
   OCRIA = 3599;  //ebenfalls
10

11
   TCCR1B = (1<<CS12)|(1<<CS10);  //Prescaler 1024
12
   TIMSK = (1<<OCIE1A);           //Compare Interrupt Enable
13
   sei();                         //Globale Interrupt Enable
14
   
15
  for(;;)
16
  {
17
  }
18
}
19

20
ISR(TIMER1_COMPA_vect)
21
{
22
 if(toggle)
23
 {
24
   PORTC = 0xFF;
25
   toggle = 0;
26
 }
27
 else
28
 {
29
   PORTC = 0x00;
30
   toggle = 1;
31
 }
32
}

Funktioniert bei mir einwandfrei.

PORTC Toggelt mit 1/(Taktfrequenz/1024/3599) Sekunden.

Gruss
Gast #3151313
Lesenswert?

Hi

>

Habs gerade mal compiliert und rauf-geflasht, gleiches Bild. Alles
>duster...

Dann überprüfe mal oder richtige Controller eingestellt ist, un ob du 
überhaupt das richtige Programm flashst.

MfG Spess
Gast #3151329
Lesenswert?

Ooh man ich glaubs nicht...Im voraus schonmal danke für eure Geduld mit 
mir! Es lag daran das AVRStudio tatsächlich nicht automatisch das 
Programm flasht was ich zuvor programmiert habe, sondern das was ich 
anfangs mal ausgewählt habe... Liegt nahe, wusste ich aber nicht. Naja, 
jetzt funktioniert es, danke euch allen!

MfG
Gast #3151500
Lesenswert?

Naja, eventuell merke ichs mir ja jetzt besser :)
Eine Frage habe ich noch, ich wollte nicht unbedingt einen neuen Thread 
deshalb aufmachen:

Ich wollte nun mal die Input Capture Funktion des Timers benutzen, jetzt 
steht im Datenblatt das PE0 als alternative Funktion auch als ICP dient. 
Da steht auch etwas von Override-Signals aber da steig ich nicht durch 
und das Tutorial hilft da irgendwie nicht. Was genau muss ich denn 
anstellen um PE0 als ICP verwenden zu können?

MfG

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