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
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
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.
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) ...
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
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.
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
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.
@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.
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. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.