Forum: Mikrocontroller und Digitale Elektronik 16MHZ oder nicht!


von Andreas V. (wicky)


Lesenswert?

Hallo,

ich lerne mit einem ATmega 2560.

Laut Datenblatt von ATmel steht auch gleich auf dem Deckblatt 0-16 MHZ.

Mir wurde aber gesagt es würde keinen Microcontroller mit 16 MHZ geben.

Was ist den nun richtig? Darf ich weiterhin in meinem Code 16 MHZ 
einstellen oder lieber nicht? und noch eine Anfängerfrage, wenn ich die 
Frequenz benötige wird diese im Makefile eingetragen oder über define in 
der .c Datei?

Danke,
Andreas

von Purzel H. (hacky)


Lesenswert?

Naja. Was ist verbindlich, das was im Datenblatt steht, oder was 
irgendjemand erzaehlt ?

von Sven P. (Gast)


Lesenswert?

Andreas V. schrieb:
> Laut Datenblatt von ATmel steht auch gleich auf dem Deckblatt 0-16 MHZ.
Ja, also halte dich daran.

> Mir wurde aber gesagt es würde keinen Microcontroller mit 16 MHZ geben.
Und zwar weil...?

> und noch eine Anfängerfrage, wenn ich die
> Frequenz benötige wird diese im Makefile eingetragen oder über define in
> der .c Datei?
Besser im Makefile, für den Fall, dass du z.B. die <util/delay.h> noch 
sonstwo benutzt.

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Andreas V. schrieb:

> Laut Datenblatt von ATmel steht auch gleich auf dem Deckblatt 0-16 MHZ.

richtig

>
> Mir wurde aber gesagt es würde keinen Microcontroller mit 16 MHZ geben.

wer ? Atmel ? oder gibts mittlerweile "Elektronik-Bild" ?

von Peter R. (pnu)


Lesenswert?

Die AVR's laufen im Auslieferungszustand mit einem internen 
RC-Oszillator.   In diesem Sinne haben die meisten Kontroller eine 
Taktfrequenz von 8MHz.

Mittels der Fuses kann man aber auf externen Quarz oder externen 
Oszillator umschalten, dann kann man dem Kontroller jede gewünschte 
Taktfrequenz geben, nur oberhalb 16MHz ist die Funktion nicht mehr im 
ganzen Spannungsbereich /Temperaturbereich gesichert.

von Andreas V. (wicky)


Lesenswert?

Sven P. schrieb:
>> Laut Datenblatt von ATmel steht auch gleich auf dem Deckblatt 0-16 MHZ.
> Ja, also halte dich daran.

Das habe ich auch vor, wurde wegen der Aussagen hier nur etwas verwirrt, 
sodass ich einfach noch einmal nachfragen wollte.

Sven P. schrieb:
>> Mir wurde aber gesagt es würde keinen Microcontroller mit 16 MHZ geben.
> Und zwar weil...?

Das kann ich Dir auch nicht sagen, aber einige waren doch sehr erstaunt 
darüber

Sven P. schrieb:
> Besser im Makefile, für den Fall, dass du z.B. die <util/delay.h> noch
> sonstwo benutzt.

und wie würde so ein Eintrag im Makefile aussehen?

Danke

von doc (Gast)


Lesenswert?

Hab grade einen Mikrocontroller mit 75 Mhz hier liegen..aber wenn du 
sagst, den gibt es garnicht..hm..bringst du mich in Grübeln... dann bin 
ich wohl auf eine Schwindlerfirma hereingefallen.

von Sigint 112 (sigint)


Lesenswert?

Andreas V. schrieb:
> Mir wurde aber gesagt es würde keinen Microcontroller mit 16 MHZ geben.

Das ist auch richtig, da es 16MHz heißt. ;-)
Aber im Ernst: Wer hat dir den Unsinn erzählt?!? Moderne Mikrocontroller 
gehen bis ein paar hundert MHz. Der Takt wird dabei oft intern 
hochgesetzt, sodaß der externe Quarz kleiner (in MHz) ausfallen kann. 
Die meisten AVR gehen, soweit mir das jetzt bekannt ist, bis 20MHz. 
Allerdings kann man die teilweise stark übertakten.

Gruß,
  SIGINT

von Andreas V. (wicky)


Lesenswert?

Peter R. schrieb:
> Mittels der Fuses kann man aber auf externen Quarz oder externen
> Oszillator umschalten, dann kann man dem Kontroller jede gewünschte
> Taktfrequenz geben, nur oberhalb 16MHz ist die Funktion nicht mehr im
> ganzen Spannungsbereich /Temperaturbereich gesichert.

Das bedeutet ich darf bei meiner define keine 16 MHZ eintragen, sondern 
nur 8?

von Andreas V. (wicky)


Lesenswert?

doc schrieb:
> Hab grade einen Mikrocontroller mit 75 Mhz hier liegen..aber wenn du
> sagst, den gibt es garnicht..hm..bringst du mich in Grübeln... dann bin
> ich wohl auf eine Schwindlerfirma hereingefallen.

Nicht ich habe dies gesagt, die Aussage kommt hier aus dem Forum

von Marvin M. (Gast)


Lesenswert?

Hi,

lies die Beiträge bitte richtig.... Bei OBERHALB von 16MHz funktioniert 
er eventuell nicht richtig. Das wäre dann ja auch ein Betrieb außerhalb 
der Spezifikation. Solange Du mit Spannung, Temperatur, Frequenz und 
Strom innerhalb der Spezifikationen des Datenblatts bleibst, darfst Du 
auch 16MHz eintragen.
Welche Frequenz man benutzt, ist auch davon abhängig, was der µC machen 
soll. 16MHz sind beispielsweise für ein Lauflicht völliger Unsinn.

