Hallo allerseits.
Ich habe mir ein Olimexino-Nano gekauft und feststellen müssen, dass da
anscheinend jemand das Datenblatt des atmega32u4 nicht gelesen hat.
Das Board wird mit 3.3V versorgt und hat einen 16MHz-Quarz drauf. Das
ist für diese Spannung deutlich übertaktet - Das Datenblatt erlaubt
eigentlich nur ca. 10-11MHz (Abschnitt 29.5 im Datenblatt) es wird also
mal eben ca. 50% übertaktet...
Ich bin nicht sicher, ob das für mich das komische Verhalten erklären
kann, was ich gestern beobachtet habe - da muss ich nochmal
rumprobieren.
Aber mir stellt sich die Frage ob es einfach damit zu lösen ist, dass
man die clock mit dem Prescaler halbiert, ich bin mir da nicht sicher,
wie das Datenblatt an der Stelle zu lesen ist: Es redet nur von "Maximum
Frequency" und geht nicht genaue darauf ein, welche Clocks denn nun von
dieser maximum frequency betroffen sind.
Ist es legitim, bei 3.3V Versorgung einen atmega32u4 mit Prescaler 1/2
zu betreiben?
Vielen Dank,
Simon
PS: Oh, und noch eine Nachfrage: Ist das F_CPU-#define in "den üblichen"
Libraries vor oder nach dem Prescaler gemeint?
Ich kann nur vom ATmega328 reden, da ich das praktisch so handhabe: Läuft mit 4,2-3,0V (inzwischen stabilisiert mit 3,3V), ab Werk mit 16MHz. Ist also ebenfalls übertaktet. Habe per Prescaler auf 4 MHz runtergeregelt. Läuft problemlos. Komische Effekte mit Timern, die ich vorher beobachtet habe, scheinen passé.
Simon Budig schrieb: > PS: Oh, und noch eine Nachfrage: Ist das F_CPU-#define in "den üblichen" > Libraries vor oder nach dem Prescaler gemeint? Diese Konstante dient dazu Berechnungen anzustellen bzgl. Bauraten, Delays etc. Also muss sie für Delays widerspiegeln wieviel Zeit pro Befehl vergeht, also der Netto-Takt für die Befehlsausführung. Bei Baudrate/Timer etc. muss es angeben, welche Taktrate für diese Komponente an deren Eingang vor Prescaler anliegt. Das ist also mit Deiner anderen Frage zusammen beantwortet - wenn Du durch die Einstellung des Prescalers in den zulässigen Bereich kommen kannst, weil dieser geteilte Takt dann das Input des Systems ist, dann ist das auch der Wert für F_CPU.
Vielen Dank, das hilft mir weiter.
Ich habe gerade eben auch noch gefunden, dass die LUFA-Library neben
F_CPU auch noch F_USB vorsieht (was per Default auf F_CPU steht). Wenn
ich jetzt F_USB auf 16000000 und F_CPU auf 8000000 setze, dann
enumeriert alles ordentlich und scheint zu laufen (mit Prescaler 1/2).
Vielen Dank,
Simon
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.