Heim / Benutzerbild / Firmware mk. Der Prozess des Flashens eines Mini-PCs. Ausrüstung für Firmware MK

Firmware mk. Der Prozess des Flashens eines Mini-PCs. Ausrüstung für Firmware MK

Dezember 2015

1. Vorteile des vorgeschlagenen Verfahrens

Geräteschaltungen auf Basis von Mikrocontrollern (MC) zeichnen sich in der Regel durch die Kombination zweier schwer vereinbarer Eigenschaften aus: maximale Einfachheit und hohe Funktionalität. Zudem kann die Funktionalität zukünftig ohne Änderungen an der Schaltung geändert und erweitert werden – durch einfaches Austauschen des Programms (Flashen). Diese Merkmale erklären sich aus der Tatsache, dass die Schöpfer moderner Mikrocontroller versucht haben, alles, was ein Entwickler elektronischer Geräte benötigt, auf einem Chip unterzubringen – zumindest so viel wie möglich. Infolgedessen gab es eine Schwerpunktverlagerung von der Schaltung und Montage hin zur Software. Durch den Einsatz von MK muss die Schaltung nun weniger mit Details „beladen“ werden, es gibt weniger Verbindungen zwischen den Komponenten. Dies macht die Schaltung natürlich sowohl für erfahrene als auch für unerfahrene Elektronikingenieure attraktiver, um sie zu wiederholen. Aber wie immer muss man alles bezahlen. Auch hier verlief es nicht ohne Schwierigkeiten. Wenn Sie einen neuen MK kaufen, ihn in einen Stromkreis einbauen, der korrekt aus wartungsfähigen Teilen zusammengesetzt ist, und Strom anlegen, funktioniert nichts - das Gerät funktioniert nicht. Der Mikrocontroller benötigt ein Programm.

Es scheint, dass auch damit alles einfach ist - im Internet finden Sie viele Schemata mit kostenloser Firmware. Aber hier gibt es einen Haken: Die Firmware muss irgendwie in den Mikrocontroller "eingefüllt" werden. Für jemanden, der dies noch nie zuvor getan hat, wird eine solche Aufgabe oft zu einem Problem und zum Hauptabstoßungsfaktor, der ihn oft dazu zwingt, den Charme der Verwendung von MK aufzugeben und nach Schemata zu suchen, die auf "lockerer" und starrer Logik basieren. Aber alles ist nicht so schwierig, wie es auf den ersten Blick erscheinen mag.

Nach der Analyse von Veröffentlichungen im Internet können Sie feststellen, dass dieses Problem meistens auf zwei Arten gelöst wird: Kauf eines fertigen Programmierers oder Herstellung eines hausgemachten. Gleichzeitig sind die veröffentlichten Schemata von hausgemachten Programmierern sehr oft unangemessen komplex - viel komplizierter als wirklich notwendig. Wenn es jeden Tag den MK flashen soll, ist es natürlich besser, einen "coolen" Programmierer zu haben. Aber wenn die Notwendigkeit für ein solches Verfahren gelegentlich auftritt, kann man in der Regel auf einen Programmierer verzichten. Nein, natürlich geht es nicht darum, es mit Gedankenkraft zu lernen. Das bedeutet, dass wir verstehen, wie der Programmierer mit dem Mikrocontroller interagiert, wenn er Informationen in seinem Programmiermodus schreibt und liest, und dass wir mit verfügbaren Tools für einen breiteren Zweck auskommen können. Diese Tools müssen sowohl die Software als auch die Hardware des Programmierers ersetzen. Der Hardwareteil muss eine physische Verbindung zum MK-Chip bereitstellen, die Fähigkeit, Logikpegel an seine Eingänge zu liefern und Daten von seinen Ausgängen zu lesen. Der Softwareteil muss den Betrieb des Algorithmus sicherstellen, der alle notwendigen Prozesse steuert. Wir stellen auch fest, dass die Qualität der Aufzeichnung von Informationen im MK nicht davon abhängt, wie "cool" Ihr Programmierer ist. Es gibt kein „besser“ oder „schlechter“. Es gibt nur zwei Optionen: "immatrikuliert" und "nicht immatrikuliert". Dies liegt daran, dass der MC selbst den Aufnahmeprozess im Kristall steuert. Es ist nur notwendig, es mit qualitativ hochwertigem Strom (keine Interferenzen und Welligkeiten) zu versorgen und die Schnittstelle richtig zu organisieren. Wenn nach den Ergebnissen der Kontrollablesung keine Fehler festgestellt wurden, ist alles in Ordnung - Sie können den Controller bestimmungsgemäß verwenden.

Um ohne Programmiergerät ein Programm auf den MK zu schreiben, benötigen wir einen USB-RS232TTL-Portkonverter und außerdem. Mit dem USB-RS232TTL-Konverter können Sie über den USB-Anschluss einen COM-Port erstellen, der sich vom "echten" nur dadurch unterscheidet, dass an seinen Ein- und Ausgängen TTL-Logikpegel verwendet werden, dh Spannungen im Bereich von 0 bis 5 Volt (weitere Einzelheiten finden Sie im Artikel " "). Sinnvoll ist es in jedem Fall, einen solchen Konverter im „Haushalt“ zu haben, wer ihn also noch nicht hat, sollte ihn unbedingt kaufen. Bei den Logikpegeln ist TTL in unserem Fall sogar ein Vorteil gegenüber einem normalen COM-Port, da die Ein- und Ausgänge eines solchen Ports direkt mit jedem Mikrocontroller verbunden werden können, der mit 5 V versorgt wird, einschließlich ATtiny und ATmega. Versuchen Sie jedoch nicht, einen normalen COM-Port zu verwenden - dort werden Spannungen im Bereich von -12 bis +12 V (oder -15 ... + 15 V) verwendet. Eine direkte Verbindung zum Mikrocontroller ist in diesem Fall nicht akzeptabel!!!

Die Idee, ein Skript für das Programm „Perpetuum M“ zu erstellen, das die Funktionen eines Programmierers implementiert, entstand nach dem Lesen einiger Veröffentlichungen im Internet, die bestimmte Lösungen für MK-Firmware anbieten. In jedem Fall wurden schwerwiegende Mängel oder übermäßige Komplexität festgestellt. Wir sind oft auf Programmiererschaltungen gestoßen, die einen Mikrocontroller enthielten, und gleichzeitig gab es ganz ernst gemeinte Ratschläge wie: "... und um den Mikrocontroller für diesen Programmierer zu programmieren, brauchen wir ... das ist richtig - ein anderer Programmierer!" . Außerdem wurde vorgeschlagen, zu einem Freund zu gehen, nach einem kostenpflichtigen Dienst zu suchen usw. Auch die Qualität der für diese Zwecke im Netz verbreiteten Software war nicht beeindruckend - sowohl bei der Funktionalität als auch bei der "Trübung" der Benutzeroberfläche wurden viele Probleme festgestellt. Es braucht oft viel Zeit, um zu verstehen, wie man das Programm benutzt - es muss gelernt werden, selbst um die einfachsten Aktionen auszuführen. Ein anderes Programm kann lange und fleißig etwas tun, aber dass nichts auf die MK geschrieben wird, wird der Benutzer erst nach Abschluss der gesamten Firmware und dem anschließenden Kontrolllesen wissen. Es gibt auch ein solches Problem: Der Benutzer versucht, seinen MK aus der Liste der unterstützten Kristalle auszuwählen, aber er ist nicht in der Liste. In diesem Fall kann das Programm nicht verwendet werden - eine Aufnahme in die Liste der fehlenden MKs ist in der Regel nicht vorgesehen. Außerdem sieht die manuelle Auswahl eines Controllers aus der Liste seltsam aus, da der Programmierer in vielen Fällen den Typ des MK selbst bestimmen kann. All dies wird nicht gesagt, um Schmutz auf bestehende Produkte zu werfen, sondern um den Grund für das Erscheinen des Skripts für das in diesem Artikel beschriebene Programm "Perpetuum M" zu erklären. Das Problem besteht wirklich und betrifft vor allem Einsteiger, die es nicht immer schaffen, diese „Mauer“ zu überwinden, um den ersten Schritt in die Welt der Mikrocontroller zu wagen. Das vorgeschlagene Skript berücksichtigt die in anderen Programmen festgestellten Mängel. Die maximale "Transparenz" des Algorithmus wurde implementiert, eine extrem einfache Benutzeroberfläche, die kein Studium erfordert und keine Chance lässt, verwirrt zu werden und "an der falschen Stelle zu klicken". Wenn der erforderliche MK nicht unter den unterstützten ist, können Sie seine Beschreibung selbst hinzufügen, indem Sie die erforderlichen Daten aus der Dokumentation entnehmen, die von der Website des MK-Entwicklers heruntergeladen wurde. Und was am wichtigsten ist, das Skript ist offen für Studien und Änderungen. Jeder kann, nachdem er es in einem Texteditor geöffnet hat, es nach Belieben studieren und bearbeiten, vorhandene Funktionen nach seinem Geschmack ändern und fehlende hinzufügen.

Die erste Version des Skripts wurde im Juni 2015 erstellt. Diese Version unterstützt nur Atmels ATtiny- und ATmega-MCUs mit den Funktionen Flash-Speicher schreiben/lesen, Konfigurationsbits setzen und den Controller-Typ automatisch erkennen. EEPROM schreiben und lesen sind nicht implementiert. Es war geplant, die Funktionalität des Skripts zu ergänzen: add EEPROM schreiben und lesen, Unterstützung für PIC-Controller implementieren usw. Aus diesem Grund wurde das Skript noch nicht veröffentlicht. Aus Zeitmangel verzögerte sich die Umsetzung des Plans jedoch, damit das Beste nicht zum Feind wird des Guten, es wurde entschieden, die vorhandene Version zu veröffentlichen. Die implementierten Funktionen werden nicht ausreichen, bitte ärgern Sie sich nicht. In diesem Fall können Sie versuchen, die gewünschte Funktion selbst hinzuzufügen. Ich werde es nicht verbergen: die Idee von ​​​​Die Erstellung dieses Skripts hat zunächst auch eine pädagogische Bedeutung: Nachdem Sie den Algorithmus verstanden und etwas Eigenes hinzugefügt haben, können Sie die Arbeit von MK im Programmiermodus besser verstehen, so dass Sie dies in Zukunft tun werden nicht in der Position eines Mädchens vor der Schicht sein Auto fahren, nachdenklich in sein Inneres schauen und nicht verstehen, warum es "nicht fährt".

