Forum: Mikrocontroller und Digitale Elektronik ATTiny2313 -> Frequenz einstellen?


von Chris2go (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ihr lieben,

hab jetzt erfolgreich den ganzen Tag mit meinem Arduino rumgebastelt und 
!ERFOLGREICH! einen ATTiny2313-20PU geflasht (mit nem Blinkprogramm).

So, jedenfalls fahr ich grad total auf Atmels ab. Dennoch hab ich jetzt 
ein kleines Problem.
Mit dem WinAVR Programmer's Notepad hab ich vorhin meine Makefile 
irgendwo rauskopiert usw.

Mein momentanes "Problem" ist, das ich die F_CPU auf 1000000 stellen 
muss damit die Delay-Funktion richtig "rechnet".
Aber auf dem Chip steht das er 20 MHz kann.

Jetzt hab ich mich etwas umgeschaut und gelesen das ich "fuses" setzen 
muss.
Ich stell mir diese "fuses" derzeit als eine Art "Register" im 
Controller vor wo ich globale Einstellungen treffen kann.

So, jetzt hab ich in der makefile die ich kopiert habe auch was von 
fuses gelesen.

Und im Datenblatt steh ich bei den Frequenzen immer Kondensatoren die da 
an Pins hängen.

Jedenfalls um ehrlich zu sein bin ich derzeit etwas überfordert.

Meine Frage ist jetzt:
 -> Wie schnell kann dieser ATTiny2313 jetzt "arbeiten"
 -> Wie setze ich diese Fuses? Hab mal die makefile angehängt.
 -> Sind "fuses" etwas einmaliges oder muss das bei jedem flash neu 
geschrieben werden?
 -> Brauch ich jetzt für "mehr" als diese 1 Mhz noch Kondensatoren?
 -> Im angehängten Abschnitt vom Datenblatt seh ich immer "von - bis" 
angaben. Sind diese Frequenzen "pi mal daumen"-Werte?
 -> Und was um Himmelswillen ist das Ding parallel zu XTAL2 + XTAL1

Mit freundlichen Grüßen,
chris2go

von Chris2go (Gast)


Angehängte Dateien:

Lesenswert?

Bild vergessen :D

von Hubert G. (hubertg)


Lesenswert?

Chris2go schrieb:
> Und was um Himmelswillen ist das Ding parallel zu XTAL2 + XTAL1

Das ist ein Quarz. Den brauchst du wenn du mit 20MHz arbeiten willst. 
Der interne Oszillator kann nur max. 8MHz.
Also einen Quarz mit der gewünschten Frequenz verwenden.

Wie du allerdings mit dem Arduino die Fuses einstellst, kann ich dir 
nicht sagen.

von Chris2go (Gast)


Lesenswert?

Ok, wenn ich nun mit den "internen" 8 Mhz arbeiten möchte, brauche ich 
keine Kondensaturen und keinen Quatz?

Das mit den Fuses wird wohl irgendwie mit dem avrdude zusammenhängen.

Jetzt wäre noch intressant ob das mit den "fuses" einmalig gemacht 
werden muss oder mit jedem flashen neu gesetzt werden muss?!

Trotzdem vielen dank soweit.

Vielleicht kann ja noch jemand helfen :)

Lg
Chris2go

von Hubert G. (hubertg)


Lesenswert?

Bei 8MHz intern brauchst du keinen Quarz.
Die Fuses werden beim flashen nicht geändert.
Hier kannst du die nötigen Fuses abfragen und beim AVRdude eintragen.
http://www.engbedded.com/fusecalc/

von Moritz A. (moritz_a)


Lesenswert?

Um das eventuell noch etwas zu erläutern: Der tiny2313 hat einen 
internen RC-Oszillator, der immer mit (ungefähr, innerhalb der 
Toleranzen) 8MHz schwingt.

Im Auslieferungszustand ist dort per Fuse noch ein Taktteiler 
vorgeschaltet, so dass der interne Takt nur noch 1MHz ist. Hat unter 
anderem den Grund, dass er bei dieser Freqzenz mit sämtlichen Spannungen 
funktioniert.

