Inhaltsverzeichnis:

Wiederverwendung von ATtiny84/85 SPI-Schnittstellenstiften - Gunook
Wiederverwendung von ATtiny84/85 SPI-Schnittstellenstiften - Gunook

Video: Wiederverwendung von ATtiny84/85 SPI-Schnittstellenstiften - Gunook

Video: Wiederverwendung von ATtiny84/85 SPI-Schnittstellenstiften - Gunook
Video: BitBastelei #272 - Arduino als PIC-Programmiergerät 2024, Juli
Anonim
ATtiny84/85 SPI-Schnittstellen-Pin-Wiederverwendung
ATtiny84/85 SPI-Schnittstellen-Pin-Wiederverwendung

Dieses anweisbare ist eine Fortsetzung des anweisbaren "ATtiny84/85 In-Circuit-Debugging mit seriellem Ausgang" und erweitert diese Hardware- und Software-Konfiguration, um das Problem der Wiederverwendung der Programmier-Download-Pins durch das Anwendungsprogramm anzugehen. Insgesamt werden zwischen diesem und dem Teil 1 instructable die folgenden Themen diskutiert / demonstriert:

Thema ATtiny84 ATtiny85
Serielle Kommunikation mit der SoftwareSerial-Klasse x x
Geräte-Pins zwischen Anwendung und Download teilen x x
Pin-Wechsel-Interrupt x
Externer Interrupt x
Im POWER_DOWN-Modus schlafen; bei Unterbrechung aufwachen x
Problemumgehung für den "multiply Defined" Interrupt Vector Link-Fehler im Zusammenhang mit SoftwareSerial x
In-Circuit-Modifikation, Download, Debug, … Entwicklungszyklus für die ATtiny-Geräte x x

Das Hinzufügen einer Hardware-E/A-Komponente zu einem der Pins, die der SPI-Programmierschnittstelle gewidmet sind, ist manchmal in Ordnung, manchmal nicht. Beispielsweise führt das Hinzufügen einer LED zu MISO nur dazu, dass die LED während des Downloads flackert und dann für die Anwendung verfügbar ist. Das Hinzufügen eines Piezo-Summers zu MISO führt jedoch zu einem schrecklichen Kreischen, gefolgt von einem Download-Fehler.

Dieses anweisbare erklärt, wie man einen 4x2:1 Multiplexer verwendet, um die Verwendung der Pins, die den MISO-, MOSI- und SCK-Signalen der SPI-Schnittstelle zugewiesen sind, "wiederzugewinnen", indem man sie während des Downloads schützt. Die Wiederverwendung des RESET-Pins erfordert einen Sicherungswechsel und wird von diesem Ansatz nicht abgedeckt. Die Doppelbelegung der Pins wird erreicht, indem der Multiplexer verwendet wird, um zwischen den Anwendungs- und Programmiereingängen umzuschalten, je nachdem, ob ein Download im Gange ist. Code und Schaltpläne sind sowohl für den ATtiny84 als auch für den ATtiny85 enthalten. Die ATiny84-Konfiguration wird zuerst angesprochen, da sie über zwei I/O-Ports verfügt und zur Veranschaulichung einiger zusätzlicher Probleme/Lösungen verwendet werden kann. Im Anschluss an die tiny84-Diskussion werden die gleichen Szenarien für den ATtiny85 diskutiert.

Schritt 1: Erforderliche Hardware

Bild
Bild

Die meisten der erforderlichen Hardware wurde in Teil 1 instructable aufgeführt, so dass nur die neue Hardware unten aufgeführt ist.

Name Mögliche Quelle Wie verwendet
4x2:1 Multiplexer Mäusefänger Enthält vier 2-Input;1-Output-Schalter, die den Mechanismus darstellen, durch den die SPI-Schnittstellensignale und Anwendungs-I/Os gemeinsam genutzt werden.
SPST-Schalter Jeder Schaltertyp (momentan oder verriegelt) funktioniert. Der Schalter wird verwendet, um die gemeinsame Nutzung von Pins für einen Anwendungseingang zu veranschaulichen.
10K Widerstand Pull-Down-Widerstand für den SPST-Schalter, um einen potentialfreien Eingang zu vermeiden
Bild
Bild
Bild
Bild

Der Multiplexer ist der Schlüssel zur Trennung der Pin-Download-Nutzung von der Anwendungsnutzung. Die Gesamtfunktionalität des 4x2:1-Multiplexers ist recht einfach und besteht aus 2 Steuersignalen und 4 identisch funktionierenden Schaltern. Das Verhalten jedes Multiplexer-Pins wird im Folgenden erläutert:

