ATTINY2313 16Mhz

Gast #272692
Lesenswert?

Hallo Leute,

ich programmiere momentan an dem attiny2313.
Der benutzt aber von Haus aus einen Internen Oscillator mit 8Mhz.
Ich habe aber einen Quarz mit 16Mhz drangehängt.
Ich werde irgendwie nicht schlaue wie ich jetzt die fuses setzen muss
damit der den externen Clock nimmt.

Die Tabelle hab ich gefunden:

Table 2. Device Clocking Select(1)
Device Clocking Option                   |   CKSEL3..0
External Clock                           |   0000 - 0001
Calibrated Internal RC Oscillator 4MHz   |   0010 - 0011
Calibrated internal RC Oscillator 8MHz   |   0100 - 0101
Watchdog Oscillator 128kHz               |   0110 - 0111
External Crystal/Ceramic Resonator       |   1000 - 1111


Wie muss ich die CKSEL3-0 bits setzen?

Danke schön,
Richard
Gast #272693
Lesenswert?

Hallo Richard,

Du musst "External Crystal" auswählen (1000-1111). Die restlichen
Fuses müssen nach Table 4 für Frequenzen über 8MHz auf 111 gesetzt
werden - also musst Du 1111 programmieren.

!!! Aber Vorsicht !!! 1 bedeutet UNPROGRAMMED

Du musst Dir 110% sicher sein, dass Du verstehst, wie Dein Programmer
die Fuses setzt! Man kann sich blitzschnell aussperren.

Gruß, Klaus
Gast #272694
Lesenswert?

Danke erstmal,
damit ich 110% sicher bin hacke ich lieber nach ...
Ich programmiere mit PonyProg ... ich nehme bei CKSEL0,
CKSEL1,CKSEL2,CKSEL3 das häckchen weg und SUT1 auch kein Häckchen, nur
bei SUT0 ist das häckchen an.

Alles andere lasse ich so wie es ist. Richtig?
Gast #272696
Lesenswert?

Danke.

Hab noch ne kleine Frage.
Ich brauche einen ziemlich genauen Takt von 1000 mSek bei 16Mhz.
Wie kann ich es machen? Am besten mit einem Timer. Wie errechne ihn ihn
genau?
Programmiere mit Winavr.
Gast #272702
Lesenswert?

Danke. aber wie kann ich die mit WinAVR nutzen? da gibt es keine .inc
Dateien.

Und um auf die Frage zurück zu kommen:

Ich brauche einen ziemlich genauen Takt von 1000 mSek bei 16Mhz.
Wie kann ich es machen? Am besten mit einem Timer. Wie errechne ihn
ihn
genau?
Gast #272705
Lesenswert?

Ganz einfach:
16 bit Timer nehmen, den Prescaler auf 256 setzen, dann ist eine Sek.
genau 62500 Ticks. Dann den Timer so konfigurieren, dass er bei
erreichen dieses Wertes (oder bei Null, das weiss ich nicht mehr so
genau) einen Interrupt auslöst und wieder von vorn startet.

Gruss
Gast #272706
Lesenswert?

Hallo!

Bei WinAVR finden sich die Headerdateien im Installationsverzeichnis
unter \avr\include\avr\. Für den tiny2313 ist dies iotn2313. Dort
kann man auch die teils verschiedenen Interrupt-Namen herauslesen.
Diese Datei sollte aber nicht direkt eingebunden werden, sondern
mittels der Compileranweisung
#include <avr/io.h>
am Beginn des Sourcecodes. Der MC-Typ muss dazu im Makefile
spezifiziert werden:
# MCU name
MCU = attiny2313

Lg
Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren