www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme Attiny mit PLL PWM


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Julian Baugatz (julinho)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo Forum!

Ich experimentiere mit einem Step-Up-Wandler, der mit einem Attiny 
gesteuert wird. Für die PWM-Erzeugung benutze ich die PLL des Attiny 85 
und 861.
Der Wandler arbeitet auch gut es gibt nur Probleme beim Ausschalten. Der 
PWM Pin bleibt nach dem Ausschalten auf High, was dazu führt, dass mein 
Schalttransistor abraucht.

Start des PWM (Attiny 861):

  PLLCSR = 1<<PLLE;  //PLL einschalten

  while(!(PLLCSR & (1<< PLOCK))); // warten bis PLOCK ==1

  PLLCSR |= 1<<PCKE;    // pll als timer1 source

  TCCR1B = 1<<CS10;          //no prescaler

  TCCR1C = 1<<COM1D1 | 0<<COM1D0 | 1<<PWM1D  ;

  OCR1C =255;

  OCR1D = 150;

Ausschalten:

  TCCR1B = 0;

  TCCR1C = 0;

  PLLCSR=0;

  PORTB &= ~(1<<PB5);   //PWM PIN auf Low

  Sleep:

Das gleiche Problem gabs beim Attin85 auch, deswegen vermute ich, dass 
es am PLL PWM liegt. Vielleicht gibt es ja eine spezielle 
ausschaltprozedur?

Gruss

Autor: spess53 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hi

Was spricht dagegen, den Timer mit den COM-Bits vom Port zu trennen. PB5 
im Portregister vorher auf Null setzen? Oder den Pin einfach als Eingang 
zu setzen?

MfG Spess

Autor: Julian Baugatz (julinho)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
spess53 schrieb:
> Hi
>
> Was spricht dagegen, den Timer mit den COM-Bits vom Port zu trennen.

Das tue ich mit TCCR1C = 0;

> PB5
> im Portregister vorher auf Null setzen? Oder den Pin einfach als Eingang
> zu setzen?

Wenn ich PB5 als Eingang setzte ist immer noch der Pull-Up aktiv, der 
den Schalttransisor immer noch durchschaltet.
Im Moment mache ich ein Reset um den Port wiede auf Low zu bringen.
Das Problem tritt übrigens nicht immer auf, als ob der PWM noch etwas 
nachläuft und dann zufällig auf High oder Low stehenbleibt.

Autor: Hannes Lux (hannes)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Julian Baugatz schrieb:
> Wenn ich PB5 als Eingang setzte ist immer noch der Pull-Up aktiv, der
> den Schalttransisor immer noch durchschaltet.

Und wenn Du PB5 auf L setzt? (cbi portb,pb5)

...

Autor: spess53 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hi

>Wenn ich PB5 als Eingang setzte ist immer noch der Pull-Up aktiv, der
>den Schalttransisor immer noch durchschaltet.

Wozu soll der Pull-Up gut sein?

MfG Spess

Autor: Ben ___ (burning_silicon)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Schaltplan?

Den internen Pullup kann man übrigens auch abschalten. Ich denke aber 
nicht, daß das Dein Problem lösen wird. Den Timer vom Pin wegschalten 
bei einer Pin-Low-Ausgangskonfiguration sollte den Pin sicher und 
schnell nach Masse ziehen.

Ich vermute eher ein Problem im Programm, was den ATTiny zum Absturz 
bringt oder so.

Autor: Julian Baugatz (julinho)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Anbei der Schaltplan.

Das Problem ist,dass  PORTB PIN5 mannchmal" von selbst" auf High geht 
und auch wenn der Pin nur Eingang ist, dann leider immer noch der 
Pull-Up den Transistor schaltet.
Ich habe auch erst ein Software-Bug vermutet und alle Befehle die PORTB 
veränder herausgenommen - ohne Erfolg. Die einzige Lösung war ein Reset.
Das gleiche Problem trat bei unterschiedlichen Tinys und 
unterschiedlicher Firmeware auf, deswegen vermute ich die Ursache im 
PLL.PWM.

Gruss

Autor: Ben ___ (burning_silicon)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Toller Plan. Werte der Bauteile? Was soll der Widerstand R21? 
Gate-Widerstand fehlt, nicht schön bei schnell schaltenden Anwendungen 
weils zum Schwingen neigt. Und dann fehlt ein pull-down-Widerstand (etwa 
10k) von der gemeinsamen Basis der Treiberschaltung zur Masse. Ohne den 
ist mir schleierhaft wie das Ding bei einem Reset und hochohmigem Pin am 
AVR sperren soll wenn es vorher geöffnet war.

Autor: Julian Baugatz (julinho)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
@ben

R21 ist als Strombegrenzung für T3 und T4 gedacht und mit 0 Ohm 
bestückt, der Hinweis mit dem Gatewiderstand ist gut - wie groß sollte 
dieser ungefähr sein?
R20 ist auch 0Ohm.
T3 und T4 sind BC807 bzw. BC817
T7 ist ein IRF7401

Nochmal zu Firmware:
der Kontroller schläft die meist Zeit, wird ab und zu geweckt, macht 
dann einige Sekunden PWM und geht dann wieder schlafen.
Manchmal bleib jedoch der PWM-Pin auf High obwohl er explizit auf Low 
gesetzt wird, mit der folge, dass der Mosfet abraucht.

Autor: Hannes Lux (hannes)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Julian Baugatz schrieb:
> Das Problem ist,dass  PORTB PIN5 mannchmal" von selbst" auf High geht

Das habe ich noch nie erlebt. Du solltest also davon ausgehen, dass Du 
irgendwo anders beim Zugriff auf die anderen Bits des Portb Bit 5 
versehentlich mit beeinflusst.

> ....
> Die einzige Lösung war ein Reset.

Nein, man kann den Portpin auch per Programm auf L zwingen, dazu muss 
man nur das entsprechende Bit im Portregister auf 0 setzen. Also beim 
Deaktivieren der PWM Portpin vom Timer trennen und auf 0 setzen. Dabei 
ist es völlig uninteressant, ob das Bit im Portregister bereits 0 ist 
oder nicht, nuller als 0 geht nunmal nicht.

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
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.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net