Forum: Mikrocontroller und Digitale Elektronik AVR450 Lader


von Sascha (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

Ich würde vor allem mal auf korrekte Klammerung achten

if((TCCR1A & (1 << CS10)) && (OCR1A != 0))
...

von Sascha (Gast)


Lesenswert?

Gut, mit der Klammerung kann passieren, naja.
Aber daran liegts wohl nicht, ergibt keine änderung.

Mfg Sascha

von Ich B. (ichbin)


Lesenswert?

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!

von Sascha (Gast)


Lesenswert?

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

von Stefan S. (sh81)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

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

von Sascha (Gast)


Lesenswert?

Hi,

leider kein Simulator-Problem. Habe es im Lader selbst getestet und da
funktioniert es auch nicht.......

Mfg sascha

von Ich B. (ichbin)


Lesenswert?

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!

von Sven (Gast)


Lesenswert?

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