Programmierung Attiny2313. Programmierung von Attiny2313 So schreiben Sie ein Programm für attiny2313

AVR-RISC-Architektur:

RISC (Reduced Instruction Set Computer). Diese Architektur verfügt über einen großen Satz an Anweisungen, von denen die meisten in einem Maschinenzyklus ausgeführt werden. Daraus folgt, dass RISC-Mikrocontroller im Vergleich zu früheren Mikrocontrollern auf Basis der CISC-Architektur (z. B. MCS51) zwölfmal schneller sind.

Oder wenn wir ein bestimmtes Leistungsniveau zugrunde legen, dann benötigen Mikrocontroller auf Basis von RISC (Attiny2313) zur Erfüllung dieser Bedingung eine 12-mal geringere Generatortaktfrequenz, was zu einer deutlichen Reduzierung des Stromverbrauchs führt. In diesem Zusammenhang wird es möglich, verschiedene Geräte auf dem Attiny2313 mit Batteriestrom zu entwerfen.

Betriebsspeichergerät (RAM) und nichtflüchtiger Speicher für Daten und Programme:

  • 2 KB selbstprogrammierbarer Flash-Programmspeicher, der 10.000 Schreib-/Löschwiederholungen ermöglichen kann.
  • 128 Byte beschreibbarer EEPROM-Datenspeicher, der 100.000 Schreib-/Löschwiederholungen ermöglichen kann.
  • 128 Byte SRAM-Speicher (Nur-Lese-RAM).
  • Es besteht die Möglichkeit, die Funktion zum Schutz von Programmcode und EEPROM-Daten zu nutzen.

Peripherieeigenschaften:

  1. Mikrocontroller Attiny2313 Ausgestattet mit einem 8-Bit-Timer-Zähler mit separat installiertem Vorteiler mit einem maximalen Koeffizienten von 256.
  2. Es gibt auch einen 16-Bit-Timer-Zähler mit separater Vorteiler-, Erfassungs- und Vergleichsschaltung. Der Timer-Zähler kann entweder von einer externen oder einer internen Signalquelle getaktet werden.
  3. Zwei Kanäle. Es gibt einen Betriebsmodus mit schneller PWM-Modulation und PWM mit Phasenkorrektur.
  4. Interner Analogkomparator.
  5. Watchdog-Timer (programmierbar) mit internem Oszillator.
  6. Serielle Universalschnittstelle (USI).

Besondere technische Indikatoren von Attiny2313:


  • Leerlauf- Ruhezustand. In diesem Fall funktioniert nur der Zentralprozessor nicht mehr. Der Leerlauf hat keinen Einfluss auf den Betrieb des SPI, des Analogkomparators, des A/D-Wandlers, des Zähler-Timers, des Watchdogs oder des Interrupt-Systems. Tatsächlich kommt es lediglich dazu, dass die Synchronisierung von CPU-Kern und Flash-Speicher stoppt. Der Attiny2313-Mikrocontroller kehrt durch einen externen oder internen Interrupt aus dem Leerlaufmodus in den Normalbetrieb zurück.
  • Stromausfall— Der sparsamste Modus, in dem der Attiny2313-Mikrocontroller tatsächlich vom Stromverbrauch abgeschaltet wird. In diesem Zustand stoppt der Taktgenerator und alle Peripheriegeräte werden ausgeschaltet. Nur das Interrupt-Verarbeitungsmodul von einer externen Quelle bleibt aktiv. Wenn ein Interrupt erkannt wird, beendet der Attiny2313-Mikrocontroller den Power-Down und kehrt zum Normalbetrieb zurück.
  • Stehen zu– Der Mikrocontroller wechselt mit dem SLEE-Befehl in diesen Stromverbrauchs-Standby-Modus. Dies ähnelt dem Herunterfahren, mit dem einzigen Unterschied, dass die Uhr weiterläuft.

Eingabe-Ausgabe-Ports des Attiny2313-Mikrocontrollers:

Der Mikrocontroller ist mit 18 I/O-Pins ausgestattet, die entsprechend den Anforderungen programmiert werden können, die beim Entwurf eines bestimmten Geräts entstehen. Die Ausgangspuffer dieser Ports können einer relativ hohen Belastung standhalten.

  • Port A (PA2 – PA0) – 3 Bit. Bidirektionaler I/O-Port mit programmierbaren Pull-Up-Widerständen.
  • Port B (PB7 – PB0) – 8 Bit. Bidirektionaler I/O-Port mit programmierbaren Pull-Up-Widerständen.
  • Port D (PD6 – PD0) – 7 Bit. Bidirektionaler I/O-Port mit programmierbaren Pull-Up-Widerständen.

Versorgungsspannungsbereich:

Der Mikrocontroller arbeitet erfolgreich mit einer Versorgungsspannung von 1,8 bis 5,5 Volt. Der Stromverbrauch hängt von der Betriebsart des Reglers ab:

Aktiver Modus:

  • 20 µA bei einer Taktfrequenz von 32 kHz und einer Versorgungsspannung von 1,8 Volt.
  • 300 µA bei einer Taktfrequenz von 1 MHz und einer Versorgungsspannung von 1,8 Volt.

Energiesparmodus:

  • 0,5 µA bei einer Versorgungsspannung von 1,8 Volt.

(3,6 MB, heruntergeladen: 5.958)

8-Bit-AVR-Mikrocontroller mit 2 KB systemprogrammierbarem Flash-Speicher

Eigenschaften:

  • AVR RISC-Architektur
  • AVR – hochwertige RISC-Architektur mit geringem Stromverbrauch
    120 Anweisungen, von denen die meisten in einem Taktzyklus ausgeführt werden
    32 8-Bit-Allzweck-Arbeitsregister
    Völlig statische Architektur
  • RAM und nichtflüchtiger Programm- und Datenspeicher
    2 KB selbstprogrammierbarer Flash-Programmspeicher, der 10.000 Schreib-/Löschzyklen standhält
    128 Byte systemprogrammierbarer EEPROM-Datenspeicher, der 100.000 Schreib-/Löschzyklen standhält
    128 Byte integrierter SRAM-Speicher (statisches RAM)
    Programmierbarer Schutz gegen Auslesen des Flash-Programmspeichers und des EEPROM-Datenspeichers
  • Peripheriemerkmale
    Ein 8-Bit-Timer/Zähler mit separatem Vorteiler
    Ein 16-Bit-Timer/Zähler mit separatem Vorteiler, Vergleichsschaltung, Erfassungsschaltung und zwei PWM-Kanälen
    Eingebauter Analogkomparator
    Programmierbarer Watchdog-Timer mit integriertem Oszillator
    USI – Universelle serielle Schnittstelle
    Vollduplex-UART
  • Besonderheiten des Mikrocontrollers
    Integrierter debugWIRE-Debugger
    In-System-Programmierung über SPI-Port
    Externe und interne Interrupt-Quellen
    Niedrigverbrauchsmodi: Leerlauf, Ausschalten und Standby
    Verbesserte Power-On-Reset-Schaltung
    Programmierbare Stromausfall-Erkennungsschaltung
    Eingebauter kalibrierter Generator
  • I/O-Anschlüsse und Gehäusedesign
    18 programmierbare I/O-Leitungen
    20-Pin-PDIP-, 20-Pin-SOIC- und 32-Pin-MLF-Gehäuse
  • Versorgungsspannungsbereich
    von 1,8 bis 5,5 V
  • Arbeitsfrequenz
    0 - 16 MHz
  • Verbrauch
    Aktiver Modus:
    300 µA bei 1 MHz und 1,8 V Versorgungsspannung
    20 µA bei 32 kHz und 1,8 V Versorgungsspannung
    Niedrigverbrauchsmodus
    0,5 µA bei 1,8 V Versorgungsspannung

ATtiny2313-Blockdiagramm:


Allgemeine Beschreibung:

ATtiny2313 ist ein stromsparender 8-Bit-CMOS-Mikrocontroller mit AVR-RISC-Architektur. Durch die Ausführung von Anweisungen in einem einzigen Zyklus erreicht der ATtiny2313 eine Leistung von 1 MIPS bei einer Taktrate von 1 MHz, wodurch der Entwickler das Leistungs-Leistungs-Verhältnis optimieren kann.

Der AVR-Kern integriert einen umfangreichen Befehlssatz und 32 allgemeine Arbeitsregister. Alle 32 Register sind direkt mit der Arithmetic Logic Unit (ALU) verbunden und ermöglichen so den Zugriff auf zwei unabhängige Register bei der Ausführung eines einzelnen Befehls. Dadurch ermöglicht diese Architektur eine zehnmal höhere Leistung als die Standard-CISC-Architektur.

ATtiny2313 hat die folgenden Eigenschaften: 2 KB Flash programmierbarer Programmspeicher, 128 Byte EEPROM-Datenspeicher, 128 Byte SRAM (statisches RAM), 18 Allzweck-I/O-Leitungen, 32 Allzweck-Arbeitsregister, Eindrahtschnittstelle für den integrierten Debugger, zwei flexible Timer/Zähler mit Vergleichsschaltungen, interne und externe Interrupt-Quellen, programmierbarer serieller USART, universelle serielle Schnittstelle mit Startbedingungserkennung, programmierbarer Watchdog-Timer mit integriertem Oszillator und drei softwareinitialisierte Energiesparmodi. Im Leerlaufmodus stoppt der Kern, aber RAM, Timer/Zähler und das Interrupt-System funktionieren weiterhin. Im Power-Down-Modus behalten die Register ihre Werte, aber der Generator stoppt und deaktiviert alle Gerätefunktionen bis zum nächsten Interrupt oder Hardware-Reset. Im Standby-Modus läuft der Master-Oszillator, während der Rest des Geräts im Leerlauf ist. Dadurch kann der Mikroprozessor sehr schnell hochfahren, während er im Leerlauf weiterhin mit Strom versorgt wird.

Das Gerät wird mit hochdichter nichtflüchtiger Speichertechnologie von Atmel hergestellt. Mit dem integrierten ISP-Flash können Sie den Programmspeicher im System über eine serielle SPI-Schnittstelle oder mit einem herkömmlichen nichtflüchtigen Speicherprogrammierer neu programmieren. Durch die Kombination eines 8-Bit-RISC-Kerns mit selbstprogrammierendem Flash-Speicher in einem einzigen Chip ist der ATtiny2313 ein leistungsstarker Mikrocontroller, der dem Entwickler von Mikroprozessorsystemen mehr Flexibilität bietet.

Der ATTiny2313-Mikrocontroller ist eine Wiederbelebung einer neuen Serie des alten AT90S2313-Mikrocontrollers, der seinerzeit recht erfolgreich war. ATTiny2313 ist eine verbesserte Version seines Vorgängers. Er erbte aber auch eine eher bescheidene Peripherie. Was die Funktionalität betrifft, ist ATTiny2313 also bescheiden. Der Mikrocontroller ist in zwei Versionen erhältlich – normal (ATTiny2313) und mit reduzierter Leistung (ATTiny2313). V). Für eine reduzierte Ernährung müssen Sie mit einer Herabstufung bezahlen Taktfrequenz Mikrocontroller (langsamerer Betrieb).

Allgemeine Charakteristiken:

  • 120 Anweisungen optimiert für die Programmierung in Hochsprachen;
  • 32 Allzweckregister (ich liebe das);
  • Fast jeder Befehl wird in einem Taktzyklus des Generators ausgeführt, wodurch die Leistung 20 MIPS (20 Millionen Operationen pro Sekunde) erreicht.
  • 2 Kilobyte Flash-Speicher für Programme. Der Flash-Speicher kann direkt vom Controller (selbst) programmiert werden;
  • 128 Byte EEPROM (nichtflüchtiger Speicher);
  • 128 Byte SRAM (Random Access Memory).

Was haben wir an Bord dieses Peripheriechips?

  • ein 8-Bit-Timer/Zähler;
  • ein 16-Bit-Timer/Zähler;
  • vier PWM-Kanäle;
  • analoger Komparator;
  • Watchdog-Timer;
  • USI Universal Serial Interface;
  • USART (das ist ein Computer COM RS232).

Besondere Leckereien:

Stromfrequenz:

1,8 – 5,5 V (für ATTiny2313V) bis 10 MHz
2,7 – 5,5 V (für ATTiny2313) bis 20 MHz
Im Betriebsmodus verbraucht er 230 µA bei einer Versorgungsspannung von 1,8 V und einer Hauptoszillatorfrequenz von 1 MHz. Im Energiesparmodus verbraucht Power-Down weniger als 1 µA bei 1,8 V

Programmierung

ATTiny2313 hat es geschafft, eine weitere Überarbeitung zu überstehen und einen Brief zu erhalten A Am Ende. Zu den Neuerungen zählen:
— Auf allen Beinen traten äußere Unterbrechungen auf.
— Die Trennung zwischen Normal- und Niederspannungsversorgung wurde aufgehoben. ATTiny2313A kann mit 1,8 bis 5,5 V betrieben werden, wobei lediglich Frequenzbeschränkungen von 4 MHz (für 1,8 V) bis 20 MHz eingehalten werden müssen.
— Der Stromverbrauch wurde sowohl im Normalmodus als auch im Energiesparmodus deutlich reduziert – 190 µA bzw. 0,1 µA.
Darüber hinaus hat ATTiny2313 durch die letzte Überarbeitung einen älteren Bruder ATTiny4313 (ohne den Buchstaben A) erhalten. Der ältere Bruder ähnelt dem ATTiny2313A, mit Ausnahme des doppelten Speichers (4 kB Flash, 256 Byte EEPROM, 256 Byte SRAM). Diese Änderungen zeigen die Absicht von Atmel, diesen Mikrocontroller weiterhin zu unterstützen.

Aufgrund der schlechten Verfügbarkeit und des unverständlichen Preises der neuen Versionen von ATTiny2313A und ATTiny4313 werden meine Geräte auf der alten Version von ATTiny2313 entwickelt. Da aber neue Versionen mit alten kompatibel sind, sollte die Firmware theoretisch auch auf neuen Mikrocontrollern funktionieren.

Schlussfolgerungen:

Wie alle AVR-Mikrocontroller Die ATTiny2313-Serie ist produktiv und wirtschaftlich. Es verfügt über ein SOIC-Gehäuse, das sich für das Platinenlayout und das Löten eignet. Die Abstände zwischen den Beinen sind relativ groß (man schafft es sogar, zwischen benachbarten Beinen eine Spur auf dem Brett anzubringen). Leicht zu lernen. Es gibt viel Literatur auf Russisch. Aufgrund der großen Beliebtheit seines Vorgängers AT90S2313 wurden im Netz viele interessante Schaltungen zur Wiederholung entwickelt. Weit verbreitet im Handel erhältlich. Preiswert. Um mit dem Studium von Mikrocontrollern zu beginnen, sind Sie hier genau richtig. Unter den Mängeln sind die heute eher bescheidenen Peripheriegeräte hervorzuheben. Und der Nachteil ist, dass das SOIC-Gehäuse etwas groß ist (obwohl ich schon kleinlich bin). Mit geringem Speicher können Sie auf dem ATTiny2313 keine großen Projekte erstellen. Im Allgemeinen ein guter Hochleistungscontroller für kleine Projekte, die keine spezielle Peripherie erfordern. Aufgrund der besten Verfügbarkeit und niedrigen Kosten habe ich vor, es in meinen Geräten weit verbreitet zu verwenden.

Heute werden wir versuchen, einen einfacheren Mikrocontroller zu verwenden ATtiny2313 und schließen Sie daran ein Zeichen-LCD-Display mit zwei Zeilen zu je 16 Zeichen an.

Wir werden das Display anschließen auf übliche Weise 4-Bit-Weg.

Zunächst beginnen wir natürlich mit dem Mikrocontroller, da wir das Display bereits aus früheren Lektionen bestens kennen.

Öffnen wir das Controller-Datenblatt ATtiny2313 und sehen wir uns die Pinbelegung an

Wir sehen, dass dieser Controller in zwei Arten von Gehäusen existiert, aber da ich ihn in einem DIP-Paket erhalten habe, werden wir diese spezielle Version des Gehäuses betrachten, und im Prinzip unterscheiden sie sich nicht groß, außer im Aussehen, also wie die Anzahl Anzahl der Beine ist gleich - jeweils 20.

Da es 20 Beine im Vergleich zu den 28 Beinen des ATMega8-Controllers gibt, an denen wir die ganze Zeit gearbeitet haben und an denen wir auch weiterhin arbeiten werden, wird es dementsprechend auch weniger Möglichkeiten geben.

Im Prinzip ist alles da, was der ATmega8 hatte, nur dass es weniger Portklauen gibt. Da wir aber vor der Aufgabe stehen, zu versuchen, ihn über den SPI-Bus mit einem anderen Controller zu verbinden, deprimiert uns das nicht sonderlich.

Es gibt noch einige andere Unterschiede, aber diese sind geringfügig und wir werden sie bei Bedarf kennenlernen.

Lassen Sie uns eine Schaltung wie diese zusammenstellen (klicken Sie auf das Bild, um das Bild zu vergrößern)

Das Display wird an die Pins von Port D angeschlossen. PD1 und PD2 sind an die Steuereingänge angeschlossen, der Rest ist an die Pins des Displaymoduls D4-D7 angeschlossen.

Erstellen wir ein Projekt mit dem Namen TINY2313_LCD und übertragen wir alles hinein, bis auf das Hauptmodul aus dem Projekt zum Anschluss des Displays an Atmega8.

Natürlich müssen einige Dinge erneuert werden. Dazu müssen Sie sorgfältig untersuchen, welches Bein womit verbunden ist. Der E-Bus des Displays ist mit PD2 verbunden und der RS-Bus ist mit PD1 verbunden, also nehmen wir Änderungen an der Datei vor LCD.h

#definierene1PORTD|=0b0000 01 00 // Zeile E auf 1 setzen

#definierene0PORTD&=0b1111 10 11 // Zeile E auf 0 setzen

#definierenrs1PORTD|=0b00000 01 0 // setze die RS-Leitung auf 1 (Daten)

#definierenrs0PORTD&=0b11111 10 1 // setze die RS-Leitung auf 0 (Befehl)

Wie wir an der fetten Schriftart erkennen können, gab es bei uns keine so drastischen Änderungen.

Nun Informationseingaben. Hier verwenden wir die Beine PD3-PD6, das heißt, sie sind im Vergleich zur Verbindung zu Atmega8 um 1 Punkt verschoben, daher werden wir auch etwas in der Datei korrigieren lcd.c in Funktion sendhalfbyte

PORTD&=0b 1 0000 111; // Informationen über die Eingänge DB4-DB7 löschen, den Rest in Ruhe lassen

Aber das ist noch nicht alles. Bisher haben wir die übertragenen Daten um 4 verschoben, jetzt müssen wir sie aufgrund der oben genannten Änderungen nur noch um 3 verschieben. Daher werden wir in derselben Funktion auch die allererste Zeile korrigieren

C<<=3 ;

Das sind alle Änderungen. Stimmen Sie zu, sie sind nicht so toll! Dies wird dadurch erreicht, dass wir immer versuchen, universellen Code zu schreiben und Makroersetzungen zu verwenden. Hätten wir nicht schon einmal Zeit damit verbracht, hätten wir den Code in fast allen Funktionen unserer Bibliothek korrigieren müssen.

Im Hauptmodul berühren wir die Initialisierung von Port D nicht; wir lassen das gesamte Modul in den Ausgangszustand übergehen, wie in Lektion 12.

Versuchen wir, das Projekt zusammenzustellen und sehen uns zunächst das Ergebnis in Proteus an, da ich auch ein Projekt dafür erstellt habe, das sich auch im angehängten Archiv mit dem Projekt für Atmel Studio befindet

Bei uns funktioniert alles super! So können Sie schnell ein Projekt für einen Controller für einen anderen umgestalten.

Proteus ist sehr gut, aber es ist immer schöner, sich echte Details anzuschauen. Die gesamte Schaltung wurde auf einem Steckbrett zusammengebaut, da ich für diesen Controller kein Debugboard hergestellt oder zusammengebaut habe. Wir werden den Programmierer über einen Standardstecker wie diesen anschließen

Hier ist das gesamte Diagramm

Hier ist alles Standard. Pull-up-Widerstand für RESET usw.

Bevor wir nun den Controller in avrdude flashen, müssen wir den Controller auswählen und seinen Flash-Speicher lesen

Gehen Sie dann zur Registerkarte SICHERUNGEN und stellen Sie die Sicherungen richtig ein. Da wir keinen Quarzresonator haben, installieren wir die Sicherungen auf diese Weise


Spitze