1Khz PWM zu 30Khz PWM umbauen

#3193820
Lesenswert?

Hallo liebe Gemeinde.

Ich stehe vor dem Problem das ich ein 1Khz PWM Signal habe.
Für ein Netzteil brauche ich aber ein 30KHz PWM Signal.

Das einzige was wichtig ist, dass das Impuls-Pausen-Verhälniss erhalten 
bleibt.

Welcher Lösungsansatz ist der beste ?

Die PWM erst in ein analogwert per Tiefpass bringen, diesen AD - 
wandeln, und dann daraus eine PWM generieren ?

Oder kann ich rein digital die PWM Freuenz erhöhen, ohne dabei über den 
analogen Weg zu gehen.



Vielen Dank

Tim
#3193890
Lesenswert?

@ Patrick E. (f4550tim)

>Die PWM erst in ein analogwert per Tiefpass bringen, diesen AD -
>wandeln, und dann daraus eine PWM generieren ?

Ist eher einfach machbar.

>Oder kann ich rein digital die PWM Freuenz erhöhen, ohne dabei über den
>analogen Weg zu gehen.

Ja, ist aber aufwändiger. Wenn man es mit AVR & Co macht, bekommt man 
Probleme mit Tastverhältnissen nahe 0% und 100%, weil dann die 
Pulsbreiten sehr kurz werden, das kann man auch mit ICP nur schlecht 
messen. Mit einem kleinen CPLD kein Problem.

High-Speed capture mit ATmega Timer
#3193921
Lesenswert?

Vielen Dank für die Antworten bis jetzt.

Entschuldigung wenn ich mich anfangs vergessen habe.

Ich habe da an Atmega Chips gedacht. Da habe ich z.B Atynis25 und Atmega 
8.

Die digitale Messung würde ich auch bevor zugen, doch leider weis ich 
nicht wie ich das Taskverhältnis logisch messen kann. Wäre da über einen 
Denkanstoß recht erfreut.

LG Tim
Gast #3193954
Lesenswert?

Hallo,

du startest z.B. mit der steigenden Flanke einen Timer, der die µs oder 
sowas zählt und stoppst mit der fallenden Flanke (Interrupt), damit 
startest du einen Timer, der wiederum bis zur steigenden Flanke zählt. 
Es gibt da mehrere Möglichkeiten. Alternativ kannst du von steigender zu 
steigender Flanke zählen und den Zwischenwert bei der fallenden Flanke 
festhalten, je nachdem was an Hardware zur Verfügung steht. 
Wahrscheinlich musst du noch eine extra Erkennung einbauen für die Fälle 
immer 0 und immer 1.

Mein Vorschlag:
IRQ 0->1 : vorherigen Wert für Tzyk erfassen (Messzyklus fertig), Timer1 
auf 0 setzen. Ton/Tzyk kann jetzt berechnet werden.
IRQ 1->0 : Wert für Ton erfassen
Timer2-Überlauf-IRQ : kein Puls, nachsehen ob 0 oder 1 anliegt -> 0 oder 
100%.

Gruss Reinhard
#3194377
Lesenswert?

Hallo,

vielen Dank für die Idee Reiner.
Das bedeutet dann für den Anfang ich bauche zwei Timer.
Der erste Timer nimmt die Impulslänge, und der andere Timer nimmt die 
Puls breite.
Das ist schonmal ein erster Schritt.

Bei einem KHz besteht eine Periode aus (t=1/f) 1ms.

Ich möchte an dieser Stelle einfach einmal von einem Atmega8 ausgehen.
Dieser hat 3 Timer. Timer0 mit 8bit und Timer1 mit 8bit Auflösung und 
Timer2 mit 16bit. Dann muss man ja den kleinsten nenner Finden damit die 
gemessenen werte der Timer die selbe Einheit haben.
Heißt ich verwende beide Timer mit 8bit.
Von den Extremen heraus könnte es ja sein das der EIN - Impuls 0.999ms 
lang ist. Genauso könnte es der LOW-Impuls sein. -> Die 8 bit des Timers 
müssen maximal 1ms fassen. 1ms/8bit sind pro Bit 3,921 ~ 4µs.