2. MK-Schnittstelle im Programmiermodus

Es gibt verschiedene Möglichkeiten, den Controller in den Programmiermodus zu versetzen und in diesem Modus damit zu arbeiten. Am einfachsten zu implementieren für die Controller der Serien ATtiny und ATmega ist wahrscheinlich SPI. Wir werden sie nutzen.

Aber bevor wir mit der Betrachtung der für die Bildung von SPI notwendigen Signale fortfahren, werden wir eine Reihe von Vorbehalten machen. Der Mikrocontroller hat Konfigurationsbits. Dies ist so etwas wie Kippschalter, mit denen Sie einige Eigenschaften der Mikroschaltung gemäß den Anforderungen des Projekts ändern können. Physikalisch sind dies Zellen eines nichtflüchtigen Speichers, wie diejenigen, in die das Programm geschrieben wird. Der Unterschied besteht darin, dass es nur sehr wenige davon gibt (bis zu drei Bytes für ATmega) und dass sie nicht im Adressraum eines Speichers enthalten sind. Das Schreiben und Lesen von Konfigurationsdaten erfolgt durch separate Befehle des MK-Programmiermodus. Nun ist es wichtig zu beachten, dass einige Konfigurationsbits die eigentliche Fähigkeit zur Verwendung von SPI beeinflussen. Bei einigen ihrer Werte kann sich herausstellen, dass SPI nicht verwendet werden kann. Wenn Sie auf einen solchen Mikrocontroller stoßen, hilft die in diesem Artikel vorgeschlagene Methode nicht weiter. In diesem Fall müssen Sie entweder die Einstellungen der Konfigurationsbits im Programmer ändern, der einen anderen Programmiermodus unterstützt, oder einen anderen Mikrocontroller verwenden. Dieses Problem betrifft aber nur gebrauchte MKs, oder solche mit denen schon mal jemand erfolglos "gespielt" hat. Tatsache ist, dass neue MKs mit Konfigurationsbiteinstellungen geliefert werden, die die Verwendung von SPI nicht verhindern. Dies bestätigen die Testergebnisse des Programmiererskripts für das Programm „Perpetuum M“, bei dem vier verschiedene MKs (ATmega8, ATmega128, ATtiny13, ATtiny44) erfolgreich geflasht wurden. Sie waren alle neu. Die anfängliche Einstellung der Konfigurationsbits stimmte mit der Dokumentation überein und beeinträchtigte die Verwendung von SPI nicht.

Angesichts des oben Gesagten sollten Sie auf die folgenden Punkte achten. Das SPIEN-Bit aktiviert oder deaktiviert explizit die Verwendung von SPI, daher muss sein Wert in unserem Fall zulässig sein. Das RSTDISBL-Bit ist in der Lage, einen der Mikroschaltungsausgänge (vorbestimmt) in den "Rücksetz"-Signaleingang umzuschalten oder ihn nicht umzuschalten (abhängig von dem in dieses Bit geschriebenen Wert). In unserem Fall ist der „Reset“-Eingang notwendig (fehlt dieser, kann der MK nicht per SPI in den Programmiermodus versetzt werden). Es gibt auch Bits der CKSEL-Gruppe, die die Quelle des Taktsignals spezifizieren. Sie verhindern die Verwendung von SPI nicht, müssen aber auch beachtet werden, denn wenn keine Taktimpulse vorhanden sind oder ihre Frequenz niedriger ist als für eine bestimmte SPI-Geschwindigkeit zulässig, wird auch nichts Gutes daraus. Normalerweise sind bei neuen MCUs mit einem internen RC-Oszillator die CKSEL-Gruppenbits so eingestellt, dass sie ihn verwenden. Damit sind wir recht zufrieden – die Taktung erfolgt ohne zusätzlichen Aufwand unsererseits. Sie müssen weder den Schwingquarz löten noch einen externen Generator anschließen. Wenn die angegebenen Bits eine andere Einstellung enthalten, müssen Sie für die Taktung entsprechend der Einstellung sorgen. In diesem Fall kann es erforderlich sein, einen Schwingquarz oder einen externen Taktgeber an die MK anzuschließen. Aber im Rahmen dieses Artikels werden wir nicht betrachten, wie dies gemacht wird. Die in diesem Artikel enthaltenen Beispiele zum Verbinden von MK zum Programmieren sind für den einfachsten Fall ausgelegt.

Reis. 1. SPI-Kommunikation im Programmiermodus

Wenden wir uns nun Abbildung 1 zu, die der Dokumentation für MK ATmega128A entnommen ist. Es zeigt den Prozess des Sendens eines Bytes an die MCU und des gleichzeitigen Empfangs eines Bytes von der MCU. Wie wir sehen, verwenden beide Prozesse die gleichen Taktimpulse, die vom Programmierer zum Mikrocontroller an seinem SCK-Eingang kommen - einem der Pins der Mikroschaltung, für die diese Rolle im SPI-Programmiermodus zugewiesen ist. Zwei weitere Signalleitungen sorgen für Datenempfang und -übertragung mit einem Bit pro Takt. Über den MOSI-Eingang gelangen Daten in den Mikrocontroller, und Lesedaten werden vom MISO-Ausgang übernommen. Beachten Sie die zwei gepunkteten Linien, die von SCK zu MISO und MOSI gezogen werden. Sie zeigen an, in welchem ​​Moment der Mikrocontroller das am MOSI-Eingang gesetzte Datenbit „verschluckt“ und in welchem ​​Moment er sein eigenes Datenbit am MISO-Ausgang setzt. Alles ist ganz einfach. Aber um den MK in den Programmiermodus zu versetzen, brauchen wir noch ein RESET-Signal. Vergessen wir auch nicht das gemeinsame GND-Kabel und die VCC-Stromversorgung. Insgesamt stellt sich heraus, dass nur 6 Drähte an den Mikrocontroller angeschlossen werden müssen, um ihn per SPI zu flashen. Im Folgenden werden wir dies genauer analysieren, aber jetzt ergänzen wir, dass der Datenaustausch mit dem MK im Programmiermodus über SPI in Paketen von 4 Bytes durchgeführt wird. Das erste Byte jedes Pakets ist grundsätzlich vollständig für die Codierung des Befehls reserviert. Das zweite Byte kann abhängig vom ersten eine Fortsetzung des Befehlscodes oder ein Teil der Adresse sein oder einen beliebigen Wert haben. Das dritte Byte wird hauptsächlich zum Übertragen von Adressen verwendet, kann aber in vielen Befehlen einen beliebigen Wert haben. Das vierte Byte trägt normalerweise Daten oder hat einen beliebigen Wert. Gleichzeitig mit der Übertragung des vierten Bytes erhalten einige Befehle Daten, die vom MK kommen. Details zu jeder Anweisung finden Sie in der Controller-Dokumentation in einer Tabelle namens „SPI Serial Programming Instruction Set“. Vorerst sei nur angemerkt, dass der gesamte Austausch mit dem Controller aus einer Folge von 32-Bit-Paketen aufgebaut ist, in denen jeweils nicht mehr als ein Byte Nutzinformation übertragen wird. Das ist nicht sehr optimal, aber im Allgemeinen funktioniert es gut.

3. MK zum Programmieren anschließen

Um sicherzustellen, dass alle notwendigen Signale an die Eingänge des Mikrocontrollers geliefert werden, um die SPI-Schnittstelle zu organisieren und Daten von ihrem MISO-Ausgang zu lesen, ist es nicht notwendig, einen Programmierer zu erstellen. Dies ist mit den gängigsten USB-RS232TTL-Konvertern einfach zu bewerkstelligen.

Im Internet findet man oft Hinweise, dass solche Konverter minderwertig sind, dass man mit ihnen nichts Ernstes machen kann. Aber für die meisten Konverter-Modelle ist diese Meinung falsch. Ja, es gibt Konverter zum Verkauf, die im Vergleich zum Standard-COM-Port nicht alle verfügbaren Ein- und Ausgänge haben (z. B. nur TXD und RXD), während sie ein nicht trennbares Design haben (der Mikroschaltkreis ist mit Kunststoff gefüllt - das ist es unmöglich, zu Schlussfolgerungen zu kommen). Diese sind es aber nicht wert gekauft zu werden. In einigen Fällen können Sie die fehlenden Ein- und Ausgänge des Ports erhalten, indem Sie die Verkabelung direkt an die Mikroschaltung löten. Ein Beispiel für einen solchen "verbesserten" Konverter ist in Abbildung 2 (PL-2303-Mikroschaltung - mehr über den Zweck seiner Pins im Artikel "") dargestellt. Dies ist eines der billigsten Modelle, hat aber seine eigenen Vorteile, wenn es in hausgemachten Designs verwendet wird. Weit verbreitet sind auch vollwertige Adapterkabel mit einem standardmäßigen neunpoligen Stecker am Ende, wie ein COM-Port. Sie unterscheiden sich von einem normalen COM-Port nur durch TTL-Pegel und Inkompatibilität mit veralteter Software und teilweise alter Hardware. Weiterhin ist festzuhalten, dass sich die auf dem CH34x-Chip basierenden Kabel in diversen Extremtests als wesentlich zuverlässiger und stabiler gegenüber den Konvertern auf Basis des PL-2303 erweisen. Bei normaler Nutzung ist der Unterschied jedoch nicht spürbar.

Bei der Auswahl eines USB-RS232TTL-Konverters sollten Sie auch auf die Kompatibilität seines Treibers mit der Version des verwendeten Betriebssystems achten.

Betrachten wir das Prinzip der Verbindung des Mikrocontrollers und des USB-RS232TTL-Konverters am Beispiel von vier verschiedenen MK-Modellen genauer: ATtiny13, ATtiny44, ATmega8 und ATmega128. Abbildung 3 zeigt das allgemeine Schema einer solchen Verbindung. Es mag Sie überraschen, dass die RS232-Signale (RTS, TXD, DTR und CTS) missbraucht werden. Aber keine Sorge: Das Programm Perpetuum M kann direkt mit ihnen arbeiten - Ausgangswerte setzen und Eingangszustände lesen. Jedenfalls bieten die weit verbreiteten USB-RS232TTL-Konverter auf Basis von CH34x- und PL-2303-Chips eine solche Möglichkeit - dies wurde verifiziert. Andere gängige Konverter sollten ebenfalls kein Problem darstellen, da Standard-Windows-Funktionen verwendet werden, um auf den Port zuzugreifen.

