mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATTINY2313 16Mhz


Autor: Richard Brose (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus2m5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Richard Brose (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Klaus2m5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja,

scheint O.K. zu sein.

Autor: Richard Brose (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich suche gerade die TN2313def.inc und finde sie einfach nicht.
Kannst du sie eventuell mal anhängen, du müsstest sie ja haben.

Danke, Uwe

Autor: Richard Brose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ich habe die auch nicht gefunden. Hab aber einfach die AT90s2313
benutzt und es funktioniert.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
So ein Mist, da muss doch aber einiges fehlen. Irgendwer muss die doch
aber haben?

MFG Uwe

Autor: Richard Brose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht meldet sich einer der uns die Frage antworten kann.

Autor: jornbyte (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bei Atmel ist sowas zu finden. Die wird aber auch bei der Install. vom
Studio mit entpackt.

Autor: Richard Brose (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Ludwig Wagner (lordludwig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich wüsste was "Takt von 1000 mSek" heißt dann könnte ich dir
helfen.

beoi mir sind 1000 mSek 1 Sekunde. Also willst du ein Takt von 1
Sekunde oder?

Autor: Richard Brose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja genau. Einen Takt von 1. Sekunde oder 1000 mSek.

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Prader (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.