Daraus folgere ich das das raufzählen des Zählers nicht länger als ~4µs 
dauern darf. - Wie stelle ich das an ? Ist da eine einfache i++ 
operation sinnvoll.

LG
Gast #3194546
Lesenswert?

Patrick E. schrieb:
> Ich stehe vor dem Problem das ich ein 1Khz PWM Signal habe.
> Für ein Netzteil brauche ich aber ein 30KHz PWM Signal.

Ich würde das Problem von der Ausgangsseite angehen. 30kHz PWM bei einem 
Standard-ATtiny/mega mit 16MHz Takt ermöglichen eine max. Auflösung von 
rund 9 Bit. Diese sollte bzw. muß man mit einer Tx-PWM erzeugen, am 
besten natürlich mit Timer1.

Die Erfassung der Eingangspulsweiten kann Faktor 30 langsamer ablaufen, 
wobei eine Auflösung der Zeiten mit rund 2µs doch ein leichtes Spiel 
sind, zumal der µC - soweit ich sehe - nichts anderes zu erledigen hat.
#3197547
Lesenswert?

Hallo,

war das WE leider weg, konnte noch nicht zurück schreiben.

Also das was ich da letzte Woche Freitag verzapft habe habe ich mir 
heute nochmal durchgelesen..... Pfui

Ich arbeite mittlerweile schon seit 2 Jahren mit µC und weis auch was 
Hard & Software ist.
Ich hatte da einen anderen Gedankengang was das increment i++ war. Das 
das kein Timer ist weiß ich auch ;D
Dennoch danke für die Anmerkung Reinhard!

@ M.N.

Ich habe noch nie von einer Tx PWM gelesen oder gehört.
Es gibt für mich 2 Arten von PWM einmal die Hardwareseitige über die PWM 
Hardware, oder eine rein softwareseitige PWM Lösung.
Ich habe auch schon danach gegoogelt,doch habe ich keinen einizigen 
Beitrag über eine "Tx PWM" gefunden und lesen können.

Könntest du mir kurz sagen warum du diese Art von PWM bevorzugen würdest 
und was der Unterschied ist.
Oder aber natürlich einen Link wo ich das selber nachlesen kann.

Und ja, das ist das einzige was der µC tun soll. Im entferntesten soll 
noch ein einfaches LCD ran um die  Werte auszugeben, aber das ist ja 
kein Thema!

LG Patrick
Gast #3197590
Lesenswert?

Patrick E. schrieb:
> Ich habe noch nie von einer Tx PWM gelesen oder gehört.

Ein ATtiny25 hat einen Timer0 und einen Timer1, oder abgekürzt T0 und 
T1. Bei einem ATmega8 kommt noch T2 hinzu, der bei einem ATmega88 sehr 
viel "schöner" ist.
Um einen x-beliebigen Timer zu bezeichnen habe ich daher Tx gewählt. Mit 
Tx PWM ist die Hardware PWM-Funktion eines x-beliebigen Timers gemeint.

Da Du keine näheren Angaben zur Auflösung der 30kHz-PWM gemacht hattest, 
hatte ich versucht, zu ergründen, was max. möglich wäre.

Matthias Sch. schrieb:
> Vergesst die PLL nicht - der Tiny 25 hat eine 64 MHz PLL für Timer 1.

Da T1 auch nur 8 bit Auflösung bietet und die Ausgangsfrequenz ca. 30kHz 
sein soll, kann man die "64 MHz PLL" des Tiny25 ruhig vergessen :-)
Gast #3197598
Lesenswert?

Patrick E. schrieb:
> Und ja, das ist das einzige was der µC tun soll. Im entferntesten soll
> noch ein einfaches LCD ran um die  Werte auszugeben,

Um das noch aufzugreifen: 
http://www.mino-elektronik.de/7-Segment-Variationen/LCD.htm#lcd1

An PB4 kann man mit OC1B die Ausgangs-PWM erzeugen und per PCINT3 die 
Eingangs-PWM auswerten. Über einen sehr hohen Wert in OSCCAL kann man 
den internen RC-Oszillator auf rund 15-16 MHz 'ziehen', sofern die 
exakte Taktfrequenz nicht im Vordergrund steht.
Gast #3197613
Lesenswert?

Mit 16 oder 20 MHz kommt man auf eine Maximale Auflösung von den schon 
erwähnten rund 9 Bit. Wenn das nicht reicht, könnte man ggf. durch 
Dithering noch 1-2 Bit mehr heraus hohlen, also den PWM Wert leicht 
modulieren im letzten Bit. Das gibt dann zwar ein kleine Komponenten bei 
niedrigeren Frequenzen, ist aber bei vielen Anwendungen noch zu 
tolerieren weil die Amplitude klein ist.

Wegen des 16 Bit timers wäre der Mega8 oder als kleinere Lösung ggf. 
auch der Tiny2313 vorzuziehen. Bei nur 1 kHz Frequenz für das 
Eingangssignal sollten die Pulse nicht so kurz werden, so dass man auch 
gut die ICP Funktion nutzen kann, auch wenn es per Interrupt auch noch 
mit 8 Bit timern geht, aber schon nicht mehr so einfach - ein weiterer 
Grund für einen 16 Bit Timer.
Ganz einfach ist es aber nicht den einen 16 Bit timer für die PWM 
Erzeugung und die Zeitmessung per ICP zu verwenden, müsste aber gehen.
#3198029
Lesenswert?

Ok, das mit Tx war ein Interpretationsfehler meinerseits. Habe meinen 
Interpretationsdetektor zum reparieren gegeben :)

Die Lösung mit dem Display von N.M. ist echt gut. Aber bevor ich so 
einen Hardwareaufwand betreibe, nehme ich lieber einen Prozessor mit 5 
Beinchen mehr ;D
Zur Auflösung: Also ein 8bit PWM reicht vollkommen aus. Wichtig ist in 
diesem Fall nur die Frequenz von 30 KHz.

Auch die Idee den 16bit Timer2 zu teilen ist gut und interessant!, aber 
gang ehrlich, der Aufwand der dadurch entsteht, ist ja nicht nötig wenn 
3 Timer zur Verfügung stehen. T0 T1 T2.
Natürlich ist der Atmega8 für diesen Zweck super überdimensioniert, aber 
ich habe 20 Stück günstig erworben, dann kann ich die ruhigem Gewissens 
auch verbauen.
#3198041
Lesenswert?

Hmm, wenn man es per Input Capture machen will und nur einen davon hat, 
gibt es Grenzen für die minimale Pulsbreite. Denn man muss per Software 
zwischen steigender und fallender Flanke per Interrupt umschalten. 
Wenn man mal 100 Takt dafür ansetzt dauert das bei 8 MHz ~ 13us. Das 
sind bei 1 kHz schon 1,3%. Treten diese Extremwerte 0-1,3% bzw. 
98,7-100% auf?

Die Lösung mit RC-Tiefpass und AD-Wandler hat dieses Problem nicht.

OK, die ganz harten Jungs nehmen Assembler, für diese einfache Funktion 
ist das kein Problem. Dann kriegt man den Interrupt auch in 10-20 Takten 
hin. Oder gleich ganz ohne Interrupt, nur per Polling. Ist noch etwas 
schneller und kriegt man auch in C so schnell wie Assembler hin.
Gast #3198087
Lesenswert?

Falk Brunner schrieb:
> Denn man muss per Software
> zwischen steigender und fallender Flanke per Interrupt umschalten.

