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
Naja. Was ist verbindlich, das was im Datenblatt steht, oder was irgendjemand erzaehlt ?
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.
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" ?
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.
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
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.
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
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?
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
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?
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 :).
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
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.
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...
16e6 ist nicht so fehleranfällig wie 16000000. Das ist schnell mal ne 0 zu viel dabei... oder auch zwei ;)
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?
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...
Vielen Dank für die vielen und sehr aufschlussreichen Antworten. Allen noch einen schönen abend. Gruß, Andreas
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.
> 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.
Ok, und jetzt nochmal, ohne Forums-Zeichenersetzungs-Gedöns:
1 | 16 * 1000 * 1000 |
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.