ATtiny85 PWM an PB3 funktioniert einfach nicht!

Gast #4514525
Lesenswert?

Moin!

Ich werde langsam aber sicher bekloppt!

Ich versuche seit einigen Stunden bei einem ATtiny85 an PB3 ein PWM 
Signal zu erzeugen...

Kurz und knapp zu meiner Einrichtung, von der ich glaube, dass sie doch 
korrekt sein müsste:

//config timer1 for PWM
//PWM-mode | on match: Clear the OC1B output line
GTCCR = (1<<PWM1B) | (1<<COM1B1)|(0<<COM1B0);
//prescaler for timer 1=8
TCCR1 = (1<<CS12)|(0<<CS11)|(0<<CS10);
//set value in OCR1B
OCR1B = 128;
DDRB = (1<<PB3);

Warum passiert am PB3 einfach mal NICHTS?! was habe ich übersehen?
Gast #4514594
Lesenswert?

1
• Bit 6 – PWM1B: Pulse Width Modulator B Enable
2
When set (one) this bit enables PWM mode based on comparator OCR1B in Timer/Counter1 and the counter
3
value is reset to $00 in the CPU clock cycle after a compare match with OCR1C register value.


und

1
In Normal mode, the COM1B1 and COM1B0 control bits determine the output pin actions that affect pin PB4
2
(OC1B) as described in Table 12-6. Note that OC1B is not connected in normal mode.


und du clearst den Pin und toogle... ja das macht er halt einmal auf 
low... und dann? bleibt er low... und dann? Bleibt er immernoch low... 
um da ne PWM zu bekommen musst du ihn toogln.

Aber wie gesagt, du musst auch - bei deiner Einstellung den OCR1C setzen 
und den PinB4 nutzen.
Gast #4514599
Lesenswert?

ok, das sehe ich ein... habe GTCCR angepasst (wobei ich alle modis schon 
durch habe) ...

//config timer1 for PWM
//PWM-mode | on match: Clear the OC1B output line
GTCCR = (1<<PWM1B) | (0<<COM1B1)|(1<<COM1B0);
//prescaler for timer 1=8
TCCR1 = (1<<CS12)|(0<<CS11)|(0<<CS10);
//set value in OCR1B
OCR1B = 128;
DDRB = (1<<PB3);

es funktioniert dennoch nicht... :(
Gast #4514725
Lesenswert?

so, klammer wieder zusammengebastelt... ALLE kabel waren abgebrochen und 
nur noch vom schrumpfschlauch sporadisch auf kontakt.

nebenbei habe ich nun auf PB4 umgestellt.

DDRB = (1<<PB4);

GTCCR = (1<<PWM1B) | (0<<COM1B1)|(1<<COM1B0);
TCCR1 =(1<<CS12)|(0<<CS11)|(0<<CS10);

OCR1B = 125;
OCR1C = 255;

naja, es geht trotzdem nix!

verstehe ich es richtig, dass an PB3/4 kein fast pwm möglich ist???
Gast #4514811
Lesenswert?

Hi

>verstehe ich es richtig, dass an PB3/4 kein fast pwm möglich ist???

Lies endlich das gottverdammte Datenblatt.

Mit GTCCR funtioniert nur etwas, wenn sich der ATTiny im ATtiny15 
Compatibility Mode befindet,

MfG Spess
Gast #4514847
Lesenswert?

@ spess53: ruuuuuhig... es ist sonntag! xD ich versuche datenblätter 
immer komplett, bzw kapitel für kapitel zu lesen. kapitel 13 habe ich 
bis jetzt ausgelassen, da es für mich uninteressant erschien. drucke es 
aber gleich aus und lege es unter mein kopfkissen ;).

so, habs jetzt einfach wieder an BP0. das wollte ich zwar vermeiden, 
aber hier läufts wenigstens ohne probleme.

für alle dies interessiert...

//Set PB0 output
DDRB = (1<<PB0);
//Clear OC0A/OC0B on Compare Match, set OC0A/OC0B at BOTTOM 
(non-inverting mode) (DS: 11-3) | Non-inverting, MODE 3 (DS: 11-5).
TCCR0A = (0<<COM0A1)|(2<<COM0A0)|(0<<WGM01)|(3<<WGM00);
//no prescaling (DS: 11-6)
TCCR0B = (0<<CS02)|(0<<CS01)|(1<<CS00);
//Output Compare Register A (DS: 11.9.5)
OCR0A = 100;

würdest du mir denn auch so kurz verraten, warum es an PB3/PB4 nicht so 
fluppt?
Gast #4514954
Lesenswert?

ähm... was is das denn??? ...

da ich den tiny recht langsam laufen lassen wollte, hatte ich den 
attiny15 comp. mode wohl "aus versehen" schon ausgewählt. laut avr 
studio hatte ich SUT_CKSEL = INTRCOSC_4MHZ_6CK_14CK_4MS. im mousover 
text steht halt, dass es der attiny comp. mode ist bei 6.4 MHz -was ich 
ehrlich gesagt aber nicht gelesen hatte und warum steht im drop_down 
menü [...]_4MHZ_[...] ??? naja...

ging es deswegen nicht, oder hätte es so doch funktionieren müssen? 
verträgt es sich nicht mit CKDIV8?

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