Möglichkeit: man schliesst die Input-PWM an 2 Eingänge an und 
programmiert einen auf L-H, den anderen auf H-L. Zusätzlich sichert der 
Timer Overflow den Fall ab dass garkeine Impulse kommen und setzt das 
Ergebnis auf 0 oder 100%. Alle 3 ISRs sind in Assembler nur ein paar 
Befehle lang.

Gruss Reinhard
#3198094
Lesenswert?

@ Reinhard Kern (Firma: RK elektronik GmbH) (rk-elektronik)

>> Denn man muss per Software
>> zwischen steigender und fallender Flanke per Interrupt umschalten.

>Möglichkeit: man schliesst die Input-PWM an 2 Eingänge an und
>programmiert einen auf L-H, den anderen auf H-L.

Wenn man das aber sehr genau per ICP machen will, braucht man einen 
recht großen AVR mit 2 ICPs. Ist aber denke ich Overkill. Mit der 
Pollingmethode kommt man auf unter 1us Zeitauflösung, das ist 1 Promille 
bei 1kHz Takt.

>Ergebnis auf 0 oder 100%. Alle 3 ISRs sind in Assembler nur ein paar
>Befehle lang.

Ohne ISR ist es noch schneller und die CPU hat sowieso nix besseres zu 
tun. Ein kleiner ATtiny2313 mit timer0 und 1 reicht. OK, der OP hat 
ATmega8, geht auch.
Gast #3198168
Lesenswert?

Falk Brunner schrieb:
> Wenn man das aber sehr genau per ICP machen will, braucht man einen
> recht großen AVR mit 2 ICPs.

Du bist wohl nicht bereit, meinen Programmvorschlag überhaupt in 
Betracht zu ziehen - ich brauche sowas wie ICP nicht, es reicht ein 
GPIO-Interrupt, in dem der Timerstand ausgelesen wird. Die paar Takte 
zusätzlich spielen wahrscheinlich keine Rolle und ausserdem könnte man 
das noch korrigieren. Und überhaupt könnte man mit einem einzigen Timer 
für Impulsmessung und Overflow hinkommen, wie beschrieben.

Wenn du nicht bereit bist fremde Vorschläge zu diskutieren, kann ich dem 
TO nur empfehlen, mir eine PM zu senden, wenn er an einer einfachen 
Lösung interessiert ist, hier wird das wohl nichts.

Gruss Reinhard
#3198206
Lesenswert?

@ Reinhard Kern (Firma: RK elektronik GmbH) (rk-elektronik)

>Du bist wohl nicht bereit, meinen Programmvorschlag überhaupt in
>Betracht zu ziehen - ich brauche sowas wie ICP nicht, es reicht ein
>GPIO-Interrupt, in dem der Timerstand ausgelesen wird.

Doch, aber es geht besser ;-)

>Die paar Takte
>zusätzlich spielen wahrscheinlich keine Rolle und ausserdem könnte man
>das noch korrigieren. Und überhaupt könnte man mit einem einzigen Timer
>für Impulsmessung und Overflow hinkommen, wie beschrieben.

Für gesparte Timer gibt es kein Geld zurück.

>Wenn du nicht bereit bist fremde Vorschläge zu diskutieren, kann ich dem
>TO nur empfehlen, mir eine PM zu senden, wenn er an einer einfachen
>Lösung interessiert ist, hier wird das wohl nichts.

Warum so gereizt?

Hier mal meine Variante, könnte so klappen. Interner 8 MHz RC-Oszillator 
könnte reichen. AVR Fuses passend einstellen.

MfG
Falk
Angehängte Dateien:
#3199130
Lesenswert?

Vielen Herzlichen Dank an all die Tollen Ideen und Vorschläge.

Darüber zu streiten welches eine Bessere Möglichkeit ist, halte ich 
nicht für sinnvoll. Jede Idee hat eine Daseinsberechtigung.

Was am Ende resursensparender ist und günsiger, das kann man ja ganz 
einfach beschreiben.

Zu dem Thema der oberen und unteren 1,? %. Das ist irrelevant. Es wird 
hauptsächlich zwischen 10 und 90% liegen.

@ Falk:
Danke für das tolle Code Beispiel ! Das wird ja auf einem Atmega8 locker 
Platz finden. Ist fast einfacher als man denkt!

Ich werde heute noch eine Platine entwerfen, so das die Sache bis zum 
Ende der Woche stehen kann. Ich denke ich werde deinen Code als Vorlage 
verwenden.

Da du schriebst das ich nicht vergessen darf die Fußes richtig zu 
stellen, habe ich überlegt was ich außer die Standarteinstellungen 
verändern muss ?


LG
#3199142
Lesenswert?

oszi40 schrieb:
> Patrick E. schrieb:
>> brauche ich aber ein 30KHz PWM Signal.
>
> Eine Schaltung, die für 1kHz berechnet wurde ist, etwas anders bei
> 30kHz.
> http://schmidt-walter.eit.h-da.de/smps/smps.html
> 
http://www.planet3dnow.de/vbulletin/showthread.php?t=396386&garpg=6#content_start

Danke oszi40. Wobei ich schon ein fertiges Netzteil habe. Bin nicht am 
Bau eines solchen. Die Seiten sind interessant!

Ein kleinen Fehler in deiner Interpunktion ist mir aufgefallen. Das "," 
hinter "ist" gehört hinter "wurde".

LG
#3199784
Lesenswert?

Guten Abend,

ich habe mich einmal an den Schaltplan gesetzt.

Die R´s am Ein & Ausgang sind als Schutzbeschaltung mit der Diode D1 
gedacht. Habe gemessen das vom Netzteil manchmal Negative Peaks von 2 
Volt an der steigenden Flanke kommen. Ich gehe stark davon aus das 4,3V 
an stadt von 5V reichen müssen.
Ich denke einen Impedanzwandler kann man hier am Ausgang sparen.

Bitte um Verbesserungen des Planes, und oder Ideen.

Danke

LG
Angehängte Dateien:
#3201087
Lesenswert?

@ Patrick E. (f4550tim)

>Habe das Board soweit geeaglet.

Auf Lochraster hättest du das in 1h aufgebaut und könntest testen. DANN 
kann man es schön machen.

>Es hängt ein 40W CO2 Laser Netzteil drann. Das produziert meinen
>Messungen nach ein paar störende Peaks.

Wahrscheinlich Messfehler, weil ein starker DCDC Wandler Dreck in die 
Umgebung spuckt.
#3211113
Lesenswert?

Hallo,

hat nun ein wenig länger gedauert als ich gedacht habe.

Die Platine ist fertig gestellt und mein Programmer erkennt den darauf 
befindlichen Atmega8. Habe mir die Platine unter dem Mikroskop 
angeschaut und konnte keine Fehler feststellen.

Ich habe einen anderen Atmega mit einem Poti ausgestatted, welcher ein 
1KHz PWM Signal erzeugt. Durch das Poti kann ich die Pulsbreite von 0 
bis 100 stellen. Das sollte zum testen ausreichend sein.

Jetzt geht es an die Programmierung.
Hier werde ich von euch Hilfe brauchen, da ich eher der Hardwaremensch 
bin.
Aber ich bin mir sicher, das Ihr mir helfen werdet. Ich will ja nicht 
das Ihr mir die Arbeit nehmt, sondern das ich Unterstützung bekomme. Und 
ich denke da bin ich hier richtig :D

Ich programmiere in Bascom. Das vorab. Ich werde jetzt einmal ein kurzes 
Programm schreiben welches die Flanken über Interrupts erkennt, und 
werde das hier dann posten.

Bis dann

LG
Angehängte Dateien:
#3211156
Lesenswert?

@ Patrick E. (f4550tim)

>1KHz PWM Signal erzeugt. Durch das Poti kann ich die Pulsbreite von 0
>bis 100 stellen. Das sollte zum testen ausreichend sein.

Ja.


>Jetzt geht es an die Programmierung.

