mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATmega8 übertakten


Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abend allerseits,

mein ATmega 8 arbeitet mir ein wenig zu langsam (sollte µSekunden 
aufnehmen können) udn nun habe ich in einigen viedeos und aanderen 
Quellen gesehen, dass manch einer seinen ATm8 übertaktet hat.
Beispielsweise mit 24MHz. Ich würd mal sagen 20 reichen mir mal fürs 
erste.
1. Aber überlebt der des?
2. Und packt der Compiler des? also passen die Zeiten und so dann auch 
noch?
3. Muss ich dann einfach einen anderen Quarz anschließen? und was mach 
ich mit den fuses?
Die folgenden Teile vom ATm8 werden benötigt:
UART
Interrupt
Timer
vll EEPROM

Vll ne schwachstelle an dem Plan: die ganze Sache läuft mit 3,3V. 
Zurzeit unter 16MHz.

Danke schonmal für eure hoffentlich zahlreichen antworten

MfG Pat711

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>1. Aber überlebt der des?

Probiers aus?

>2. Und packt der Compiler des?

Das interessiert den Compiler nicht die Bohne.

> also passen die Zeiten und so dann auch
>noch?

Wenn F_CPU definiert ist vieleicht.

>3. Muss ich dann einfach einen anderen Quarz anschließen?

Kannst den Takt auch von Hand machen. 20MHz wird dich aber überfordern.

>und was mach ich mit den fuses?

In den Kühlschrank legen. Da bleiben sie lange frisch;)

Autor: Axel Düsendieb (axel_jeromin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nimm gleich einen Mega 88, der kann 20Mhz von Hause aus.



Axel

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Axel Düsendieb schrieb:
> nimm gleich einen Mega 88, der kann 20Mhz von Hause aus.

Aber streng genommen erst ab 4,5V ;-)
frank

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich selbst habe für einen DDS-Generator bei 5V mit 35 MHz übertaktet. Da 
liefen das einfache DDS Programm und die I2C-Schnittstelle noch, wenn 
der Takt aus einem externen Oszillator kam. Allerdings ist es 
zweifelhaft, ob andere Peripheriefunktionen (RS232, Timer, Int's, 
Oszillator für Quarz)auch noch arbeiten.
24 MHz bei 3,3V dürften ein Zufall sein, jedenfalls kann man es nur 
durch Probieren feststellen.

Autor: Markus J. (markusj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick R. schrieb:
> Vll ne schwachstelle an dem Plan: die ganze Sache läuft mit 3,3V.
> Zurzeit unter 16MHz.

Damit übertaktest du den AVR schon jetzt ... Und um vernünftig solche 
kurze Zeiten messen zu können brauchst du wahrscheinlich einen um 
Größenordnungen schnelleren Takt - Oder eine andere Herangehensweise an 
dein Problem.

Wie wäre es wenn du Mal dein Problem beschreibst statt die von dir 
auserkorene Lösung?

mfG
Markus

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was genau meinst du mit "sollte µSekunden aufnehmen können"?
Was soll aufgenommen werden?

Normalerweise sollte man es gar nicht nötig haben, zu übertakten. Wer 
das braucht, hat offensichtlich den falschen Prozessor ausgesucht oder 
das Problem ineffizient gelöst.

Natürlich spricht nichts dagegen, dass man das aus reinem Interesse und 
Spaß mal ausprobiert, aber als Problemlösung darf man einen Betrieb 
außerhalb der Spezifikation nicht ansehen und sollte das nach 
Möglichkeit immer vermeiden.

Wenn sich die Problemlösung nicht vereinfachen lässt, kommen dann keine 
schnelleren Prozessoren in Frage?

z.B.
ATXmega
MSP430F5xxx
AT91SAM7
LPC21xx
...

Grüße,

Peter

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine duemmliche Idee. Dann wuerd ich doch gleich einen AVR32UC3 (32bit) 
nehmen und den mit 90MHz laufen lassen...

Autor: Pat711 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen zusammen,

die µsec brauche ich, da ich eine am Interrupt eingehende Taktfrequenz 
möglichst genau messen muss.

Einen anderen Controller zu wählen wäre eine Möglichkeit allerdings ist 
die bisherige Firmware eben auf dem ATm8 ausgelegt.
Mit 32-Bit Controllern habe ich absolut keine Erfahrung. Ist der Weg da 
der selbe? Library usw.?

MfG Pat711

Autor: Wayne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guck dir mal die Möglichkeit des Inputcaptures beim AVR an, damit geht 
so was auch. Damit werden Zeitmarken für Events an einem Pin (ICP) 
genommen und die kann man dann vergleichen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pat711 schrieb:
> die µsec brauche ich, da ich eine am Interrupt eingehende Taktfrequenz
> möglichst genau messen muss.
Laberlaberlaber!
Definiere "möglichst genau" möglichst genauer... :-/

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Definiere "möglichst genau" möglichst genauer... :-/

Umso genauer der Wert wird um so besser wird im Endeffekt auch mein 
messergebnis. Also am besten auf 1-2µsec genau

Autor: avion23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1MHz -> T = 1µs
16MHz -> T = 1/16µs
Wieso kannst du damit nicht auf 2µs Auflösung messen?

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
letztes mal ist es daran gescheitert, dass das Programm zu groß war und 
der Interrupt zu oft kam. Vermutlich waren eben auch zu viele Befehle in 
der Interruptschleife (dürfen ja dann nicht mehr als 16 bzw. 15 Takte 
sein)

Autor: Markus J. (markusj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick,

wie sieht das Eingangssignal aus? Welche Taktfrequenz hat es? Ohne eine 
exakte Problembeschreibung wird das hier nix ...

mfG
Markus

PS: Eine mögliche Lösung wäre (nach momentanem Wissensstand) die 
Verwendung der Input-Capture-Funktion in Kombination mit einem 
vorgeschalteten Zählerbaustein ...

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für eine genaue Messung sollte man besser die ICP Funktion nutzen. MIt 
der ICP Funktion kreigt man die Zeiten in der Regel auf 1-2 Zyklen 
genau, d.h. bei 10 MHz Takt ist man bei +-100-200 ns. Die Länge der 
Interruptroutine ist dann für die minimal messbare Zeit, nicht die 
Auflösung verantwortlich.

Wenn dann der Takt nicht ganz reicht, dann besser einen Mega88 - da 
ändert sich sehr wenig am Programm und in der Regel nichts am Layout.

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die eingangsfrequenz resultiert aus einem RC Glied. Das letzte Test lag 
Sie zwischen 2 und 3 kHz.
Außerdem sind es 3 eingangsfrequenzen, welche über einen Multiblexer 
(SMDHC4051) ausgewählt werden.

das mit dem ICP hab ich mir nun auch überlegt, gibt es denn dazu ein 
Tutorial?

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick R. schrieb:
> die eingangsfrequenz resultiert aus einem RC Glied. Das letzte Test lag
> Sie zwischen 2 und 3 kHz.

Dazu muss man keinen AVR übertakten, das macht der locker innerhalb der 
Spezifikation.

> Außerdem sind es 3 eingangsfrequenzen, welche über einen Multiblexer
> (SMDHC4051) ausgewählt werden.
>
> das mit dem ICP hab ich mir nun auch überlegt, gibt es denn dazu ein
> Tutorial?

Was willst Du mit einem Tutorial? Im Datenblatt (Kapitel Timer1) steht 
alles drin, was Du dazu wissen musst.

MfG

Autor: Markus J. (markusj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick R. schrieb:
> Das letzte Test lag Sie zwischen 2 und 3 kHz.

Und da machst du so einen riesigen Aufstand? Für 3kHz brauchst du noch 
nicht Mal nen Input-Capture, da kannst du auch ganz bequem mit einer 
Zählervariable, einem flankengetriggerten Interrupt und einem Counter 
als Zeitreferenz machen.

Messablauf:
Zähler zurücksetzen
Counter zurücksetzen und starten

Eingehende Flanke: Zähler inkrementieren
Counter-Überlauf oder CTC -> Ende der Messung

Ergebnis: f = Anzahl der Flanken / Messzeitraum

mfG
Markus

Autor: Patrick R. (pat711)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus J. schrieb:
>
> Messablauf:
> Zähler zurücksetzen
> Counter zurücksetzen und starten
>
> Eingehende Flanke: Zähler inkrementieren
> Counter-Überlauf oder CTC -> Ende der Messung
>
> Ergebnis: f = Anzahl der Flanken / Messzeitraum
>
> mfG
> Markus

so gehts natürlich auch. Bei mir war das folgendermaßen:

zähler bei eingehender steigender Flanke auf 0 setzen,
bei nächster eingehender Steigender Flanke Wert ind andere Variable 
speichern,
nächsten Kanal abfragen

Autor: Markus J. (markusj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick R. schrieb:
> Bei mir war das folgendermaßen: [...]

Was nahe an der ICP-Methode ist, hat aber folgenden Nachteil: Die 
Messgenauigkeit wird durch internes und externes Timing relativ stark 
beeinflusst (f = 1/T bei kleinem T bewirkt starke Schwankungen). Wenn du 
den Messzeitraum dagegen in die Länge ziehst bekommst du mehr 
Stützstellen und somit ein genaueres/stabileres Ergebnis.

mfG
Markus

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man den ICP Modus nutzt, kann man sich unter Umständen sogar den 
externen Multiplexer sparen, denn ICP geht auch über den Komperator und 
den Multiplexer des AD wandlers. Bei 2-3 kHz ist die Taktfrequenz 
ziehmlich unkritisch. Kritisch wird das ab etwa 200-300 kHz.

Bei 2-3 kHz muß man sich nichtmal groß um Überläufe kümmern.


Die Auswertung von Hand, aber auch mit einem Durchlaufenden Timer wäre 
eventuell eine Reizvolle aufgabe, wenn man die 3 Kanäle Simultan 
auswerten will, z.B. per Pin Change Interrupt. Auch da sollte eine Takt 
von run 8 MHz schon recht weit reichen, wenn man die ISR in ASM 
schreibt.

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.