mikrocontroller.net

Forum: Compiler & IDEs OCR1A Wert in Simulator falsch?


Autor: Jorge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei meinen ersten Versuchen eine Mega8 mit gcc zu programmieren bin ich 
beim Simulieren auf folgendes Problem gestoßen:

Ich setze den OCR1A mit
OCR1A=400;

während der Simulation zeigt mir der AVR-Studio Simulator jedoch als 
OCR1A Wert 144, also genau 256 (8 Bit) zu wenig, an. Der gcc-Doku habe 
ich entnommen, dass das Schreiben des Low- und High-Byts automatisch 
geschieht.

Mache ich was falsch, muß ich noch irgendetwas einstellen oder stimmt 
etwas mit dem Simulator nicht?

Freue mich auf Eure Hilfe. Vielen Dank ... Jorge

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen uC benutzt Du denn bzw. etwas prüziser: Wie viel bit hat Dein 
Timer denn? 8, 16, 32, ...

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, wer lesen kann ist klar im Vorteil, mega8. Ich ziehe die Frage 
zurück. Der Timer1 hat dort 16 bit, meine Vermutung eines 8 bit-timers 
ist also falsch (denn der könnte ja nur von 0-255 zählen).

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, ich hab grad mal ein Projekt (allerdings mit nem Mega16) 
durchlaufen lassen, und bei mir wird das korrekt angezeigt. AVRStudio 
neueste Version (4.14) mit allem, was dazugehört...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht solltest du dir ja außer OCR1AL auch noch OCR1AH ansehen?
Das Pseudo-16-Bit-Register gibt's nur für den Compiler, in Wirklichkeit
sind es zwei 8-Bit-Register.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
> Vielleicht solltest du dir ja außer OCR1AL auch noch OCR1AH ansehen?
> Das Pseudo-16-Bit-Register gibt's nur für den Compiler, in Wirklichkeit
> sind es zwei 8-Bit-Register.
Der Simulator zeigt es zumindest im I/O-View aber komplett an (als ein 
Register). Ich weiß natürlich nicht, wo Jorge den angegebenen Wert 
gesehen hat...

Autor: Jorge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

der Simulator zeigt mir OCR1AL und OCR1AH an und ergibt dann die 144 für 
OCR1A.

Autor: Fred S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

unter XP und AVRStudio v.4.14 (ATmega8 eingestellt) stimmt's bei mir 
(siehe Bild).

Gruß

Fred

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fred:
Genau so sieht es bei mir auch aus.

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jorge,

ehe wir hier weiter im Dunkeln tappen und das Problem nicht 
reproduzieren können: zeig doch mal bitte Deinen Code und die Ausgabe 
des Simulators. Welche Version verwendest Du?

Gruß

Fred

Autor: Jorge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Lutz hat mich auf die Idee gebracht nach einem 8/16 Bit Problem zu 
suchen...

Ich habe es im Setzen der TCCR1A mit CS00 gefunden:

Das war mein Code:
TCCR1A|=(1<<CS00);//Prescale 1
TCCR1B|=(1<<WGM12);//CTC
OCR1A=400;

aber mit TCCR1A|=(1<<CS00) setze ich den Timer scheinbar in den 8-Bit 
PWM Modus. So funktioniert´s jetzt:
TCCR1B|=(1<<CS00);//Prescale 1
TCCR1B|=(1<<WGM12);//CTC
OCR1A=400;

Vielen Dank nochmal für Eure Hilfe .... Jorge

Autor: Fred S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Jorge,

>
> TCCR1A|=(1<<CS00);//Prescale 1
> TCCR1B|=(1<<WGM12);//CTC
> OCR1A=400;
> 
CS00 ist ja auch kein Name eines Bits in TCCR1A, bezeichnet aber Bit0, 
so dass Dein Code identisch ist mit
TCCR1A|=(1<<WGM10); // PWM, phase-correct 8-bit mode !!!!

> aber mit TCCR1A|=(1<<CS00) setze ich den Timer scheinbar in den 8-Bit
> PWM Modus.
Genau, s.o.

>
> TCCR1B|=(1<<CS00);//Prescale 1
> TCCR1B|=(1<<WGM12);//CTC
> OCR1A=400;
> 
Sei vorsichtig mit dem "Mischen" der Bit-Namen: CS00 gehört nicht zu 
TCCR1B. Das Ergebnis ist zwar das gleiche als wenn Du CS10 nimmst, aber 
man kann sich leicht Probleme (s.o.) einhandeln, wenn man die Bit-Namen 
nicht sauber trennt.

Gruß

Fred

Autor: saiboT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Jorge,

Hat sich das Problem schon gelöst?
Und hats jetzt wirklich an dem "TCCR1A" gelegen?

Habe bei mir das gleiche Problem wenn ich dem ASM code hier aus dem 
Tutorial verwende.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM

Gibt es irgendwelche Hinweise das bei älteren Versionen des AVR Studio 
hier ein Fehler vorliegt?


Gruß saiboT

Autor: Jorge Me (jorge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo saiboT,

ja, es lag am TCCR1A. Ich verwende AVR-Studio 4.14.

Gruß ... Jorge

Autor: die ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem scheint zwar gelöst, aber noch ein Wort dazu: Der Simulator 
im AVR Studio ist buggy und verhält sich in vielen Fällen nicht wie die 
echte Hardware - der Grund warum ich den Simulator so gut wie nie 
benutze.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für die AVRs, wo er vorhanden ist, sollte der sogenannte Simulator
Version 2 deutlich besser gehen.  Der komplette Digitalteil müsste
darin (prinzipbedingt) korrekt abgebildet sein.

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.