Du kannst per Fuse das ganze einmalig umstellen, oder auch per Register 
zur Laufzeit ändern. Bei den Fuses muss man aufpassen, einmal eine 
falsche eingestellt und schon lässt er sich nicht mehr programmieren 
(Reset als IO-Pin oder externer Takt statt externer Quarz gewählt), ohne 
dass man zusätzliches Equipment verwendet.

Schaue dir mal das CLKPR-Register im Datenblatt an, dort kannst du auch 
zur Laufzeit den Teiler von /8 auf /1 umstellen und somit an volle 8MHz 
kommen.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Hubert G. schrieb:
> Bei 8MHz intern brauchst du keinen Quarz.

Das geht sogar mit 16 MHz intern, wenn du auf den ATtiny861A (auch 20 
Pins) umsteigst.

von Chris2go (Gast)


Lesenswert?

Vielen vielen dank für eure Hilfe.

@Hubert: Habe die Seite auch gefunden, leider bin ich immer am Fuseread 
gescheitert. Problem war ich hatte die "Datenleitungen" um eine Pinreihe 
falsch im Arduino gesteckt [Freundin wollte essen also hab ichs kurz 
abgebaut gehabt]. ärgerlich

@Moritz: Danke für die Information bezüglich der "Gefahr" beim 
falschstellen. War extra vorsichtig beim Fuse setzen. Erst lesen, dann 
auf dem fusecaln "interpretieren" und darüber dann den "DIV8" 
rausgenommen. Diesen dann an den Chip geschrieben und TADA, die blaue 
Led blinkt sich da einen vom Hocker ;D

@Markus: Ja, in Zukunft werde ich mehr auf die spezifikationen der Chips 
achten. Mir war einfach erstmal billig wichtig.
Dieses ArduinoISP ist ja nicht so... das Optimale Werkzeug. Aber ich 
dachte mir versuchste es halt und käufst den Billigsten Atmel mit mehr 
als 4 IO's. Der ATTiny2313 war so das sinnigste mit dem Einkaufspreis 
von 2,07€ :)

Vielen dank nochmals und liebe Grüße,
chris2go

von Thomas E. (thomase)


Lesenswert?

Chris2go schrieb:
> Dieses ArduinoISP ist ja nicht so... das Optimale Werkzeug. Aber ich
> dachte mir versuchste es halt und käufst den Billigsten Atmel mit mehr
> als 4 IO's. Der ATTiny2313 war so das sinnigste mit dem Einkaufspreis
> von 2,07€ :)
Dann möchte ich jetzt lieber nicht wissen, was du unter teuer verstehst.
Guck mal hier:
https://guloshop.de/shop/index.php?XTCsid=9ghkchef7r3rnqlio5u895bs70

Viel hat er nicht im Angebot. Aber was er hat, kann man auch gebrauchen.

mfg.

von Chris2go (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Dann möchte ich jetzt lieber nicht wissen, was du unter teuer verstehst.

So meinte ich das nicht Thomas :) Ich weiß aus Erfahrung das ich mit so 
kleinen Elektronikkomponenten nicht das Perfekte Feingefühl hab.
Studienbedingt komm ich oft am Conrad vorbei und kaufe mal mal 1 bis 2 
Kleinteile um meinen "Horizont" zu erweitern.

Ich wenn ich den irgendwo im Internet bestellen würde, hätte ich wohl 
schon wieder das Interesse verloren.
Bin echt zufrieden. Abend gelesen dass das Arduino als ISP funktioniert. 
am Tag darauf Atmel im Conrad gekauft und losgelegt :)

Hab das auch für mich jetzt mal 10 Seitig Dokumentiert weil es doch 
etwas "komplizierter" ist als einfach im Arduino das Target-Board 
auszuwählen und auf den Upload zu klicken :)

Liebe Grüße,
Chris2go

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.