Die im allgemeinen Diagramm gezeigten Widerstände können im Prinzip nicht installiert werden, aber es ist immer noch besser zu installieren. Was ist ihr Zweck? Mit den TTL-Ein- und -Ausgängen des Wandlers und der Fünf-Volt-Stromversorgung des Mikrocontrollers entledigen wir uns damit der Notwendigkeit, die logischen Pegel anzupassen – alles ist ohnehin ganz korrekt. Das bedeutet, dass die Verbindungen direkt sein können. Aber Bei Experimenten kann alles passieren. Zum Beispiel kann nach dem Gesetz der Gemeinheit ein Schraubenzieher genau an die Stelle fallen, wo er auf keinen Fall fallen könnte, und etwas schließen, das auf keinen Fall geschlossen werden sollte. In der Rolle eines " Schraubendreher", natürlich kann alles herauskommen. Widerstände reduzieren in diesem Fall manchmal die Folgen. Ein weiterer ihrer Zwecke besteht darin, einen möglichen Konflikt der Ausgänge zu beseitigen. Tatsache ist, dass der Mikrocontroller am Ende der Programmierung in den normalen Betrieb übergeht, und es kann passieren, dass sein Ausgang, der mit dem Ausgang des Konverters (RTS, TXD oder DTR) verbunden ist, auch ein Ausgang wird, je nachdem, wie gerade im MK-Programm aufgezeichnet wurde. In diesem Fall wird es sehr schlimm sein, wenn zwei direkt verbundene Ausgänge " kämpfen" - versuchen zu setzen verschiedene logische Ebenen. In einem solchen "Kampf" kann jemand "verlieren", aber das brauchen wir nicht.

Die Werte der drei Widerstände werden auf der Ebene von 4,3 kOhm gewählt. Dies gilt für Verbindungen zwischen dem Ausgang des Wandlers und dem Eingang des Mikrocontrollers. Die Genauigkeit der Widerstände spielt keine Rolle: Sie können ihren Widerstand auf 1 KΩ verringern oder auf 10 KΩ erhöhen (im zweiten Fall steigt jedoch die Gefahr von Störungen, wenn Sie lange Kabel auf dem Weg zum MC verwenden). Wie für die Verbindung zwischen Wandlereingang (CTS) und Mikrocontrollerausgang (MISO) kommt hier ein 100 Ohm Widerstand zum Einsatz. Dies liegt an den Besonderheiten des Eingangs des verwendeten Konverters. Während der Tests wurde ein Konverter auf einem PL-2303-Chip verwendet, dessen Eingänge anscheinend mit einem relativ geringen Widerstand (in der Größenordnung von mehreren hundert Ohm) auf das Plus gezogen werden. Um "den Pull-up zu töten", musste ich einen Widerstand mit einem so kleinen Widerstand setzen. Sie können es jedoch überhaupt nicht ausdrücken. Beim Konverter ist dies immer der Eingang. Es kann kein Ausgang werden, was bedeutet, dass es bei keiner Entwicklung von Ereignissen zu Konflikten zwischen Ausgängen kommen wird.

Wenn der IC über einen separaten AVCC-Pin für die Stromversorgung eines A/D-Wandlers (z. B. ATmega8 oder ATmega128) verfügt, sollte er mit dem gemeinsamen VCC-Stromversorgungspin verbunden werden. Einige ICs haben mehr als einen VCC-Stromanschluss oder mehr als einen GND. Zum Beispiel hat der ATmega128 3 GND-Pins und 2 VCC-Pins. In einem dauerhaften Design ist es besser, gleichnamige Schlussfolgerungen miteinander zu verbinden. In unserem Fall können Sie zum Zeitpunkt der Programmierung einen Ausgang von VCC und GND verwenden.

Und so sieht die ATtiny13-Verbindung aus. Die Abbildung zeigt die bei der Programmierung über SPI verwendeten Pinbelegungen. Neben dem Foto - wie eine vorübergehende Verbindung in der Realität aussieht.


Jemand mag sagen, dass dies nicht ernst ist - Kabelverbindungen. Aber wir sind vernünftige Menschen. Unser Ziel ist es, den Mikrocontroller mit einem Minimum an Zeit und anderen Ressourcen zu programmieren und nicht vor jemandem anzugeben. Die Qualität leidet nicht. Die Methode "auf Buchungen" ist in diesem Fall sehr effektiv und gerechtfertigt. Die Firmware des Controllers ist ein einmaliger Vorgang, daher macht es keinen Sinn, ihn mit "Strasssteinen" aufzuhängen. Soll zukünftig die Firmware geändert werden, ohne den Controller aus dem Stromkreis (im fertigen Produkt) zu entfernen, so wird dies bei der Installation bei der Herstellung des Gerätes berücksichtigt. Üblicherweise wird dazu ein Connector verbaut (RESET, SCK, MOSI, MISO, GND) und der MK kann auch nach dem Einbau auf der Platine geflasht werden. Aber das sind schon kreative Genüsse. Wir betrachten den einfachsten Fall.

Kommen wir nun zum ATtiny44 MK. Hier ist alles ungefähr gleich. Laut Zeichnung und Foto wird es selbst einem Anfänger nicht schwer fallen, die Verbindung herauszufinden. Wie ATtiny44 können Sie MK ATtiny24 und ATtiny84 anschließen - die Pinbelegung für diese Dreifaltigkeit ist dieselbe.


Ein weiteres Beispiel für die vorübergehende Verbindung des Controllers für seine Programmierung ist ATmega8. Hier gibt es weitere Schlussfolgerungen, aber das Prinzip ist dasselbe - mehrere Drähte, und jetzt ist der Controller bereit, Informationen darin zu "füllen". Der zusätzliche schwarze Draht auf dem Foto, der von Pin 13 kommt, nimmt nicht an der Programmierung teil. Es wurde entwickelt, um ein Tonsignal zu entfernen, nachdem der MK den Programmiermodus verlässt. Dies liegt daran, dass beim Debuggen des Skripts für „Perpetuum M“ das Spieluhrprogramm auf den MK geladen wurde.


Oft ist ein Controller in verschiedenen Gehäusen verfügbar. In diesem Fall wird die Zuordnung von Schlussfolgerungen für jeden Fall auf eigene Weise verteilt. Wenn das Gehäuse Ihres Controllers nicht so aussieht wie in der Abbildung, geben Sie den Zweck der Pins gemäß der technischen Dokumentation an, die von der Website des MK-Entwicklers heruntergeladen werden kann.

Um das Bild zu vervollständigen, betrachten wir die Verbindung des MK-Chips mit einer großen Anzahl von "Beinen". Der Zweck des zusätzlichen schwarzen Kabels auf dem Foto, das von Pin 15 kommt, ist genau das gleiche wie im Fall des ATmega8.


Sie haben wahrscheinlich schon gesehen, dass alles ganz einfach ist. Wer weiß, wie man die Schlussfolgerungen von Mikroschaltungen zählt (von der Markierung im Kreis gegen den Uhrzeigersinn), wird es herausfinden. Und vergessen Sie nicht, vorsichtig zu sein. Mikroschaltungen lieben ordentlich und verzeihen keine nachlässige Haltung gegenüber sich selbst.

Bevor Sie mit dem Softwareteil fortfahren, vergewissern Sie sich, dass der USB-RS232TTL-Konvertertreiber korrekt installiert ist (überprüfen Sie den Windows-Geräte-Manager). Merken oder notieren Sie sich die Nummer des virtuellen COM-Ports, der erscheint, wenn Sie den Konverter anschließen. Diese Nummer muss in den Text des Skripts eingegeben werden, worüber Sie weiter unten lesen können.

4. Script - Programmierer für "Perpetuum M"

Wir haben den Hardwareteil des "Programmierers" herausgefunden. Es ist schon die halbe Miete. Jetzt bleibt es, sich mit dem Softwareteil zu befassen. Seine Rolle übernimmt das Programm „Perpetuum M“ unter der Kontrolle eines Skripts, in dem alle notwendigen Funktionen für die Interaktion mit dem Mikrocontroller implementiert sind.

Das Archiv mit dem Skript sollte in denselben Ordner entpackt werden, in dem sich das Programm perpetuum.exe befindet. In diesem Fall wird beim Ausführen der Datei perpetuum.exe ein Menü mit einer Liste der installierten Skripte auf dem Bildschirm angezeigt, darunter die Zeile "MK AVR Programmer" (es kann die einzige sein). Das ist die Linie, die wir brauchen.

Das Skript befindet sich im PMS-Ordner in der Datei „MK Programmer AVR.pms“. Diese Datei kann nach Bedarf in einem gängigen Texteditor wie Windows Notepad angezeigt, untersucht und bearbeitet werden. Bevor Sie das Skript verwenden, müssen Sie höchstwahrscheinlich Änderungen am Text vornehmen, der sich auf die Porteinstellung bezieht. Prüfen Sie dazu den Namen des verwendeten Ports im Windows Geräte-Manager und ergänzen Sie ggf. die Zeile "PortName="COM4";" - Anstelle der Zahl 4 kann es eine andere Zahl geben. Außerdem kann es bei Verwendung eines anderen USB-RS232TTL-Konvertermodells erforderlich sein, die Signalinversionseinstellungen (Skriptzeilen, die mit dem Wort „High“ beginnen) zu ändern. Sie können die Invertierung von Signalen durch den USB-RS232TTL-Konverter anhand eines der Beispiele überprüfen, die in der Anleitung des Programms Perpetuum M enthalten sind (Abschnitt der Funktionen zum Arbeiten mit dem Port).

Der Unterordner MK_AVR enthält Dateien mit Beschreibungen unterstützter Controller. Sollte der gewünschte Controller nicht dabei sein, können Sie den gewünschten analog selbst hinzufügen. Nehmen Sie eine der Dateien als Beispiel und geben Sie mit einem Texteditor die erforderlichen Daten ein, die Sie der Dokumentation Ihres Mikrocontrollers entnehmen. Hauptsache aufpassen, Daten fehlerfrei eingeben, sonst wird der MK nicht oder falsch programmiert. Die Originalversion unterstützt 6 Mikrocontroller: ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8 und ATmega128. Das Skript implementiert die automatische Erkennung des angeschlossenen Controllers – Sie müssen ihn nicht manuell angeben. Wenn unter den verfügbaren Beschreibungen keine vom MK gelesene Kennung vorhanden ist, wird eine Meldung angezeigt, dass die Steuerung nicht erkannt werden konnte.

Das Archiv mit dem Skript enthält auch zusätzliche Informationen. Der Ordner „AVR controllers inc files“ enthält eine sehr nützliche und umfangreiche Sammlung von Controller-Beschreibungsdateien. Diese Dateien werden beim Schreiben eigener Programme für MK verwendet. Vier weitere Ordner "MusicBox_..." enthalten Dateien mit einem Assembler-Programm und Firmware, die zum Herunterladen in den MK bereitstehen, getrennt für ATtiny13, ATtiny44, ATmega8 und ATmega128. Wenn Sie bereits einen dieser MKs zum Programmieren angeschlossen haben, wie in diesem Artikel vorgeschlagen, dann können Sie ihn gleich flashen – Sie erhalten eine Spieluhr. Mehr dazu weiter unten.

Wenn Sie im Skriptmenü die Zeile „Programmer MK AVR“ auswählen, wird das Skript ausgeführt. Gleichzeitig öffnet er den Port, sendet einen Befehl zum Umschalten in den Programmiermodus an den MC, erhält vom MC eine Bestätigung über einen erfolgreichen Übergang, fordert den MC-Identifikator an und sucht nach einer Beschreibung dieses MC anhand seines Identifikators unter den verfügbare Dateien mit Beschreibungen. Findet er die benötigte Beschreibung nicht, gibt er eine entsprechende Meldung aus. Wird die Beschreibung gefunden, öffnet sich das Hauptmenü des Programmers. Sie können den Screenshot in Abbildung 8 sehen. Es ist nicht schwer, es weiter herauszufinden - das Menü ist sehr einfach.

In der ersten Version des Skripts sind einige Funktionen eines vollwertigen Programmierers nicht implementiert. Beispielsweise gibt es keine Möglichkeit, EEPROM zu lesen und zu schreiben. Wenn Sie das Skript jedoch in einem Texteditor öffnen, werden Sie feststellen, dass es sehr klein ist, obwohl die Hauptsache bereits darin implementiert ist. Dies deutet darauf hin, dass das Hinzufügen der fehlenden Funktionen nicht so schwierig ist - die Sprache ist sehr flexibel und ermöglicht es Ihnen, umfangreiche Funktionen in einem kleinen Programm zu implementieren. Aber für die meisten Fälle werden auch die vorhandenen Funktionen ausreichen.

Einige Funktionseinschränkungen werden direkt im Skripttext beschrieben:
// implementierter Datensatz nur ab Adresse Null (Extended Segment Address Record wird ignoriert, LOAD OFFSET ebenfalls)
//Die Reihenfolge und Kontinuität der Datensätze in der HEX-Datei wird nicht überprüft
// Prüfsumme wird nicht geprüft
Dies gilt für das Arbeiten mit einem HEX-File, aus dem der Firmware-Code für den MK entnommen wird. Wenn diese Datei nicht beschädigt ist, hat die Überprüfung der Prüfsumme keine Auswirkungen. Wenn es verzerrt ist, kann es nicht durch das Skript erkannt werden. Die verbleibenden Einschränkungen werden in den meisten Fällen nicht schaden, aber Sie müssen sie trotzdem im Hinterkopf behalten.

5. Spieluhr – einfaches Basteln für Anfänger

Wenn Sie einen dieser Mikrocontroller haben: ATtiny13, ATtiny44, ATmega8 oder ATmega128, können Sie ihn ganz einfach in eine Spieluhr oder eine Musikkarte verwandeln. Dazu reicht es aus, die entsprechende Firmware in den MK zu schreiben - eine der vier, die sich in den Ordnern "MusicBox_..." in einem Archiv mit dem Skript befinden. Firmware-Codes werden in Dateien mit der Erweiterung „.hex“ gespeichert. Die Verwendung des ATmega128 für ein solches Handwerk ist natürlich "fett", genau wie der ATmega8. Aber es kann zum Testen oder Experimentieren nützlich sein, mit anderen Worten - für Bildungszwecke. Assembler-Programmtexte sind ebenfalls beigefügt. Die Programme wurden nicht von Grund auf neu erstellt – als Grundlage diente das Programm der Spieluhr aus dem Buch von A.V. Belov „AVR-Mikrocontroller in der Amateurfunkpraxis“. Das ursprüngliche Programm hat eine Reihe von wesentlichen Änderungen erfahren:
1. Angepasst für jeden der vier MK: ATtiny13, ATtiny44, ATmega8 und ATmega128
2. Knöpfe entfallen - außer Strom und einem Tongeber muss nichts an den Controller angeschlossen werden (Melodien werden in einer Endlosschleife nacheinander abgespielt)
3. Die Dauer jeder Note wird um die Dauer der Pause zwischen den Noten verkürzt, um musikalische Rhythmusstörungen zu eliminieren
4. Die achte Melodie ist verbunden, in der Buchversion nicht verwendet
5. subjektiv: einige "Verbesserungen" zur Optimierung und leichteren Wahrnehmung des Algorithmus

In einigen Melodien kann man Falsches und sogar Schnitzer hören, besonders in "Smile" - in der Mitte. Die Melodiecodes stammen aus dem Buch (genauer gesagt, von der Website des Autors zusammen mit der ursprünglichen asm-Datei heruntergeladen) und wurden nicht geändert. Anscheinend gibt es Fehler bei der Kodierung von Melodien. Aber das ist kein Problem - diejenigen, die mit Musik "befreundet" sind, werden es leicht herausfinden und alles reparieren.

In ATtiny13 war es aufgrund des Fehlens eines 16-Bit-Zählers zum Spielen von Noten notwendig, einen 8-Bit-Zähler zu verwenden, was zu einer gewissen Verringerung der Genauigkeit des Klangs der Noten führte. Aber mit dem Ohr ist es kaum wahrnehmbar.

Über Konfigurationsbits. Ihre Einstellung muss dem Zustand des neuen Mikrocontrollers entsprechen. Wenn Ihre MCU bereits irgendwo verwendet wurde, müssen Sie den Status ihrer Konfigurationsbits überprüfen und sie gegebenenfalls mit den Einstellungen des neuen Mikrocontrollers in Einklang bringen. Den Status der Konfigurationsbits des neuen Mikrocontrollers können Sie der Dokumentation zu diesem MK entnehmen (Abschnitt "Fuse Bits"). Die Ausnahme ist der ATmega128. Diese MCU verfügt über ein M103C-Bit, das den Kompatibilitätsmodus mit dem älteren ATmega103 ermöglicht. Die Aktivierung des M103C-Bits reduziert die Fähigkeiten des ATmega128 erheblich, und dieses Bit ist auf dem neuen MK aktiv. Sie müssen den M103C in den inaktiven Zustand zurücksetzen. Um die Konfigurationsbits zu manipulieren, verwenden Sie den entsprechenden Abschnitt des Programmer-Skriptmenüs.

Es macht keinen Sinn, ein Diagramm der Spieluhr zu geben: Sie hat nur einen Mikrocontroller, eine Stromversorgung und einen Piezo-Schallgeber. Die Stromversorgung erfolgt genauso wie bei der Programmierung des MK. Der Schallgeber wird zwischen die gemeinsame Leitung (GND-Ausgang des Controllers) und einen der Ausgänge des MK geschaltet, dessen Nummer in der Datei mit dem Assembler-Code des Programms (*.asm) zu finden ist. Am Anfang des Programmtextes für jeden MK in den Kommentaren steht eine Zeile: "Das Tonsignal wird am Ausgang XX erzeugt". Wenn der Script-Programmierer endet, verlässt der Mikrocontroller den Programmiermodus und wechselt in den normalen Betriebsmodus. Die Song-Wiedergabe beginnt sofort. Durch Anschließen eines Schallgebers können Sie dies überprüfen. Lassen Sie den Echolot beim Programmieren des Chips nur dann angeschlossen, wenn der Ton von einem Pin aufgenommen wird, der nicht in SPI verwendet wird, da die zusätzliche Kapazität am Pin sonst die Programmierung stören kann.

Wie flashe ich einen AVR-Mikrocontroller? Das werden wir in diesem Artikel tun.

Was ist „Flash“ und „Firmware“?

Lassen Sie uns zuerst definieren, was das Wort bedeutet "Blitz"? Ich glaube, Sie haben oft Sätze gehört wie „Telefon flashen“, „Firmware ist geflogen“, „krumme Firmware“ usw. Was ist los "Firmware"?

Firmware ist grob gesagt ein Betriebssystem für kleine Geräte wie Mobiltelefone, MP3-Player, Digitalkameras usw. Das heißt, es ist ein kleines Programm, das dieses Gerät steuert. Auch das hört man oft: „Mein Handy ist „kaputt“, ich brauche es dringend „Aufblitzen“.

In diesem Fall bedeutet dies, dass Sie das Betriebssystem auf Ihrem Mobiltelefon neu installieren müssen. Meint, „Flash-MK“ bedeutet, ein Programm darin hochzuladen, das diesen MK steuern würde, und der MK würde bereits ein Gerät steuern. Das heißt, MK ist theoretisch ein Vermittler zwischen dem Programm und einem Gerät, das gesteuert werden muss ;-)


Ausrüstung für Firmware MK

Also, was brauchen wir, um den MK zu flashen?

  1. Der Mikrocontroller selbst.
  2. Ein Computer mit vorinstallierter Software (SW).
  3. Programmierer.
  4. Mehrere Jumper.
  5. Brotbrett. Ich würde empfehlen, sofort ein Einsteiger-AVR-Kit zu kaufen. Dieses Set wird über USB mit Strom versorgt.
  6. Gerade Arme wachsen an der richtigen Stelle.

Wir haben vereinbart, den Atiny2313 MK im DIP-20-Paket zu verwenden:

MK für Firmware vorbereiten

In früheren Artikeln haben wir den Gromov-Programmierer betrachtet. Sein Hauptnachteil besteht darin, dass wir einen COM-Anschluss benötigen, der heutzutage kaum noch in einem Computer zu finden ist, aber es gibt einen USB-Anschluss auf jedem Computer. Daher wurde entschieden, den günstigsten USB-Programmierer für AVR MK zu kaufen. So ein Programmierer heißt und sieht ungefähr so ​​aus