Stift Name Funktion
15 g Wie in der Wahrheitstabelle angegeben, funktioniert der Multiplexer nur, wenn der G-Enable-Pin niedrig ist. Da wir den Multiplexer nie vollständig deaktivieren möchten, wird Pin 15 direkt mit Masse verbunden.
2-4; 5-7; 9-11;12-14 A (Eingang), B (Eingang), Y (Ausgang) Es gibt vier 2-Eingang; 1-Ausgangsschalter, wobei jede Gruppe von 3 Pins fortlaufend in der Reihenfolge A (Eingang), B (Eingang), Y (Ausgang) nummeriert ist, z. B. für Schalter 1; Stift 2=1A; Stift 3=1B; Stift 4=1Y.
1 Auswählen Wenn Select niedrig ist, wird Schaltereingang A mit dem zugehörigen Schalterausgangspin Y verbunden. Wenn Select hoch ist, wird Schaltereingang B stattdessen mit Ausgang verbunden. Die Schalter werden gleichzeitig vom Select-Signal angesteuert und funktionieren identisch.
8 Masse Multiplexer-IC-Masse
16 VCC Multiplexer-IC-Leistung

Schritt 2: Übersicht der Testfälle

Bild
Bild
Bild
Bild

Die beiden Szenarien für die Wiederverwendung von Pins basieren darauf, ob der Pin ein Anwendungseingang oder -ausgang ist. Die Vorgehensweise bei der Verarbeitung von Eingaben ist immer gleich; auch die Vorgehensweise für Anwendungsausgaben ist unabhängig von der Hardwarekomponente identisch. Trotzdem ist die Erklärung einfacher und hoffentlich klarer, wenn konkrete Beispiele angegeben werden. Minimalistische Layouts für die beiden Fälle sind oben gezeigt. Für die detaillierten Einstellungen später werden die Verbindungen zu einem Eichhörnchennest, daher kann es nützlich sein, auf diese saubereren Diagramme zurückzugreifen.

RESET ist die perfekte Wahl für das Multiplexer-Select-Signal, da es während des Downloads niedrig ist, aber nach Abschluss des Downloads wieder hoch wird. Beachten Sie, dass jeder der Multiplexerschalter für beide Fälle verwendet werden könnte, da sich alle Schalter identisch verhalten. Außerdem ist keines der Beispiele "realistisch"; sie wurden stattdessen gewählt, um die Isolationstechniken am einfachsten zu veranschaulichen

  1. Ausgangsfall: LED-Ausgang von ATtiny84 Pin 4 (SCK) ist mit Multiplexer-Schalter 2. isoliert

    • Verbinden Sie den Multiplexer-Pin 2A mit Masse
    • Verbinden Sie den Multiplexer-Pin 2B mit dem ATtiny85-Pin 4
    • Ausgang 2Y an die LED-Anode anschließen

      • Erwartete Ergebnisse:

        • LED ist während des Downloads aus, da an 2A, Masse angeschlossen
        • LED an Anwendungsausgangspin 4 nach Download über 2B angeschlossen und beginnt zu blinken
  2. Eingangsfall: SPST-Schaltereingang an ATtiny84 Pin 6 (MOSI) ist mit Multiplexer-Schalter 3. isoliert

    • Das MOSI-Anschlusskabel vom AVR-Programmer-Header wird auf 3A verschoben
    • Schalteingang 3B ist mit SPST-Ausgang verbunden
    • Ausgang 3Y ist mit ATtiny84 Pin 6. verbunden

      • 3A, MOSI, ist während des Downloads mit Pin 6 verbunden
      • 3B, SPST-Ausgang, wird nach dem Download mit Pin 6 verbunden

Fall 1 ist erfolgreich, wenn die LED während des Programmdownloads nicht flackert und dann nach dem Download alle zwei Sekunden blinkt, wie unter Programmsteuerung erwartet. Ohne Isolierung würde die LED während des Downloads flackern, da sie direkt mit dem SCK-Signal verbunden ist, das den Zustand zum Empfangen/Senden von Taktdaten ändert.

