Forum: Mikrocontroller und Digitale Elektronik Mein Fast PWM Mode 7 geht nicht


von Timo (timobpi)


Lesenswert?

Was mache ich falsch? Ich möchte mein TOP über OCR0A steuern aber wenn 
ich den Wert für OCR0A ändere, ändert sich die PWM-Frequenz nicht und 
ich habe hier auch kein duty von 1/3. Bin für jeden Tipp dankbar.
1
  DDRB |= (1 << PB1); // output 1 (OC0B)
2
  
3
  TCCR0A |= (1 << WGM00) | (1 << WGM01); // fast pwm
4
  TCCR0A |= (1 << WGM02); // set top by OCRA
5
  
6
  TCCR0A |= (1 << COM0B1); // enable output channel b
7
  TCCR0A |= (1 << COM0B0); // invert channel b
8
  
9
  TCCR0B |= (1 << CS00); // scale
10
11
  OCR0A = 30;
12
  OCR0B = 10;
13
  
14
  while (1)
15
  {
16
    _delay_ms(10);
17
  }

: Verschoben durch Moderator
von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

auf welchem der vielen AVR-Typen läßt Du dieses Programm laufen?
Man könnte sonst im passenden Datenblatt nachsehen, woran es fehlen 
könnte.

mfg

von Pepe (Gast)


Lesenswert?

Timo schrieb:
>   TCCR0A |= (1 << WGM00) | (1 << WGM01); // fast pwm

Das ist mode 3, nicht mode7.

von Pepe (Gast)


Lesenswert?

Timo schrieb:
> TCCR0A |= (1 << WGM02); // set top by OCRA

versuch TCCR0B |= (1 << WGM02);

Und, falls arduino, counter0 wird intern gebraucht. Nimm couter2.

von Timo (timobpi)


Lesenswert?

Hi Christian,
das ist der tiny13a, sorry.
Ich habe diese Vorgehensweise eigentlich versucht anhand des 
Datenblattes zu erarbeiten. Möglicherweise habe ich da eine der Tabellen 
auch falsch verstanden.

von Timo (timobpi)


Lesenswert?

Hi Pepe,
mit der nachfolgenden Zeile 4
TCCR0A |= (1 << WGM02);
müsste es dann aber doch Mode 7 sein oder?
Gruß Timo

von Georg M. (g_m)


Lesenswert?

1
TCCR0A = 1<<COM0B1 | 1<<COM0B0 | 1<<WGM01 | 1<<WGM00;
2
TCCR0B = 1<<WGM02 | 1<<CS00;

von Christian S. (roehrenvorheizer)


Lesenswert?

Timo schrieb:
> Möglicherweise habe ich da eine der Tabellen
> auch falsch verstanden.

Das passiert doch sehr leicht.


mfg

: Bearbeitet durch User
Beitrag #7179003 wurde von einem Moderator gelöscht.
von Zeh Vier (Gast)


Lesenswert?

Boy schrieb im Beitrag #7179003:
> WGM02 ist im TCCR0B register
> NICHT im TCCR0A register.
>
> Das haben dir jetzt 4 leute gesagt. Dussel.

...aber das merkt der Drecks-C-Compiler ja nicht!

Ein vernünftiger Compiler bemerkt das anhand der Definitionsdatei des 
benutzten Kontrollers.

Beitrag #7179165 wurde von einem Moderator gelöscht.
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.