Wenn Sie gut auf Ali graben, können Sie einen sehr süßen Preis für einen solchen Programmierer finden. Zum Beispiel, . Vielleicht findest du es sogar günstiger. Wenn Sie von einem anderen Verkäufer nehmen, dann schauen Sie genau hin Seine Inschriften und Funkelemente befanden sich genau wie auf meinem Foto. Im Durchschnitt liegt der Preis zum Zeitpunkt des Schreibens bei etwa 120 Rubel. Ein solcher Programmierer kostet in dem Fall etwas mehr.

Hier ist seine Rückansicht:


Sein funktionierender Anschluss sieht ungefähr so ​​​​aus:


Der Programmierer wird auch mit einem Kabel geliefert


die an einem Ende am Arbeitsanschluss des Programmiergeräts haftet:


Wir werden das andere Ende des Kabels an den MK anschließen.


Wenn Sie genau hinsehen, können Sie herausfinden, welcher Pin im Stecker der erste ist. Der Pfeil zeigt auf den ersten Pin des Steckers:


Sobald Sie wissen, wo sich der erste Pin befindet, können Sie die restlichen Pins leicht identifizieren:


Unsere Aufgabe ist es also, die Ausgänge des MK mit den Ausgängen des Programmierers zu verbinden.

Dazu stecken wir die Drähte in die Buchsen MOSI, RST, SCK, MISO, VTG (VCC), GND in den Kabelstecker. GND Ich habe die 10. Buchse genommen, es ist möglich und eine andere, wo GND geschrieben ist. Insgesamt 6 Schaltdrähte:


VTG (alias VCC) Wir klammern uns an die 20. Etappe des MK

SCK(UCSK) Wir klammern uns an den 19-Bein-MK

MISO Wir klammern uns an das 18. Bein des MK

MOSI für 17 Beine

Masse für 10 Beine

RST auf dem Hinspiel

Es sollte ungefähr so ​​herauskommen:


Nachdem Sie den Programmierer zum ersten Mal an den USB-Anschluss des PCs angeschlossen haben, Gerätemanager Wir bekommen ein neues Gerät:

Wir haben keine Angst, laden Sie den Archivierer hier herunter, entpacken Sie ihn und geben Sie den Pfad dazu an, wenn Sie das „Brennholz“ installieren. Wenn das „Brennholz“ auf dem Programmierer installiert ist, sehen wir so etwas:

Alles ist in Ordnung, der Programmierer ist bereit für den Kampf.

Im selben Archiv finden wir den Ordner „avrdudeprog“, öffnen ihn, finden dort die ausführbare Datei AVRDUDEPROG und führen sie aus. Dies ist die Software-Shell zum Flashen des MK mit unserem Programmierer.

Sie sieht so aus. Vergessen Sie nicht, unseren MK in der Liste auszuwählen.

Um den MK zu flashen, müssen wir eine Datei mit der HEX-Erweiterung auswählen. Hier also meine Datei. Als erstes drücke ich auf den Knopf "Alles löschen". Was ist, wenn jemand MK bereits verwendet hat und dort bereits ein Programm hochgeladen wurde? Daher löschen wir vor dem Flashen den Speicher des MK. Wenn das „Waschen“ erfolgreich war, gibt uns das Programm etwa diese Meldung:

MK AVR blinkt

Klicken Sie auf die Dateiauswahl-Schaltfläche:

Und jetzt wählen wir unsere Datei „Lesson 1.hex“ aus. Das ist unser Programm.

Und jetzt drücken wir den Knopf "Programmierung"

Nachdem alles gut gelaufen ist, wird so etwas angezeigt:

Aber das ist nicht alles! Wie Sie sich erinnern, haben wir im letzten Artikel die Frequenz auf 8 Megahertz eingestellt. Um Verwirrung zu vermeiden, müssen wir diese Frequenz jetzt durch 8 teilen. Dafür gibt es eine Sicherung, die die Taktfrequenz durch 8 teilt. Wir setzen den Marker auf „direkte Sicherungen“, dann aktivieren Sie das Kontrollkästchen CKDIV.

Nachdem Sie diese beiden Schritte ausgeführt haben, klicken Sie auf die Schaltfläche "Programmierung":

MK in Hardware prüfen

Jetzt bauen wir unsere Schaltung zusammen, die im letzten Artikel erwähnt wurde:


und genießen Sie das Ergebnis:

Mit diesem Beitrag möchte ich einen Zyklus starten, in dem die grundlegenden Techniken zum Entwickeln, Flashen und Einrichten von Geräten auf Mikrocontrollern ausführlich behandelt werden. Die Beiträge werden auch für diejenigen nützlich sein, die nur fertige Geräte wiederholen, ohne sich mit deren Entwicklung und Debugging zu beschäftigen. Wir (ich und die Standortverwaltung) hoffen, dass die Veröffentlichung dieses Zyklus vielen Anfängern und weniger Funkamateuren helfen wird, mit der Entwicklung und (oder) Wiederholung von Geräten auf der Basis eines Mikrocontrollers zu beginnen. Dieser Artikel wird Materialien aus verschiedenen offenen Quellen sammeln und systematisieren, einschließlich unseres Lieblingsmagazins Radio. Wir werden uns kurz ansehen, was MK ist und womit es gegessen wird, warum Compiler benötigt werden und was für schreckliche Tiere in Dateien mit den *. HEX, *. Behälter , *. asm , usw., tauchen wir ein wenig in die Geschichte ein und erstellen endlich unseren ersten Programmierer SI-Prog (meiner Meinung nach sehr einfach, zuverlässig, universell und nicht zu Recht vergessen) und wir werden den MK flashen, außerdem werden wir uns anhand eines konkreten Beispiels mit den RopuRgo-Software-Shells befassen g 2000 und IS-Prog . Und so fangen wir an. Es ist kein Geheimnis, dass MKs heute unter den digitalen integrierten Schaltkreisen ungefähr den gleichen Platz einnehmen wie Operationsverstärker unter den analogen. Dies sind universelle Geräte, deren Verwendung in elektronischen Geräten für verschiedene Zwecke ständig erweitert wird. Nahezu alle großen und viele mittelständische Firmen der Halbleiterelektronik beschäftigen sich mit der Entwicklung und Produktion von MCs. Die Liste und die Hauptparameter von MK einiger beliebter Familien finden Sie beispielsweise im Internet.

Moderne Mikrocomputer (früher Single-Chip-Mikrocomputer genannt) vereinen in ihrem Gehäuse einen leistungsfähigen Prozessorkern, Speichereinrichtungen zum Speichern des ausführbaren Programms und der Daten, Einrichtungen zum Empfangen von Eingangs- und Erzeugen von Ausgangssignalen und zahlreiche Hilfsknoten. Der allgemeine Trend des modernen "Mikrocontrollerbaus" ist eine Verringerung der Anzahl externer Elemente, die für den normalen Betrieb erforderlich sind. Auf einem Mikroschaltkreischip werden nicht nur Komparatoren, Analog-Digital- und Digital-Analog-Wandler platziert, sondern auch alle Arten von Last- und "Pull-up" -Widerständen, Reset-Schaltungen.

Die Ausgangspuffer des MK sind so ausgelegt, dass sie die typischsten Lasten, wie z. B. LED-Blinker, direkt anschließen können. Nahezu jeder der Ausgänge des MK (mit Ausnahme natürlich der Ausgänge der gemeinsamen Leitung und der Stromversorgung) kann vom Entwickler nach eigenem Ermessen als Ein- oder Ausgang verwendet werden. Dadurch kann ein in seinen Funktionen recht komplexes Gerät oft auf nur einem Mikroschaltkreis ausgeführt werden.

Die stetige Reduzierung der Kosten von Mikrocontrollern und die Erweiterung ihrer Funktionalität hat die Schwelle für die Komplexität von Geräten gesenkt, die es ratsam ist, auf ihrer Basis zu bauen. Heute ist es sinnvoll, auf MK auch solche Geräte zu entwerfen, für deren Implementierung mit herkömmlichen Methoden weniger als ein Dutzend logischer Mikroschaltungen mit mittlerem und niedrigem Integrationsgrad erforderlich wären. Das vielleicht größte Hindernis auf diesem Weg ist der Konservatismus der Entwickler, von denen viele MK immer noch für etwas unverständlich Komplexes halten.

Inzwischen sind die Prozesse der Entwicklung eines Programms für MK und eines herkömmlichen Schaltplans eines digitalen Geräts in vielerlei Hinsicht ähnlich. In beiden Fällen wird ein „Gebäude“ der gewünschten Form aus elementaren „Bausteinen“ gebaut, nur dass die „Bausteine“ unterschiedlich sind: im ersten Fall – ein Satz logischer Elemente, im zweiten – ein Satz Mikrocontroller-Befehle .

Anstelle der Interaktion zwischen Elementen über den Austausch von Signalen über Drähte erfolgt die Übertragung von Daten von einer Speicherzelle zur anderen innerhalb des MK. Der Übertragungsprozess „plädiert“, wenn der MK mit den daran angeschlossenen Sensoren, Anzeigen, Aktoren und externen Speichern kommuniziert. Auch die Werkzeuge sind unterschiedlich. Bleistift, Papier, Lötkolben und Oszilloskop werden durch einen Computer und einen Programmierer ersetzt, obwohl Sie in der letzten Phase des Debuggens eines Produkts immer noch nicht auf ein Oszilloskop und einen Lötkolben verzichten können.

Eine weitere Schwierigkeit ist der Mangel an vollwertiger technischer Dokumentation und Referenzliteratur in russischer Sprache. Die meisten Veröffentlichungen dieser Art in Zeitschriften und insbesondere im russischsprachigen Internet sind oft nichts anderes als Interlinearübersetzungen der englischen Originale. Darüber hinaus interpretieren Übersetzer, die manchmal wenig mit dem Thema und der Terminologie vertraut sind, "dunkle" Orte auf ihre eigene Weise, und sie (die Orte) erweisen sich als ziemlich weit von der Wahrheit entfernt.Es gibt praktisch keine russischsprachigen Softwaretools zum Entwickeln und Debuggen von MK-Programmen.

Für viele beginnt die erste Bekanntschaft mit MK mit einer Wiederholung eines der darauf basierenden Designs, die in derselben Radiozeitschrift oder einer anderen Publikation veröffentlicht wurden. Und hier zeigt sich sofort der Hauptunterschied zwischen einem MC und einem herkömmlichen Mikroschaltkreis: Er kann nichts Nützliches tun, bis ein Programm in sein internes (manchmal externes) Speichergerät eingegeben wird, d.h. eine Reihe von Codes, die die Reihenfolge der auszuführenden Operationen angibt. Das Verfahren zum Schreiben von Codes in den Speicher des MK wird als seine Programmierung oder Firmware bezeichnet (nicht zu verwechseln mit dem vorherigen Prozess der Entwicklung des gleichnamigen Programms selbst).

Die Notwendigkeit einer Firmware mag auf den ersten Blick wie ein Nachteil erscheinen. In der Tat ist dies der Hauptvorteil, dank dessen, wenn Sie beispielsweise nur eine Platine mit einem MK und mehreren daran angeschlossenen LED-Anzeigen und Tasten herstellen, auf Wunsch alles in einen Frequenzmesser, einen Impulszähler und eine elektronische Uhr verwandeln , digitales Messgerät für jede physikalische Größe, Fernsteuerung und -überwachung und vieles mehr.

Die Möglichkeit, Programmcodes geheim zu halten, hilft Herstellern von Geräten auf dem MK im Kampf gegen die Konkurrenz. Die übermäßige Geheimhaltung von Programmen führt zwar häufig zu zusätzlichen Schwierigkeiten bei der Reparatur oder Verbesserung von Geräten auf dem MK eines "fremden" Designs. Aber das ist eine andere Sache.

Bis vor kurzem stand der Entwickler beim Beginn des Entwurfs einer Struktur auf einem MC vor dem Problem, ob es möglich war, das Problem mit Geräten eines oder zweier ihm bekannter Typen zu lösen. Heute hat sich die Situation grundlegend geändert. Aus der Menge der verfügbaren MC sollte man diejenige auswählen, mit deren Hilfe das Problem optimal gelöst wird. Leider macht das nicht jeder. Es gab sogar eine gewisse "Mode" für Produkte verschiedener Art, es wurden eigenartige Gruppierungen von Anhängern von MK bestimmter Familien gebildet. Sie begründen ihre Wahl in der Regel auf der Ebene „Like – Dislike“: Oft wird eine negative Meinung über ein Gerät durch einen einzigen erfolglosen Versuch erklärt, es zu benutzen, oft ohne den Versuch, die Fehlerursachen zu analysieren und zu beseitigen Einige Unternehmen verteilen Dokumente mit dem Titel „The Truth About ...“ mit einem „objektiven“ Vergleich ihrer Geräte mit Produkten der Konkurrenz und in der Regel zugunsten des ersten. Solchen Veröffentlichungen sollte man nicht besonders vertrauen, es wird immer einen Vergleichsbericht mit Rückergebnissen und Schlussfolgerungen geben.

Ich möchte sagen, dass es, wie in vielen anderen Fällen, keine offensichtlich guten oder schlechten MKs gibt und es auch nicht geben kann. Jeder von ihnen kann hervorragende Ergebnisse bei der Lösung von Problemen einer bestimmten Klasse zeigen und kommt mit anderen kaum zurecht. Daher die Typenvielfalt. In der Regel geht eine Zunahme eines Parameters mit einer Verschlechterung anderer einher. Die einfachsten Beispiele: Ein MK, der für mehrfache Neuprogrammierung ausgelegt ist, ist immer teurer als ein einmalig programmierbares Analog, und ein schnelleres Gerät ist empfindlicher als ein langsames gegenüber Impulsrauschen und anspruchsvoller bei der Leiterplattenverfolgung. Natürlich gibt es universelle Geräte, die zur Lösung einer breiten Klasse von Problemen ausreichend geeignet sind. Wenn jedoch nur das eine oder andere Design wiederholt werden muss, gibt es keine besondere Möglichkeit, MK zu wählen. Sie müssen das in der Beschreibung angegebene Design oder sein vollständiges Analogon verwenden, beispielsweise unter denen, die von anderen Unternehmen unter Lizenz hergestellt werden . Auf die Frage, ob es möglich ist, einen MK eines Typs durch einen anderen zu ersetzen, muss man oft verneinen, obwohl es theoretisch eine solche Möglichkeit gibt: Man muss nur das Programm überarbeiten, und wenn die Anzahl und der Zweck der Pins der ersetzten und ersetzenden MK unterschiedlich sind, dann die Leiterplatte.

Wenn es darum geht, Mikrocontroller mit ähnlicher Struktur und derselben Familie zu ersetzen oder ein veraltetes Produkt durch ein modernes Analogon zu ersetzen, ist es in der Regel möglich, das Programm anzupassen. Mikrochip u ATMEL enthält sogar Empfehlungen für eine solche Anpassung in den Referenzdaten seiner MC. Eine vollwertige Übertragung eines Programms auf eine andere MK erfordert im allgemeinen das Vorhandensein nicht nur der üblicherweise veröffentlichten "Firmware" des EPROMs, sondern auch des vollständigen Quelltextes, am besten mit Kommentaren des Programmierers. Die durch die Demontage der "Firmware" erhaltene Auflistung ist bei weitem kein vollwertiges Äquivalent. Der Programmierer wird eine deutlich höhere Qualifikation benötigen, als für die Entwicklung von Grund auf ausreicht, und die Arbeitskosten werden nicht geringer sein.

Es wird empfohlen, die unabhängige Entwicklung des Geräts auf dem MK und natürlich des Programms dafür aus der Studie zu starten und ein Blockdiagramm des Algorithmus für seinen Betrieb zu erstellen. Nur nach den Ergebnissen dieser Phase können Sie die richtige Wahl des MC treffen.

Wir werden unsere weitere Geschichte auf einem konkreten Beispiel aufbauen. Irgendwie wurde in letzter Zeit ein Zähler benötigt, der die Schnittpunkte eines bestimmten Objekts einer bestimmten Grenze in der einen und der anderen Richtung zählen konnte. Als ich die Ausgaben des Radio-Magazins durchblätterte, fand ich ein geeignetes Gerät, aber es schien zu kompliziert (11 Mikroschaltkreise, einschließlich eines EPROM mit großer Kapazität) und hatte außerdem einige notwendige Funktionen nicht, insbesondere die Fähigkeit zur Vorab- Stellen Sie die Zählerstände ein und merken Sie sich ihren Zustand nach dem Ausschalten. Es gab eine Idee, das erforderliche Gerät auf dem MK herzustellen. Aus den unten genannten Gründen wurde der MK PIC16F84 (PIC16F84А) ausgewählt. Als Ergebnis wurde das Geräteschema geboren ( Reis. eines),


mit nur zwei Mikroschaltkreisen. Das Gerät kann PIC16F84- und PIC16F84-Mikrocontroller verwenden EIN mit beliebiger Grenzfrequenz, Gehäusetyp und Betriebstemperaturbereich (diese Parameter werden durch numerische und alphabetische Indizes nach dem Bindestrich in der Chipbezeichnung angegeben, z. B. -101 / R). Und wenn die Verbesserung des Programms nicht zu erwarten ist, können Sie auch ein billiges, einmalig programmierbares Analogon des PIC16CR84 verwenden, wenn Sie es natürlich finden können.

Objektbewegungssensoren - Transistor-Optokoppler mit offenem Kanal AOT147B (U1, U2). Die Last ihrer Fototransistoren sind die im MK vorhandenen internen Widerstände. Es ist zulässig, Optokoppler zu verwenden, die aus getrennten Licht- und Fotodioden (Fototransistoren) bestehen. Optische Sensoren werden bei Bedarf durch andere ersetzt: magnetisch, kontaktbehaftet, induktiv. Wichtig ist nur, dass sich bei ihrer Auslösung die logischen Pegel an den entsprechenden Eingängen des MK ändern.

Das Gerät verwendet eine vierstellige Siebensegment-LED-Anzeige CA56-11SR von Kingbright. Es ist auch möglich, beliebige 7-Segment-LED-Anzeigen mit einem gemeinsamen zu verwendenAnode, zum Beispiel vier inländische ALS324B. Ein Satz DR1-Widerstände kann eine Familie ersetzenherkömmliche 300-Ohm-Widerstände.Das Programm, das in den Speicher des MK DD2 eingegeben werden muss, um das Gerät in einen Zähler zu verwandeln, ist angegebenim Tisch. 1. Wenn das Gerät eingeschaltet ist, leuchten Nullen in allen Ziffern der Anzeige. Nach jeder Ausführung des Zyklus „U1 ist beschattet“ – „U1 und U2 sind beschattet“ – „U1 ist nicht beschattet“ – „U2 ist nicht beschattet“ erhöhen sich die Messwerte um 1. Der Zähler ist also reversibel, wenn die Sensoren in umgekehrter Reihenfolge ausgelöst werden, verringern sich die Messwerte um den gleichen Betrag - 9999 gefolgt von Null.

Der nächste Artikel im Zyklus wird darüber sprechen, wie die Schaltung und das Programm des Zählers erstellt und ausgetestet wurden, über seine Verbesserung und die Einführung zusätzlicher Funktionen. Dieses Beispiel veranschaulicht die Hauptfunktionen des PIC16F84 MK und die Arbeit mit kostenlosen Programmier- und Debugging-Tools. Sie sind im MPLAB-Paket zusammengefasst, dessen neueste Version von den Internetseiten www.microchip.com oder www.microchip.ru „heruntergeladen“ werden kann. Oder von der Forumsseite ALEXANDRA Außerdem wird ausführlich beschrieben, wie es installiert wird.

Um die Codes aus der Tabelle einzugeben. 1 in den internen Speicher des MK, wird ein Programmer benötigt. Allerdings "weiß" er nicht, wie man Codes von Internetseiten liest, deshalb muss man zunächst eine Datei mit diesen Codes auf einem Computer in einem für den Programmierer "verständlichen" Format erstellen. Im Tisch. 1 werden sie im sogenannten HEX-Format dargestellt, das von Intel entwickelt wurde und sich zum De-facto-Standard für die Programmierung von ROMs für verschiedene Zwecke entwickelt hat. (Ich muss sagen, dass andere Formate mit demselben Namen, zum Beispiel Microchip HEX, nicht existieren, solche Namen werden nur durch Missverständnisse verwendet). Ähnliche Formate, die von anderen Firmen entwickelt wurden, haben keine breite Anwendung gefunden und sind in der Regel nur für Hardware und Software ihres eigenen Designs gedacht, von denen die meisten das Intel HEX-Format "verstehen".

Die Codes werden mit einem beliebigen Texteditor, einschließlich Microsoft Word, genau in der Form, in der sie eingegeben wurden, in den Computer eingegeben Tab. eines.


