mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik atmega8 interner RC Oszillator mit 8MHz


Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo allerseits,

ich möchte gerne einen Atmega8 zum dekodieren von RC5 Signale verweden. 
am Evalboard mit 16MHz hats auch einwandfrei geklappt.

Den AVR möchte ich mit 4MHz intern Takten, das sollte er laut DB und den 
Fuse die ich im AVR Studio einstellen kann auch können, oder?

Jedenfalls hab ich mir durch PORT^=(1<<PC2) in einer for(;;)-Schleife 
die Frequenz ausgegeben, diese liegt bei z.b. 8MHz(Einstellung) bei 
gerade einem MHZ(Messung). Ich habe die Pulspause gemessen und halt 
umgerechnet, bei dem Toggeln war ja was mit Faktor 2...

komich, oder? ich mess den völlig falschen Wert und ich weiß nicht 
warum. Und das Programm für den RC5 Dekoder läuft auch nicht?

Mach ich da was falsch, oder ist schlicht und einfach der µC hinüber?

Gruß und vielen Dank für die Hilfe

Philipp

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir den Code mal im Simulator vom AVR-Studio an, dort kannst du 
genau ausmessen, wie lang die For-Schleife zum Durchlauf braucht. 
Alternativ kannst du die Maschinenzyklen auch in Assemblerfile zählen.

Es kann schon sein, dass ein Schleifendurchlauf 4 Zyklen braucht.
Für ein Toggle muss der Port in ein Register geladen werden (1 Zyklus), 
dann ein Bit dort invertiert werden (1 Zyklus), dann das Register auf 
den Port raus schreiben (1 Zyklus) und dann der Sprung an die Stelle, wo 
das Ganze von vorn los geht (1 Zyklus).

Wie du schon gesagt hast, der Faktor 2 (wegen dem Toggeln) geht auch 
noch in die Frequenz ein. So ist es doch realistisch, dass bei 8 MHz 
Takt 1 MHz am Port zu sehen ist.

Grüße,

Peter

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
den avr kann ich jetzt nicht so konfigurieren, dass er mir den Takt an 
einem Pin XOUT oder so ausgibt?

ich schau mir mal den assembler-Code an, danke für die Idee


Also, des macht für die Schleife plus toggln 4 Befehle (lesen, comp, 
schreiben und jump zum schleifenbeginn)

Wenn ich 8MHZ habe, dann sehe ich am Port 8MHz/4/2 = 1MHz, oder?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp Putzer schrieb:

> Also, des macht für die Schleife plus toggln 4 Befehle (lesen, comp,
> schreiben und jump zum schleifenbeginn)

Wenn man den Optimierer beim Kompilieren benutzt, 5 Befehle bei meinem 
älteren GCC (die Konstante (1<<PC2) = 0x04 muss noch in ein Register 
geladen werden):
+00000030:   B385        IN      R24,0x15         In from I/O location
+00000031:   E094        LDI     R25,0x04         Load immediate
+00000032:   2789        EOR     R24,R25          Exclusive OR
+00000033:   BB85        OUT     0x15,R24         Out to I/O location
+00000034:   CFFB        RJMP    PC-0x0004        Relative jump

> Wenn ich 8MHZ habe, dann sehe ich am Port 8MHz/4/2 = 1MHz, oder?

Im Beispiel oben 8/5/2 = 800 kHz

Autor: Philipp Putzer (putzer_philipp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super, danke für die erklärung, das erklärts.


Vielen Dank für die Hilfe

gruß

philipp

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.