Warum testest du nicht erstmal meinen Vorschlag?

Beitrag "Re: 1Khz PWM zu 30Khz PWM umbauen"

>Ich programmiere in Bascom.

Das dürfte eng werden, den BASCOM hat hier eion paar Schwächen, es ist 
stellenweise deutlich ineffizienter als C. Vielleicht hat man Glück und 
es geht doch, weil die kritische Sequenz eher kurz ist und BASCOM hier 
villeicht nich allzuviel Overhead erzeugt.
#3211248
Lesenswert?

Ich werde verrückt...

habe jetzt eben versucht meinen Code in den Atmega zu flashen, doch ich 
bekomme immer wieder timeout errors bei der Kommunikation.

Aber er kann die Chip ID auslesen.... Es sagt mir das ein Atmega8 
angeschlossen ist, aber beschreiben kann er Ihn nicht, auch kann ich 
keine Fuses setzen...

So kann ich leider dein Testfile nicht flashen.

Was gibt es für Alternative software um mit meinem MySmartUSB light den 
Atmega zu flashen ?

LG


PS: Ich habe mir jetzt AVR Studio 6 geladen, und werde versuchen ob ich 
den Mega8 damit flashen kann.
Moderator (Firma: Titel) Persönliche Seite #3211259
Lesenswert?

Patrick E. schrieb:
> Ich stehe vor dem Problem das ich ein 1Khz PWM Signal habe.
> Für ein Netzteil brauche ich aber ein 30KHz PWM Signal.
Ich bin mir nicht ganz sicher, ob das wirklich das ist, was du brauchst.

Vor ich hier antworten würde, hätte ich noch ein paar Fragen:
Woher kommt das Signal, welche Information trägt es, wofür wird es 
gebraucht und was wird damit wie angesteuert. Und auch: kannst du die 
Regelung deines Netzteils tatsächlich schnell genug in die Software 
packen? Immerhin schient da was Wertvolles und tendenziell Gefährliches 
dranzuhängen...
#3211522
Lesenswert?

Kann man einen Mega8 wenn dieser auf Fuse Extern Osc. steht, ohne das 
ein Quarz dran hängt mit dem Programmer wieder auf Intern 8MHz stellen ?

Dafür müsste doch an der ICSP Schnittstelle die TCk Leitung gut sein.

Weil nachdem ich die Fuße auf 8MHz gestellt und beschreiben wollte, 
stand plötzlich Extern Osc. geschrieben, und wenn ich Ihn auf 8MHz 
stelle kann ich Ihn nicht mehr beschreiben....

Ich hasse BASCOM AVR !!!
Ich glaube ich sollte mich mit C in AVRStudio anfreunden !!!!


LG

PS: Ich installiere grade das Studio6. Mal sehen ob ich damit zurecht 
komme.
#3211648
Lesenswert?

Falk Brunner schrieb:
> @ Patrick E. (f4550tim)
>
>>Kann man einen Mega8 wenn dieser auf Fuse Extern Osc. steht, ohne das
>>ein Quarz dran hängt mit dem Programmer wieder auf Intern 8MHz stellen ?
>
> Nein.
>
>>Dafür müsste doch an der ICSP Schnittstelle die TCk Leitung gut sein.
>
> Nein.
>
> AVR Fuses
>
>>Ich hasse BASCOM AVR !!!
>
> BASCOM ist selten Schuld.


Dann werde ich am Montag einen Quarz dran bauen und zurück stellen.
und dann wieder diese Lastkondensatoren.....
#3211830
Lesenswert?

Habe dein altes File reingeflashed und das geht nun auch !!!


Die PWM ist invertet. Wie im C-File zu sehen.

Das ist für den Zweck aber nicht wirklich sinnvoll, da ich das am PC 
nicht ändern kann. Eine kurze Pulsbreite muss eine kurze Pulsbreite am 
Ausgang haben. Das doofe ist eben das man dann diese Overflowpeaks bei 
100 hat.
Bei 100% ist das nicht schlimm. Aber bei 0 muss auch LOW an dem PIN 
anliegen.