Wenn Sie über einen Scanner und ein Texterkennungsprogramm wie FineReader verfügen, können Sie diese verwenden. Aber im letzteren Fall müssen die gelesenen Daten mit dem Original verglichen werden, da die automatische Erkennung nicht perfekt ist (Fehler sind möglich). Bitte beachten Sie, dass in HEXDateien werden nur der Doppelpunkt, Zahlen und die lateinischen Buchstaben A - F verwendet.Jede Zeile beginnt mit einem Doppelpunkt an der ersten Stelle und endet mit dem Drücken der ENTER-Taste. Leerzeichen sind nicht erlaubt. Wenn Sie mit der Eingabe fertig sind und die Codes überprüft haben, speichern Sie die Datei im Modus "Text DOS" oder "Nur Text" und geben Sie ihr einen beliebigen Namen mit der Erweiterung *.hex.

Nicht selten werden Programmcodes in Form eines sogenannten „Memory Dump“ veröffentlicht. Dies ist eine visuellere Tabelle (als im HEX-Format). Es besteht aus Zeilen, die mit einer Hexadezimaladresse (normalerweise vier Ziffern) beginnen, gefolgt von Leerzeichen, die durch zweistellige Hexadezimalcodes getrennt sind, die in aufeinanderfolgenden Speicherzellen (Bytes) gespeichert sind. Die Adresse am Anfang der Zeile bezieht sich auf die erste der Zellen, und normalerweise sind es insgesamt 16. Zum Vergleich: in Tab. 2 Hier ist ein Dump mit den gleichen Daten wie Tab. eines. HEX und dump lassen sich wie folgt leicht ineinander umwandeln (vgl Tab. 3).

Die ersten beiden Zeichen nach dem Doppelpunkt geben die Anzahl der Informationsbytes in der Zeichenfolge an. In diesem Fall sind es 16 (10 H ). Darauf folgt die Adresse des ersten Bytes (0020H), gefolgt von einem zweistelligen Leitungsbelegungscode:

0 - Zeile enthält Daten;

1 - die letzte Zeile der Datei (:00000001 FF); es enthält keine Daten, die Anzahl der Bytes und die darin enthaltene Adresse sind Null. In vielen Fällen reichen null Bytes aus, um einen String als terminierend zu erkennen;

2 - im Datenbereich steht die Adresse des Speichersegments, relativ zu dessen Beginn die in den folgenden Zeilen angegebenen Adressen gezählt werden. Beachten Sie, dass die zwei Bytes der Segmentadresse in High-Low-Reihenfolge sind. Die zu den aktuellen Adressen zu addierende Zahl erhält man, indem man den Binärcode der Segmentadresse um vier Binärstellen nach links verschiebt, also mit 16 multipliziert;

3 - im Datenbereich befinden sich vier Bytes der Programmstartadresse im üblichen IBM-PC-CS:IP-Format;

4 - im Datenbereich befinden sich (in der Reihenfolge vom höchsten zum niedrigsten) vier Bytes der absoluten Adresse, deren Wert ohne Transformation zu den in den folgenden Zeilen angegebenen Adressen hinzugefügt werden soll;

5 - das gleiche wie 04, gibt aber den absoluten Wert der Programmstartadresse an.

Zeilen mit den Zielcodes 02 und 04 werden verwendet, wenn Adressen größer als 0FFFFH angegeben werden müssen. Für die Programmierung von MCUs mit kleinem Speicher (wie PIC16F84) werden sie nicht benötigt. Manchmal wird jedoch eine ähnliche Zeichenfolge, die eine Null-Startadresse angibt, am Anfang der HEX-Datei platziert. Es kann schmerzlos entfernt werden.

Zeilen mit den Codes 03 und 05 sind sehr selten, da die Startadresse des MK-Programms meistens durch die Architektur des letzteren bestimmt wird und nicht geändert werden kann. Für MK der PICmicro-Familie ist es Null.

Dem Zielcode folgt ein Datenbereich in der am Zeilenanfang angegebenen Anzahl Bytes. Der String wird mit einem Kontrollbyte abgeschlossen. Der Algorithmus zur Berechnung seines Werts ist ganz einfach: Die acht niederwertigsten Bits der Summe aller Bytes des Strings, einschließlich seiner Länge, zwei Bytes der Adresse, des Zielcodes, der Daten und der Steuerung, müssen gleich Null sein.

Das HEX-Format wurde ursprünglich entwickelt, um 8-Bit-Daten zu speichern. Codes größerer Kapazität werden in die entsprechende Anzahl von Bytes unterteilt, die in der Reihenfolge von niedrig nach hoch in die Datei geschrieben werden. Beispielsweise werden jedem der 14-Bit-Befehle des MK IS16F84 zwei Bytes zugewiesen, und die beiden höchstwertigen Bits des zweiten Bytes bleiben frei (der Code in diesem Byte überschreitet nicht 3FH).

Dadurch werden die Adressen in der HEX-Datei gegenüber den tatsächlichen Adressen der Programmanweisungen verdoppelt. Zum Beispiel die Linie

:080008008C0003088D000408C0 beschreibt eine solche Folge von Programmcodes;

Adresscode

4008C

5 0803

6008D

7 0804

Einige Softwaretools (die ihre Genealogie in der Regel nicht von IBM-kompatiblen Rechnern führen) schreiben in eine Datei und nehmen die Datenbytes in umgekehrter Reihenfolge wahr – das ältere, dann das jüngere. Darauf sollten Sie achten, wenn der Programmierer "böse" ist und die Datei nicht richtig lesen will.

Das beschriebene Mehrbit-Datendarstellungsformat wird oft als Merged bezeichnet. Gelegentlich gibt es eine andere Option: Die HEX-Datei wird in zwei Teile geteilt, von denen eine alle unteren Bytes und die zweite alle oberen Bytes der Wörter des Programms enthält. Dieses Format wird Splitt genannt.

Bitte beachten Sie, dass die Datei möglicherweise keine fortlaufende Folge von Codes enthält. Zum Beispiel zwischen den Codes in den ersten beiden Zeilen Tab. eines eine Lücke von sechs Bytes bleibt ungefüllt (drei Programmbefehle). Das HEX-Format gibt keine Auskunft über deren Inhalt. Je nach Algorithmus des Programmierers bleiben sie in einem unprogrammierten Ausgangszustand oder speichern die zuvor aufgezeichneten Codes. BEI Tab. 2 unbenutzte Zellen werden mit Nullcodes gefüllt.

Wie Sie wissen, enthält MK einen permanenten Speicher für verschiedene Zwecke: FLASH oder einmalig programmierbar für das Programm, EEPROM für Daten, spezielle Zellen zur Konfiguration und Identifizierung des MK. Informationen, die für diese Bereiche bestimmt sind, werden oft in separaten Dateien gespeichert und

Programmierung, müssen Sie manuell angeben, wo genau es geschrieben werden soll. Aber in der PICmicro-Familie hat man sich entschieden, alles in einer HEX-Datei zu vereinen. Die oben genannten Bereiche, die für den MK-Prozessor in unterschiedlichen Adressräumen liegen, werden aus Sicht des Programmierers zu einem zusammengefasst. Für PIC16F84 ist die Verteilung wie folgt (in Klammern - „Byte“-Adressen):

0-3FFH (0-7FFH) - Programmcodes; für MK mit größerem Speicher kann dieser Bereich auf 1FFFH (3FFFH) erweitert werden;

2000N-2003N (4000N-4007N) - Identifikationscodes;

2007H (400EN, 400FH) - Konfigurationswort;

2100H-213FH (4200H-427FH) - Codes, die in die Adressen 0-3FH EEPROM geschrieben werden.

Trotz der Tatsache, dass die EEPROM-Organisation acht Bit ist, werden in diesem Fall jedem der dafür vorgesehenen Codes in der HEX-Datei zwei Bytes zugewiesen, von denen das höchste einen Inhalt von Null hat

FORTSETZUNG FOLGT >>>>>

ALLE FRAGEN AUF

Also, wenn das Programm installiert ist, beginnen wir damit, seine Fähigkeiten zu erkunden.

Wir installieren den Mikrocontroller im Programmierpanel, verbinden den Programmierer mit dem Computer und führen "PICkit 2 Programmer" aus.

Beim Start fragt das Programm den Programmierer ab und bestimmt automatisch den Typ des zu programmierenden Mikrocontrollers durch Identifikationsbits (die sogenannte Geräte-ID). Aufmerksamkeit! Chips der Baseline-Familie sowie EEPROM- und KeeLOG-Chips haben keine Geräte-ID. Damit das Programm mit diesen Mikroschaltungen funktioniert, müssen Sie ein bestimmtes Produkt über das Menü "Gerätefamilie" auswählen.

Wenn statt eines so freundlichen Bildes dieses hier erscheint ...

Dann müssen Sie überprüfen, ob das USB-Kabel richtig angeschlossen ist, und das Gerät über das Menü "Tools" - "Check Communication" erneut anschließen.

Öffnen einer Firmware-Datei.

Um das MK-Programm in seinen Speicher zu schreiben, müssen Sie den Menüpunkt "Datei" - "Hex importieren" auswählen.

Wählen Sie dann im sich öffnenden Fenster die gewünschte Firmware-Datei aus.

Danach zeigen das Programmspeicher- (Programmspeicher) und Datenfenster (EEPROM-Daten) den Inhalt der .hex-Datei an.

Aufnahme des Programms in MK.

Jetzt können Sie den MK programmieren. Klicken Sie dazu auf die Schaltfläche „Schreiben“. Der Aufnahmevorgang dauert 3 - 5 Sekunden.

Die Aufschrift „Programmierung erfolgreich“ weist Sie auf den erfolgreichen Abschluss des Aufnahmevorgangs hin.

Für mehr Sicherheit können Sie ein Überprüfungsverfahren durchführen. Wenn Sie auf die Schaltfläche "Verifizieren" klicken, vergleicht das Programm die Daten der Hex-Datei und die im MK aufgezeichneten Daten. Wenn die Verifizierung erfolgreich war, wird im Meldungsfeld „Verifizierung erfolgreich“ angezeigt.

Aufmerksamkeit! Wenn Sie PIC12F675, PIC12F629 und ähnliche Mikrocontroller mit einem internen Taktgenerator flashen, kann während der Überprüfung ein Fehler auftreten. Tatsache ist, dass der PICkit2-Programmer (Version 6.21) die Kalibrierungskonstante speichert und dann in die letzte Speicherzelle des MK schreibt. Es versteht sich, dass die ursprüngliche Firmware-Datei und die aufgezeichneten Daten im Speicher unterschiedlich sein werden. Die Kalibrierungskonstante wird später diskutiert.

