Forum: Mikrocontroller und Digitale Elektronik CTC Pin togglen - bekomme nur ~64Hz aus 8Mhz Takt


von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Hi,

ich habe mehrere TLC540 AD-Wandler an einem Mega16 hängen. Die hab ich 
zum testen bisher mit Bit-Banging-SPI ausgelesen.
System-Clock sowie IO-Clock vom ADC hingen zusammen und hab ich "zu 
Fuss" getoggelt wie ich es brauchte.
Nun kann der System-Clock bis zu 4Mhz sein, muss aber mehr als 2,1Mhz 
sein (IO-Clock max. 2,1Mhz).

Ich wollte den System-Clock jetzt per CTC an OC1A erzeugen lassen, nur 
bekomme ich da laut Oszi nur ~64hz raus.

Der Mega16 läuft mit internem 8Mhz Takt.

Hier mein Code:
1
int main (void) {
2
  DDRD |=(1<<PD5);
3
  TCCR1A |=(1<<COM1A0); // OC1A toggle on compare match
4
  TCCR1A |=(1<<WGM12);  // CTC mode 4
5
  TCCR1B |=(1<<CS10);  // no prescaling
6
  OCR1A=0;
7
  sei();
8
9
  for(;;);
10
}

Ich habe schon geschaut ob vielleicht eine ISR dazu gehört und er 
deshalb dauernd Reset macht, konnte aber nichts passendes finden...

von Volkmar D. (volkmar)


Lesenswert?

Ich glaube, Du hast ein Register vertauscht. WGM12 befindet sich in 
TCCR1B und nicht in TCCR1A. Damit hast Du den Normal-Mode aktiv (und 
nicht CTC).

Gruß
Volkmar

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

>Ich glaube, Du hast ein Register vertauscht
Ah super, vielen Dank! Das wars.

Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.