Fall 2 ist erfolgreich, wenn das MOSI-Signal während des Downloads an den ATtiny84 weitergeleitet wird, d.h. der Download nicht fehlschlägt und die LED nach dem Download auf SPST Ein-/Ausschalten reagiert. Fall 2 verhindert einen unwahrscheinlichen Download-Fehler. Ohne Isolierung führt der SPST-Schalter zu einem Fehler, wenn 1) ein verriegelter Schalter verwendet wird und 2) der Schalter während des Downloads in der Ein-Position belassen wird. Wenn der Switch durch den Multiplexer isoliert ist, kann er unter keinen Umständen einen Download-Fehler verursachen. Ein bisschen langwierig, aber beruhigend für uns alte Leute.

Eine Folge der Verwendung des Multiplexers ist, dass die Hardwarekomponente nicht mehr direkt mit dem I/O-Pin des Mikrocontrollers verbunden werden kann. Dies ist etwas unpraktisch, ermöglicht aber, dass die Komponente während des Tests zusammen mit der anderen Anwendungshardware auf dem Steckbrett verbleibt und nach Abschluss des Tests an ihren rechtmäßigen Ort zurückbewegt werden kann.

Schritt 3: ATtiny84 Fall 1 - Anwendungsausgabe isolieren

Bild
Bild

In diesem Schritt wird die Einrichtung für die gemeinsame Nutzung eines Anwendungsausgangspins mit einem Downloadsignal beschrieben. Das verwendete Beispiel ist die an Pin 4 (SCK) angeschlossene LED. Die Verwendung der vorhandenen LED als Beispiel ermöglicht es, den Multiplexer in die Hardware- und Softwareumgebung von Teil 1 zu integrieren.

  • Hardware

    • Fügen Sie den Multiplexer dem Steckbrett an der im obigen Fritzing-Diagramm gezeigten relativen Position hinzu. Der Multiplexer ist zur Mitte hin positioniert, um Platz für den in Fall 2 benötigten SPST-Schalter zu schaffen.
    • Erweitern Sie das RESET-Signal zum Multiplexer, indem Sie ein Anschlusskabel (empfohlen gelb) von ATtiny84 Pin 11 zu Multiplexer Pin 1 hinzufügen.
    • Das restliche Hardware-Setup ist wie in Schritt 2 angegeben

      • Verbinden Sie den Multiplexer-Pin 2A direkt mit Masse
      • Verbinden Sie Pin 2B mit ATtiny84 Pin 4
      • Ausgang 2Y an die LED-Anode anschließen

        • Erwartete Ergebnisse:

          • während des Downloads ist 2Y mit Masse (2A) verbunden, damit die LED aus bleibt
          • Nach dem Download ist 2Y mit ATtiny84 Pin 4 verbunden - Applikations-LED-Steuerung
  • Software

    • Der Code von Teil 1 wird wiederverwendet; verfügbar aus dem Teil 1 anweisbar statt hier dupliziert
    • Laden und kompilieren Sie das Teil 1-Programm in der Arduino IDE
    • Schließen Sie den Tiny AVR-Programmierer an einen PC-USB-Port an
    • Stecken Sie das Adafruit USB-zu-Seriell-Kabel in einen zweiten USB-Port

      • Ein COM-Port wird erstellt und automatisch in der IDE-Portliste verfügbar gemacht
      • Starten Sie das COM-Fenster
    • Laden Sie den kompilierten Code auf den ATtiny84 herunter

Die Ergebnisse des Anwendungsprogramms sind die gleichen wie bei Teil 1, da die einzige Änderung darin bestand, die LED an eine "geschützte" Stelle zu verschieben: Die LED blinkt im 2-Sekunden-Intervall; serielle Ausgabe ist die gleiche. Der einzige Unterschied, der auftreten sollte, ist, dass die LED während des Downloads nicht mehr flackert, da sie während dieser Zeit über den Multiplexer-Pin 2A mit Masse verbunden ist.

Bild
Bild

Schritt 4: ATtiny84 Fall 2 - Anwendungseingang isolieren

Bild
Bild

Dieser Schritt baut auf dem Setup für den vorherigen Fall der Ausgabeisolation auf. Hardwareänderungen bestehen darin, einen SPST-Schalter über den Multiplexer an ATtiny84 Pin 6 (MOSI) anzuschließen. Die Hardwareänderungen sind also minimal, aber es gibt mehrere Softwareänderungen, damit der SPST-Schalter die LED mit einem Pinwechsel-Interrupt steuern kann. Der aktualisierte Code ist am Ende dieses Abschnitts enthalten. Der Code sollte in die Arduino IDE kopiert werden; schlagen vor, es unter dem Namen Multiplexer_Input zu speichern. (Ich entschuldige mich für die Länge dieses Abschnitts, aber es ist das Herzstück des instructable Zwecks und denke, es liest sich besser als Monolith, anstatt künstliche Pausen einzufügen.)