Könntest du noch eine Zeile einfügen in der die Bedingung wenn die PWM 
kleiner als ca. 2 % ist das sie dann einfach ausgeschalten wird, und 
drüber wird sie eingeschalten. Fraglich ist nur ob das mit den 30KHz 
geht.

LG
#3211996
Lesenswert?

Danke Falk das du dich hier so sehr beteiligst.

Habe dein neues File geflashed, und festgestellt, das jetzt etwas ganz 
komisches rauskommt.

Ich erhalte Pausen wo keine sein sollte. Allerdings bei 0 ist nun auch 
0.
Zeischen 1 und 99% Pulsbreite erhalte ich ein Signal wie auf Bild1 zu 
sehen. Wenn ich ein 100% high am input habe, bekomme ich am Ausgang 0 
raus. Das macht soweit nichts.

Wenn ich 99% Pulsdauer habe, also fast high, dann kommt am Ausgang eine 
PWM raus siehe Bild2.

LG
Angehängte Dateien:
#3213541
Lesenswert?

Hallo Falk,

konnte erst jetzt erneut testen. Vorsb schonmal herzlichen Dank für 
deine Bemühungen!!!

Jetzt sind es nurnoch 2 Kleinigkeiten.

Wenn ich die Pulsbreite über 84% bringe, entsteht am Ausgang eine PWM wo 
die PWM nichts mehr mit der Eingangspwm zu tun hat. Irgendwas von 
40%/60%.
Wenn ich dann auf knappe 99% gehe, springt der Ausgang auf 0. Gut das 
wäre nicht dramatisch.

Hier kommt aber noch die zweite Problematik. Wenn ich unter 1% oder eben 
über 99% stelle, geht der Ausgang auf low, und wenn ich dann die PWM am 
Eingang wieder verändere, muss ich den Atmega8 reseten (Hardware). Dann 
kommt am Ausgang wieder eine PWM.


LG Tim
#3227259
Lesenswert?

Hallo Falk,

einen erneuten Dank für deine Bemühungen.
Entschuldige bitte das ich erst jetzt schreibe, aber ich war im Urlaub 
und dann im Anschluss gleich noch ein Wochenende weg.

Ich habe gestern deinen neuen Code geflashed, und muss sagen das er nun 
so läuft und man keinen Reset benötigt, damit er aus den Extremen wieder 
aufwacht.

Eine letzte Kleinigkeit ist mir nun aber doch noch aufgefallen, und zwar 
muss ich den Controller einmalig resetten wenn er an Spannung 
angeschlossen wird, sonnst läuft er nicht an. Manchmal läuft er an, aber 
mit 60KHz am Ausgang. Wenn ich ihn dann resette, kommt die passende 
~30KHz PWM.

Ich hatte noch einen letzten Fall durchdacht. Wenn sich der Controller 
einmal aufhängt, dann würde hinten irgendetwas undefinierbares 
rauskommen, und das könnte rein theoretisch gefährlich werden. Wieviel 
Arbeit würde es dir noch machen den WD in die mainschleife mit rein zu 
ziehen?


Grüße
#3227676
Lesenswert?

@Patrick E. (f4550tim)

>muss ich den Controller einmalig resetten wenn er an Spannung
>angeschlossen wird, sonnst läuft er nicht an.

Aktiviere den Brown Out Detektor per Fuses.

>Ich hatte noch einen letzten Fall durchdacht. Wenn sich der Controller
>einmal aufhängt, dann würde hinten irgendetwas undefinierbares
>rauskommen, und das könnte rein theoretisch gefährlich werden. Wieviel
>Arbeit würde es dir noch machen den WD in die mainschleife mit rein zu
>ziehen?

Naja, der Watchdog ist nur ein Feigenblatt. Der rettet nicht sooo viel. 
Kann man aber einbauen, wenn es dich beruhigt. Mach ich heute abend.

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