Schnelle Tasten.

Die Schaltfläche "Auto Import Hex + Write Device" wird diejenigen ansprechen, die "die Firmware" mit einem einzigen Klick in den MK "treiben" möchten. Ein Klick und das Programm fordert Sie auf, die Firmware-Datei auszuwählen und sie dann sofort auf den MK zu schreiben.

Die Schaltfläche "Gerät lesen + Hex-Datei exportieren" führt die entgegengesetzte Funktion aus - sie liest Daten aus dem MK und bietet an, die Firmware-Datei in einer .hex-Datei zu speichern.

Konfigurationsbits ändern.

Die Konfigurationsbits stellen die grundlegenden Parameter für den Betrieb des MK ein. Dies ist die Art des Generators (Quarz, RC-Schaltung), das Aktivieren / Deaktivieren des sogenannten "Watchdog-Timers", das Einstellen des Schutzes gegen das Lesen des Programmspeichers und einige andere. In der Regel werden beim Schreiben eines Algorithmus für den Betrieb eines MK (Programm) Werte geschrieben, die in die Konfigurationsbits geschrieben werden müssen. Beim Flashen übernimmt die Shell die Konfigurationsdaten aus der Firmware-Datei selbst und muss nicht gezwungen werden, diese Daten anzugeben.

Aber als Anfänger wäre es für uns nicht überflüssig zu wissen, wie man bestimmte Konfigurationsbits anzeigt oder ändert. Klicken Sie dazu auf die Aufschrift „Konfiguration“. Das Fenster Konfigurationsbits bearbeiten wird geöffnet.

Wenn Sie 0 in 1 ändern müssen, dann ändern Sie - klicken Sie auf "Speichern". Natürlich ist es notwendig, sich bewusst zu verändern. Ich wiederhole, wenn Sie eine fertige Firmware-Datei verwenden, müssen Sie nichts ändern, das Programm erledigt alles automatisch.

Auswahl eines Mikrocontroller-Modells.

Mikrocontroller sind anders. Daher kann es bei der Programmierung des MK erforderlich sein, ein bestimmtes Modell des Mikrocontrollers anzugeben. Wenn Sie den Menüpunkt „Gerätefamilie“ auswählen, erscheint eine Liste mit Mikrocontroller-Familien. Es gibt auch EEPROM-Speicherchips in dieser Liste.

Im Gegensatz zu Mikrocontrollern werden EEPROM-Speicherchips nicht automatisch durch den Befehl "Tools" - "Check Communication" erkannt. Daher müssen Sie beim Lesen / Schreiben von EEPROM-Chips im Programm die Chipmarkierung angeben.

Wählen Sie im Menü den Punkt „Gerätefamilie“ – „EEPROMS“ – „24LC“.

Kalibrierkonstante.

Wie Sie wissen, benötigt der Mikrocontroller einen Taktgenerator, um zu funktionieren. Das Element, das die Frequenz dieses Generators einstellt, kann ein externer Schwingquarz, eine RC-Schaltung sein. Aber unter den PIC-Mikrocontrollern gibt es solche, die die notwendigen Treiberschaltungen innerhalb der Mikroschaltung selbst enthalten. Solche MKs umfassen zum Beispiel PIC12F629, PIC12F675.

Werkseitig wird in den Speicher solcher Mikrocontroller eine spezielle Konstante geschrieben, die den eingebauten Oszillator auf 4 MHz parametriert. Diese 34xx-Kalibrierungskonstante wird an die letzte Programmspeicherstelle bei 0x3FF geschrieben.

Beim Programmieren des Mikrocontrollers ist diese Konstante leicht zu löschen. Und obwohl PICkit2 Programmer Version 2.61 diese Konstante automatisch speichert und beim Programmieren mitschreibt, ist es nicht überflüssig, den Wert der OSCCAL-Konstante mitzuschreiben.

Bei Bedarf kann die Konstante einfach manuell vorgegeben werden. Wählen Sie dazu den Menüpunkt „Extras“ – „OSCCAL“ – „Manuell einstellen“.

Geben Sie im Feld "OSCCAL-Wert" den zuvor aufgezeichneten Wert der Konstante an. Klicken Sie auf die Schaltfläche "Einstellen".

Nachdem Sie nun mit den grundlegenden Funktionen des PICkit2-Programmierers vertraut sind, können Sie sicher damit beginnen, ein Gerät auf einem Mikrocontroller zusammenzubauen, z.

Mikrocontroller für Einsteiger. Videounterricht. Wir schreiben das Programm auf den Mikrocontroller (wir flashen den Chip)

________________________________________________________________________________________________________

Das erste einfache Programm, das die Spannung an den Pins des Mikrocontrollers steuert. Programmierung im CodeVisionAVR-Editor. Übertragen des Programms in den Speicher des Mikrocontrollers (Chip-Firmware). Herunterladen(36MB)


Inhalt

Wenn das Video nicht aufgezeichnet wird, stellen Sie einFlash Player und überprüfen Sie die Soundkarte, oderDownload Material (36 MB). Wenn anstelle eines Videos ein grüner Bildschirm angezeigt wird, installieren Sie den Flash-Player neu (einfach herunterladen letzte Version). Wenn das Video "zuckt", pausieren Sie es und lassen Sie es ein wenig laden. Player zum Anzeigen von Flash-Videos auf einem Heimcomputer. Erweitern Sie das Video auf Vollbild. Wenn sie "Video nicht gefunden", "Video nicht gefunden" schreiben, starten Sie das Video erneut.

CodeVisionAVR-Editor - offizielle Seite

Wenn der Mikrocontroller nicht geflasht wird, dann:
1) Keine Aufregung. Legen Sie das Design beiseite, machen Sie eine Pause, trinken Sie eine Tasse Tee und entspannen Sie sich. Echte Designs funktionieren selten beim ersten Mal – das ist normal, besonders für Anfänger (weil es zu viele unberücksichtigte Faktoren gibt, die das Gehirn nicht sofort begreifen kann).
Professionelle Entwickler wiederholen ihre Designs mehrere Dutzend Mal :)))
Eine interessante Eigenschaft des Gehirns: Wie Mark Twain sagte: "Verschiebe nicht auf morgen, was du auf übermorgen verschieben kannst." Manchmal ist es unmöglich, aus nächster Nähe ein Programm zu schreiben, eine elektronische Schaltung zu entwickeln usw. In diesem Fall müssen Sie sich nicht weiter anstrengen. Stellen Sie die Aufgabe in Ihr Unterbewusstsein und warten Sie ein paar Tage. Nach einer Pause geht oft alles von alleine. Und viel schneller und besser, als wenn Sie von morgens bis abends die gleichen paar Tage leiden würden.

2) Nach der Ruhe nochmals sorgfältig prüfen:
Essen - nicht unter 4,5 Volt, ist es ratsam, es vom USB des Computers zu nehmen, an den der Programmer angeschlossen ist (um mögliche Ausgleichsströme auszuschließen). Überprüfen Sie die Spannung mit einem Tester;
Sind die Kabel vom Computer zum Programmiergerät zu lang? Lange Leitungen werden gestört und die Wahrscheinlichkeit eines Ausfalls der Datenübertragung steigt;
Könnte das Kabel innen gebrochen sein? Ringen Sie alle Drähte mit einem Tester durch.
Wurden die Kabel vertauscht? MOSI, MISO, SCK, zurücksetzen, Masse, an der richtigen Stelle stecken?
Ist der Programmierer richtig eingesteckt Einstellung >> Programmierer;
Projekt >> Konfigurieren >> C-Compiler;
Ist der Kristalltyp korrekt in Werkzeuge >> Chipprogrammierer;

Fuzy hat nicht berührt? Wenn Sie es berühren, müssen Sie einen externen Quarz einsetzen.
Hast du den Chip vor dem Flashen gereinigt? Werkzeuge >> Chipprogrammierer >> Programmieren >> Chip löschen;
Manchmal hilft es, den Chip zu reinigen. Werkzeuge >> Chipprogrammierer großes k
Reset-Chip-Taste (entspricht dem Senden eines Impulses an den RESET-Pin);
Legen Sie es an den unteren Rand des Fensters Werkzeuge >> Chipprogrammierer drei Zecken Signatur prüfen, Löschen prüfen , Verifizieren ;
Oder umgekehrt - deaktivieren Sie diese Kästchen. Probieren Sie es so und so aus.
Wenn alles andere fehlschlägt, dann einen neuen Chip bestellen. Ein irgendwo herausgezogener Chip kann sich als verbrannt herausstellen und auf einen externen Generator abgestimmt sein, mit verbrannten Stiften und dergleichen.
Ja, und in Geschäften sind sie manchmal defekt gesaugt, tk. sie bewahren wer weiß wo auf. Manchmal ist es einfacher, einen neuen Chip zu kaufen, als darüber nachzudenken, was mit dem alten passiert ist (aber werfen Sie ihn nicht weg, wenn Sie Erfahrung sammeln - bauen Sie ihn um).
Wenn Sie einen alten Computer finden - versuchen Sie es
wir tun LPT-Programmierer(plötzlich ein defekter USB-Programmer durchgerutscht?). Es gibt nichts Einfacheres als einen LPT-Programmierer; Ich habe es auf einem Dutzend Computer gemacht - es hat immer sofort funktioniert und es gab nie Ausfälle.
Denken Sie vor der Installation daran erde deine Hände o eine Batterie, einen Wasserhahn oder eine massive Stahlkonstruktion (Zaun, Bücherregal) oder kaufen Sie ein antistatisches Armband oder eine antistatische Matte (statische Elektrizität von Händen kann schwache Mikroschaltkreise beschädigen).
Endlich der perverseste Weg - versuchen Sie es mit einem anderen Computer. Es kommt vor, dass Motherboards fehlerhaft sind, die Anschlüsse auf ihnen durchbrennen, die Drähte von den Kontakten weggehen usw.

Lernen Sie Mikrocontroller nicht nur aus Videos von dieser Seite. Das Gehirn braucht Abwechslung. Lesen Sie Bücher, Foren, Wikipedia, andere Seiten. Fragen Sie Ihre Elektronikfreunde um Rat. Üben und experimentieren Sie selbst. Sammeln Sie Wissen und Erfahrung.