Aktualisieren Standort Zweck
"gehackte" SoftwareSerial-Klasse einschließen Abschnitt einschließen Die LED wird nun vom SPST-Schalter über einen Pinwechsel-Interrupt angesteuert. Die SoftwareSerial-Klasse muss modifiziert werden, da sie ansonsten ALLE Pinwechsel-Interrupt-Vektoren zuweist. Dies führt zu einem "Multiple Definition"-Verbindungsfehler für den (Port 0)-Vektor, der dem SPST-Switch zugewiesen ist. Die gehackte SoftwareSerial-Version sollte im selben Verzeichnis wie das Programm abgelegt werden, damit sie nur diese Anwendung betrifft.
Definition des SPST-Eingangspins Abschnitt einschließen/Definitionen Zuordnung des SPST-Eingangs zu einem Geräte-Pin. Der Pin ist gerätespezifisch und wird daher den #ifdef ATtiny8x-Abschnitten hinzugefügt.
SPST-Eingangspin-Modus Setup-Funktion Der SPST-Pin ist als INPUT. konfiguriert
SPST-Pin-Interrupt konfigurieren Setup-Funktion Der Interrupt-Vektor wird dem SPST-Eingangspin zugewiesen, so dass eine Schalterzustandsänderung einen Interrupt auslöst. Die Konfigurationsregister und der Interrupt-Typ sind gerätespezifisch. Um den Code so einfach wie möglich zu gestalten, werden die Unterschiede innerhalb eines #falls definierten Abschnitts behandelt
Serielle Nachricht vollständig einrichten Setup-Funktion Die Meldung Setup abgeschlossen serielle Ausgabe wird geändert, um die Anwendung Multiplexer Input widerzuspiegeln
ISR-Funktion des SPST-Schalters hinzufügen Codeabschnitt Der ISR für den SPST-Pinwechsel-Interrupt wird hinzugefügt. Der Code ist üblich, aber der verwendete Vektor ist gerätespezifisch und wird in den geräteabhängigen Abschnitten oben im Programm definiert. Um zu überprüfen, ob der ISR aktiviert ist, wird der LED-Zustand geändert. Obwohl es in einer realen Anwendung ein No-No ist, wird eine serielle Ausgabenachricht generiert, die den neuen LED-Zustand widerspiegelt.
Schleifenverarbeitung ändern Schleifenfunktion Der ISR steuert nun das Ein- und Ausschalten der LED, so dass die Funktionalität aus der Schleifenroutine entfernt wird. Als eine Art "Extra" kommt für ATtiny84 ein Aufruf der Sleep-Routine hinzu. Für diese Anwendung funktioniert ATtiny85 sleep nicht; möglicherweise aufgrund der Interferenz der Software Serial-Klasse, da sie mit entfernter SoftwareSerial funktioniert.
Schlafroutine hinzufügen Codeabschnitt Die Schlaffunktion ist nicht erforderlich, um die Verwendung des Multiplexers zu demonstrieren. Nur hinzugefügt, weil Sie normalerweise auf eine Eingabe im POWER_DOWN-Modus warten möchten, um Strom zu sparen, anstatt weiter durch die Programmschleife zu laufen und nichts zu tun, bis eine Eingabe erfolgt.

Ändern Sie den Code der SoftwareSerial-Klasse

Die SoftwareSerial-Klasse muss geändert werden, damit sie nicht alle Interrupt-Ports für die Pinänderung belegt. Der SoftwareSerial-Klassencode befindet sich unter