Nur Präventiv: Wenn Du eine Frequenz im Makefile einträgst, heißt das 
nicht automatisch, dass der µC auch mit dieser Frequenz läuft. Da musst 
Du dann schon die Fuses richtig einstellen und ggf. einen Quarz 
anschließen.

Und: Wo in diesem Forum steht, es gäbe keine µC mit 16MHz?

von sp1 (Gast)


Lesenswert?

Wenn im Datenblatt 16 MHz bei 4 bis 5V angegeben sind dass läuft das 
Teil auch mit 16 MHz wenn man einen entsprechenden Quarz anschließt. 
Warum denn auch nicht?

Deine "Freunde" verwechseln das bestimmt mit GHz. Ich kenne auch so 
einen Spezi (Kommilitone E-Technik(!)) der eine 800 MB Festplatte in der 
Hand hielt und erst sagte "Wow die ist aber groß" und danach "Wie viel 
GB sind denn 800 MB?".
Das fasst man sich manchmal schon an den Kopf :).

von avr (Gast)


Lesenswert?

Wenn es sich um Atmel AVR handelt gibt es im Datenblatt
eine Kapitel:

   Electrical Characteristics

Bei den neueren ist dort unter

  Speed Grades

bei den älteren (die mit Niederspannungstyp V) unter

  Maximum Speed vs. VCC

sind Grafiken mit Taktfrequenz und Spannung.

Bei anderen µC (auch von anderen Herstellern) ist es ähnlich.

Diese Angaben sind so grundsätzlich, dass das Datenblatt hier
wohl selten Fehler hat ;)

avr

von Andreas V. (wicky)


Lesenswert?

Marvin M. schrieb:
> Und: Wo in diesem Forum steht, es gäbe keine µC mit 16MHz?

"Deine Frequenz ist zu hoch eingestellt, so einen AVR gibts nicht!"
ist zum beispiel so eine Antwort.
Aber ich will hier niemanden hochfahren.
Ich möchte nur das wenn ich eine frage habe ich eventuell hier auch die 
Unterstützung finden. Mir soll keiner eine Lösung presentieren die will 
ich allein finden. Nur als Anfänger fehlt halt auch die Erfahrung.

von sp1 (Gast)


Lesenswert?

In dem anderen Thread hat man dir gesagt dass die Frequenz zu hoch ist 
weil du im define 1,6 GHz und nicht 16 MHz angegeben hast...

von sp1 (Gast)


Lesenswert?

16e6 ist nicht so fehleranfällig wie 16000000. Das ist schnell mal ne 0 
zu viel dabei... oder auch zwei ;)

von Andreas V. (wicky)


Lesenswert?

sp1 schrieb:
> In dem anderen Thread hat man dir gesagt dass die Frequenz zu hoch ist
> weil du im define 1,6 GHz und nicht 16 MHz angegeben hast...

Damit sollte es geklärt sein, jetzt hab ich es auch gesehen!

Und warum habe ich dann keine Probleme mit dieser Konfiguration 
bekommen?

von doc (Gast)


Lesenswert?

Weil das NICHT die Konfiguration ist..
Das ist nur Angabe für den Compiler. Wenn du da was falsch machst, 
instressiert das niemanden, nichtmal den Compiler. Du wirst höchstens 
irgendwann feststellen, daß bestimmte Sachen viel zu langsam ablaufen...

von Andreas V. (wicky)


Lesenswert?

Vielen Dank für die vielen und sehr aufschlussreichen Antworten.
Allen noch einen schönen abend.

Gruß,
Andreas

von nur ein (Gast)


Lesenswert?

Höchst wahrscheinlich weil du keinen externen Quarz/Oszilator an deinen 
µC angeschlossen hast und die Fuses auch nicht auf externe 
Taktversorgung eingestellt hast! Dann kannst du in deinem Makefile auch 
1000GHz eingeben aber der controller läuft weiterhin mit seiner internen 
Taktversorgung, meist 1MHz.

von Andreas V. (wicky)


Lesenswert?

Vielen Dank!

von Rolf Magnus (Gast)


Lesenswert?

> 16e6 ist nicht so fehleranfällig wie 16000000. Das ist schnell mal ne 0
> zu viel dabei... oder auch zwei ;)

Alternativ geht auch (16  1000  1000). Das ist auch noch gut 
erkennbar.

von Rolf Magnus (Gast)


Lesenswert?

Ok, und jetzt nochmal, ohne Forums-Zeichenersetzungs-Gedöns:
1
 16 * 1000 * 1000

von Arno R. (conlost)


Lesenswert?

>Das bedeutet ich darf bei meiner define keine 16 MHZ eintragen, sondern
>nur 8?

In deine define solltest du die Frequenz eingeben, die du verwendest.

Wenn du einen 16 MHz Quarz am Controller eingebaut hast, dann gibst
du das in der define an.
Wenn du einen 14,745600 MHz Quarz einsetzt, dann gibst du diesen Wert
in deiner define an.

Mit dem Wert in der define kannst du nicht die Taktfrequenz für den
Controller ändern, sondern du teilst dem Assembler oder Compiler mit
diesem Wert nur mit, wie hoch die Taktfrequenz ist, damit diese bei
Berechnungen in der richtigen Größe berücksichtigt wird.

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.