Hi, ich versuche mich gerade an der App.-Note 450 von Atmel. Ich nutze den ATmega32(16MHz). PWM habe ich auf 15.625kHz eingestellt, also 10Bit Fast-PWM. Nur bei der Rouutine Stop_PWM, wie in der App.-Note, bleibt das Programm stehen. void Stop_PWM(void) { if((TCCR1A & (1<<CS10)) && OCR1A!=0) { if(OCR1A==1) { while(TCNT1>2); while(TCNT1<2); } else { while(TCNT1 > OCR1A); while(OCR1A > TCNT1); <-- hier hängt er im Simulator } TCCR1A=0x00; } } Festgestellt habe ich im Simulator, das der Wert von TCNT1 niemals 3FF erreicht, aber warum? Mfg Sascha
Ich würde vor allem mal auf korrekte Klammerung achten if((TCCR1A & (1 << CS10)) && (OCR1A != 0)) ...
Gut, mit der Klammerung kann passieren, naja. Aber daran liegts wohl nicht, ergibt keine änderung. Mfg Sascha
Hi Sascha, kennst Du Projekte, die auf dieser Appnote basieren? Ich brauche ein Ladegerät, möchte aber die Entwicklungszeit so kurz wie möglich halten, und auf was 'Vorgedachtes' zurückgreifen. Danke schonmal!
Schau mal da...... http://www.people.freenet.de/thhe01/modellbau/index.htm Hmm, zurück zu meinem Problem. Das register OCR1A darf nicht den Wert 0x3FF erreichen. Sonst schaltet die Stop_PWM Routine nicht ab und bleibt dort hängen. Mfg Sascha
Hallo, auf http://www.seattlerobotics.org/encoder/200210/lithiumion.htm ist auch ne Beispielschaltung aus der AVR450 Appnote. Allerdings nur speziell für LiIon Akkus. Das Problem ist aber die alte Version des Quellcodes, der sich mir dem aktuellen WinAVR nicht compilieren lässt (andere includedateien, Portzuweisungen, Interrupts...). @ Sascha: vllt. findest Du ja dort ein paar Infos zu deiner PWM Routine. @all: Hat denn niemand ne lauffähige (aktuelle) Version des Projektes?? Hardwaremäßig binn ich nämlich schon fertig, nur mit der Implementierung der Software hapert es noch ein wenig. Wäre nett wenn hier jemand sein Projekt veröffentlichen könnte! Gruß, Stefan
Hi, @Stefan S. (SH81) das Problem liegt bei dem Source, das er wohl unter Codevision progr. ist und nicht unter WinAVR. Den Link von dir kenne ich leider schon, die Stop_PWM Routine ist im Prinzip identisch. Nur halt ein anderer Controller, statt Atmega8, Atmega32. Er gibt dem Kind nur nen anderen Namen: #define OC_REG_1 OCR1A :) Bringt mir also leider auch nichts. Sobald der OCR-Wert gleich 0x3FF ist, bleibt die Routine hängen. Ist bestimmt toll, wenn der µC den Strom mit dem Wert 0x3FF regelt und er dann nicht mehr abschalten kann. Akku macht dann puff......... Mfg Sascha
Das sieht mir mittlerweile fast wie ein Simulator-Problem aus. Habe mit dem AVR-Simulator auch schon mal Probleme gerade bei Hardware-Ereignissen gehabt. Und das, obwohl das Programm auf dem Chip einwandfrei läuft (z.B. http://www.mikrocontroller.net/forum/read-2-312911.html). Wenn Du es bisher nur simuliert hast, solltest Du es mal in Hardware ausprobieren. Gruß Johnny
Hi, leider kein Simulator-Problem. Habe es im Lader selbst getestet und da funktioniert es auch nicht....... Mfg sascha
N'Abend, ich habe nochmal ein paar Fragen an Euch, nachdem ich die Appnote überflogen habe: Pi mal Daumen - wieviel Platz im Flash würden die Routinen aus der Appnote kombiniert benötigen? In der Appnote steht zwar was von <1,5K, aber demnach ja nur für ein bestimmtes Ladeszenario..und das kann ja nicht Sinn eines Universalladers sein. Gibt es eigentlich noch andere AVRs, die wie der tiny15 und 26 so ein 100kHz PWM und interne Verstärkung für ADC haben? Schön wäre auch die passende Menge Flash und ein Hardware Uart :-) Aber vermutlich verwendet Ihr nicht ohne Grund Fast PWM Was benutzt Ihr für Widerstände zur Strommessung? Danke schonmal!
@Sascha: Vielleicht könntest Du den kompletten Code posten, dann könnte man auch nach einem fehler suchen..... So ist es ja nur die Stop routine die man einsehen kann. Das ist wie ein suchen im Heuhaufen... Gruß Sven
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.