C:\Programme (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src

Suchen Sie nach PCINT0_vect in SoftwareSerial.cpp, um die Startposition für die Codeänderungen zu finden. Fügen Sie den folgenden Code unmittelbar vor der vorhandenen Anweisung #if define(PCINT0_vect) hinzu.

#wenn definiert(_AVR_ATtiny84_)

#define MYPORT PCINT1_vect #elif define(_AVR_ATtiny85_) #define MYPORT PCINT0_vect #endif ISR(MYPORT) { SoftwareSerial::handle_interrupt(); }

Kommentieren Sie nun den vorhandenen Codeblock aus, der die Port-Interrupt-Vektoren wie unten angegeben zuweist (fügen Sie einfach die Kommentarsymbole für Start- und Endblock /* und */ hinzu):

/*

#wenn definiert(PCINT0_vect) ISR(PCINT0_vect) { SoftwareSerial::handle_interrupt(); } #endif #if definiert (PCINT1_vect) ISR (PCINT1_vect) { //SoftwareSerial::handle_interrupt(); ISR(PCINT1_vect, ISR_ALIASOF(PCINT0_vect)); } #endif #wenn definiert(PCINT2_vect) ISR(PCINT2_vect, ISR_ALIASOF(PCINT0_vect)); #endif #wenn definiert(PCINT3_vect) ISR(PCINT3_vect, ISR_ALIASOF(PCINT0_vect)); #endif */

Konfigurieren Sie die Hardware

Der SPST-Schalter ist an ATtiny84 Pin 6 (MOSI) angeschlossen, wie in Schritt 2 beschrieben. Das Verfahren wird hier der Einfachheit halber dupliziert.

  • Verbinden Sie den Schaltereingang 3A mit dem Tiny AVR Programmer Header MOSI-Kabel
  • Verbinden Sie 3B mit dem SPST-Schalter ON-Ausgangspin
  • 3Y mit ATtiny84 Pin 6. verbinden

    • ERGEBNISSE:

      • 3A, MOSI, wird während des Downloads auf ATtiny84 Pin 6 durchgeschaltet
      • 3B, SPST-Ausgang, wird nach dem Download auf Pin 6 geschaltet

Führen Sie das Programm aus

Stellen Sie den SPST-Schalter vor dem Laufen in die Aus-Position. Andernfalls leuchtet die LED beim Ausschalten des Schalters und umgekehrt. Befolgen Sie das Verfahren für Schritt 3, um das Anwendungseingabeprogramm mit der Arduino IDE zu laden, zu kompilieren und herunterzuladen. Wie zuvor sollte die LED während des Downloads nicht flackern, sodass der einzige Hinweis darauf, dass das Programm läuft, die serielle Meldung am Ende der Setup-Routine ist: SETUP Complete - Input Example

An diesem Punkt wartet das Programm auf eine Eingabe vom SPST-Schalter. Wenn Sie den Schalter in die ON-Position bringen, schaltet sich die LED ein; Zurück in die Aus-Position schaltet die LED aus. Ausgabenachrichten bestätigen, dass der ISR aufgerufen wurde (ISR: Led HIGH, ISR: Led LOW). Beachten Sie, dass die Reihenfolge der seriellen Nachrichten lautet: GO TO SLEEP zuerst beim Warten auf eine Schalterzustandsänderung; beim Erhalten einer Schaltereingabe wird der ISR aufgerufen, schaltet die LED um und dokumentiert die Änderung; dann nimmt die Verarbeitung nach dem Schlafaufruf ab, da der Interrupt den Prozessor aufweckt.

Bild
Bild

PROGRAMM FÜR DIESE ANLEITUNG:

//************************************************************************

// TEIL 2: PIN-Freigabe für Anwendung/Download von Geräten //. Ändert den Teil 1-Code, um die Wiederverwendung der Pins durch Anwendungen zu unterstützen, // die der SPI-Programmierschnittstelle // zugewiesen sind. "Comon"-Code für ATtiny85 und ATtiny84 //**************************************** ******************************** #include "SoftwareSerial.h" // Modifizierte Arduino SoftwareSerial-Klasse #include // Während der Verarbeitungscode ist üblich, die verwendeten Pins sind gerätespezifisch #wenn definiert(_AVR_ATtiny84_) || define(_AVR_ATtiny84A_) #define ledPin 4 // Umgeschaltet, um angeschlossene LEDs ein-/auszuschalten #define rxPin 9 // Pin verwendet für seriellen Empfang #define txPin 10 // Pin verwendet für serielle Übertragung #define SpstPin 6 // Eingang vom SPST-Schalter (MOSI) #define ISR_VECT PCINT0_vect // SPST-Schalter Pinwechsel-Interrupt-Vektor #elif define(_AVR_ATtiny85_) #define ledPin 1 #define rxPin 4 #define txPin 3 #define SpstPin 2 // Eingang vom SPST-Schalter (INT0) #define ISR_VECT. INT0_vect // SPST-Schalter Pinänderungs-Interrupt-Vektor #else #error Nur ATiny84 und ATtiny85 werden von diesem Projekt unterstützt #endif // Instanz der Software Serial Klasse erstellen, die angibt, welches Gerät // Pins zum Empfangen und Senden verwendet werden sollen SoftwareSerial mySerial(rxPin, txPin); //------------------------------------------------ ------------------------ // Verarbeitungsressourcen initialisieren //------------------ -------------------------------------------------- --- Void setup () { mySerial.begin (9600); // Start der seriellen Verarbeitungsverzögerung (2000); // Geben Sie dem seriellen Com-Port Zeit, um den Start abzuschließen. // andernfalls fehlt der 1. Ausgang wahrscheinlich oder ist verstümmelt pinMode (ledPin, OUTPUT); // LED-Pin für OUTPUT konfigurieren pinMode (SpstPin, INPUT); // Konfigurieren Sie den SPST-Schalterstift als INPUT #wenn definiert (_AVR_ATtiny84_) || (_AVR_ATtiny84A_) // Einrichten des Pinwechsel-Interrupts, um den Schaltereingang an Pin 6 (MOSI) zu verarbeiten GIMSK |= (1<

Schritt 5: ATtiny85 Fall 1 - Anwendungsausgabe isolieren

Bild
Bild

Anstatt ein doppeltes Hardware-Setup für den ATtiny85 zu erstellen, ist es wahrscheinlich einfacher, mit der fertigen Konfiguration für ATtiny84 aus Schritt 4 zu beginnen und den tiny84-Chip durch den tiny85 zu ersetzen. Die benötigte Hardware ist dann bereits vorhanden. Wenn Sie diesen Ansatz verwenden, suchen Sie den tiny85 so, dass die Pins 3 und 4 mit dem seriellen Kabel TX und Empfangsdrähten ausgerichtet sind. Es ist dann nur noch eine Frage der Verlegung der SPI-Schnittstellenkabel, damit sie ihren erforderlichen Positionen für das ATtiny85 entsprechen.

Wenn Sie von vorne beginnen, folgen Sie einfach den allgemeinen Schritten aus Schritt 3 und dem obigen Fritzing-Diagramm. Der Code ist derselbe, der für den ATtiny84 in Schritt 3 verwendet wurde, mit den gleichen erwarteten Ergebnissen - kein Flackern während des Downloads; während des Betriebs blinkt die LED in 2-Sekunden-Intervallen und serielle Ausgabemeldungen folgen dem LED-Zustand.

Bild
Bild

Schritt 6: ATtiny85 Fall 2 - Anwendungseingang isolieren

Bild
Bild

Beginnen Sie für das Hardware-Setup mit der Konfiguration aus Schritt 5 und fügen Sie den SPST-Schalter wie im obigen Fritzing-Diagramm angegeben hinzu. Ich habe tatsächlich einen Momentschalter für die tiny85-Version verwendet und er macht die Überprüfung etwas einfacher. Beachten Sie, dass der Schaltausgang um 180 Grad gegenüber der ATtiny84-Konfiguration gedreht ist. Diese Änderung macht es einfacher, die Anschlusskabel zu verlegen, da alle 3 SPI-Signale für den ATtiny85 auf derselben Seite liegen.

Verwenden Sie das gleiche Programm wie für ATtiny84 Schritt 4. Es werden die gleichen allgemeinen Ergebnisse erwartet - die LED ändert ihren Zustand, wenn der SPST-Schalter ein- und ausgeschaltet wird und serielle Ausgabemeldungen dokumentieren die Änderungen. Die GO TO SLEEP-Meldungen fehlen, da die Schlaffunktion für das ATtiny85 nicht aufgerufen wird. Obwohl das gleiche Programm verwendet wird, gibt es erhebliche Unterschiede in der Implementierung, um der Tatsache Rechnung zu tragen, dass der ATtiny85 nur ein Portregister (Port 0) hat:

  1. SoftwareSerial weist jetzt den Interrupt für die Pinänderung von Port 0 für die serielle Kommunikation zu (Erinnern Sie sich, dass wir Port 1 für den ATtiny84 verwenden konnten.)
  2. Der SPST-Switch-Interrupt muss mit dem externen Interrupt 0 (INT0) implementiert werden, da der einzige Pinwechsel-Interrupt von SoftwareSerial zugewiesen wird. Dies veranschaulicht den Punkt, dass Pinwechsel-Interrupts und externe Interrupts logisch unabhängig sind und innerhalb desselben Portregisters verwendet werden können.
  3. Nichts wird durch die Verwendung einer modifizierten SoftwareSerial-Version gewonnen - es gibt nur einen Port und die SoftwareSerial-Klasse wird ihn greifen. Die modifizierte Klasse wurde jedoch immer noch verwendet, um eine Änderung zu vermeiden, die nicht direkt mit dem Ziel dieses Schritts in Zusammenhang steht.

Empfohlen: