Forum: Mikrocontroller und Digitale Elektronik Umgang mit Designfehler Olimexino-Nano


von Simon B. (nomis)


Lesenswert?

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?

von Dirk K. (dekoepi)


Lesenswert?

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é.

von Conny G. (conny_g)


Lesenswert?

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.

von Simon B. (nomis)


Lesenswert?

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
Noch kein Account? Hier anmelden.