Zum Beispiel ein PIC10F200T
Praktisch jeder Code, den Sie schreiben, ist größer, es sei denn, es handelt sich um einen Single-Purpose-Chip. Gibt es eine Möglichkeit, mehr Programmspeicher von einem externen Speicher oder etwas anderem zu laden? Ich bin nur neugierig, ich verstehe nicht, wie nützlich das sein könnte ... aber es muss sein.
microcontroller
pic
memory
storage
coder543
quelle
quelle
Antworten:
Ihr Kinder, geht von meinem Rasen!
384 Bytes bieten ausreichend Platz, um in Assembler etwas ziemlich Komplexes zu erstellen.
Wenn Sie die Geschichte bis zu einem Zeitpunkt durchforsten, an dem Computer die Größe eines Raums hatten, werden Sie einige wirklich erstaunliche Meisterleistungen der Kunst in <1k finden.
Lesen Sie zum Beispiel die klassische Geschichte von Mel - A Real Programmer . Zugegeben, diese Typen hatten 4096 Erinnerungswörter, die dekadenten Ungläubigen.
Schauen Sie sich auch einige der alten Demoszenenwettbewerbe an, bei denen die Herausforderung darin bestand, ein "Intro" in den Bootblock einer Diskette einzubauen. Typische Ziele sind 4k oder 40k, und es gelingt normalerweise, Musik und Animation einzuschließen.
Bearbeiten zum Hinzufügen : Es hat sich herausgestellt, dass Sie den weltweit ersten wissenschaftlichen Taschenrechner für 100 US-Dollar in 320 Wörtern implementieren können .
Edit für die jungen 'uns:
quelle
Mikrocontroller sind so billig, dass sie häufig für wirklich einfache Aufgaben verwendet werden, die in der Vergangenheit eher mit diskreter Logik erledigt worden wären. Wirklich einfache Dinge. Beispielsweise möchte man, dass ein Gerät alle fünf Sekunden einen Ausgang für eine Sekunde einschaltet, genauer gesagt, als dies mit einem 555-Timer möglich wäre.
Das wäre eine echte, brauchbare Anwendung mit weniger als 32 Wörtern (48 Bytes) Code-Speicherplatz. Man könnte leicht ein paar Optionen hinzufügen, damit einige I / O-Pins die Timing-Optionen steuern und immer noch viel Platz übrig haben, aber selbst wenn der Chip genau das ist, was oben gezeigt wurde, ist er möglicherweise immer noch billiger und einfacher als jede Alternative, die diskrete Technik verwendet Logik. Übrigens
clrwdt
könnten die Anweisungen in das Unterprogramm verschoben werden, aber dies würde die Dinge weniger robust machen. Wie beschrieben, wird der Watchdog erst dann gespeist, wenn die Ausführung zur Hauptschleife zurückkehrt, wenn ein Fehler den Rücksendeadressenstapel beschädigt. Geschieht dies nie, setzt der Watchdog den Chip nach einigen Sekunden zurück.quelle
clrwdt
Anweisungen. Dies ist nicht die absolut ausfallsichere Zähleranordnung, die möglich ist. Es werden jedoch einige Sicherheitsaspekte berücksichtigt (z. B. das Vermeidenclrwdt
innerhalb eines Unterprogramms)."NUR" 384 Bytes?
Vor langer Zeit hatte ich die Aufgabe, ein gesamtes Betriebssystem (für mich) für einen Spezialcomputer zu schreiben, der die Schiffs-, Pipeline- und Raffineriemanagementbranche bediente. Das erste derartige Produkt des Unternehmens war 6800-basiert und wurde auf 6809 aktualisiert. Sie wollten ein neues Betriebssystem, das mit dem 6809 kompatibel ist, um die Lizenzkosten des ursprünglichen Betriebssystems zu senken. Sie haben auch die Größe des Boot-Roms von 32 auf 64 Bytes erhöht. Wenn ich mich recht entsinne, war es ungefähr 33 Jahre her! - Ich habe die Ingenieure überzeugt, mir 128 Bytes zu geben, damit ich die Gerätetreiber des gesamten Betriebssystems auf die ROM schreiben und so das gesamte Gerät zuverlässiger und vielseitiger machen kann. Dies beinhaltete:
Ja, all dies war so einfach wie es nur geht und handoptimiert, um jeden überflüssigen Zyklus zu beseitigen, aber perfekt wartbar und zuverlässig. Ja, all das habe ich in die verfügbaren Bytes geschustert - oh, es hat AUCH die Interrupt-Behandlung und die verschiedenen Stapel eingerichtet und das Echtzeit- / Multitasking-Betriebssystem initialisiert, den Benutzer zu Startoptionen aufgefordert und das System gebootet.
Ein Freund von mir, der immer noch mit dem Unternehmen (seinem Nachfolger) verbunden ist, hat mir vor einigen Jahren erzählt, dass mein Code immer noch in Betrieb ist!
Sie können eine Menge mit 384 Bytes tun ...
quelle
Sie können diese Funktion für sehr kleine Anwendungen (z. B. verzögerter Netzteilstart , Austausch des 555-Timers , Steuerung auf Triac-Basis , LED-Blinken usw.) mit geringerem Platzbedarf als bei Logikgattern oder einem 555-Timer verwenden.
quelle
Ich habe einen Feuchtigkeitssensor für Pflanzen entwickelt, der die Wassermenge der Pflanze misst und eine LED blinkt, wenn die Pflanze Wasser benötigt. Sie können den Sensor veranlassen, den Anlagentyp zu lernen und somit seine Einstellungen während des Betriebs zu ändern. Es erkennt niedrige Spannung an der Batterie. Ich hatte keinen Flash- und RAM-Speicher mehr, konnte aber alles in C-Code schreiben, damit dieses Produkt einwandfrei funktioniert.
Ich habe das von Ihnen erwähnte Bild 10f verwendet.
Hier ist der Code, den ich für meinen Pflanzenwassersensor erstellt habe. Ich habe das pic10f220 benutzt, da es ein ADC-Modul hat, es hat den gleichen Speicher wie das pic10f200, ich werde morgen versuchen, das Schema zu finden.
Der Code ist in Spanisch, aber es ist sehr einfach und sollte leicht zu verstehen sein. Wenn der Pic10F aus dem Ruhemodus aufwacht, wird er zurückgesetzt, sodass Sie prüfen müssen, ob es sich um ein PowerUp oder einen Reset handelt, und entsprechend vorgehen. Die Anlageneinstellung bleibt im RAM, da sie sich nie wirklich ausschaltet.
HAUPT C
MAIN.H
Lassen Sie mich wissen, wenn Sie Fragen haben, ich werde versuchen, auf der Grundlage dessen, woran ich mich erinnere, zu antworten. Ich habe das vor einigen Jahren codiert, also überprüfe nicht meine Codierfähigkeiten, sie haben sich verbessert :).
Schlussbemerkung. Ich habe den Hi-Tech C-Compiler verwendet.
quelle
Eine Sache, die ich nicht erwähnt habe: Der von Ihnen erwähnte Mikrocontroller kostet nur 0,34 US-Dollar pro Stück in Mengen von 100. Für billige Massenprodukte kann es also sinnvoll sein, sich mit den zusätzlichen Codierungsproblemen zu befassen, die durch eine derart begrenzte Einheit verursacht werden. Gleiches gilt möglicherweise für die Größe oder den Stromverbrauch.
quelle
Als ich in der Highschool war, hatte ich einen Lehrer, der darauf bestand, dass es für einen Schüler wie mich zu schwierig sei, das Licht zu dimmen.
So herausgefordert verbrachte ich eine ganze Menge Zeit damit, das phasenbasierte Dimmen mit Triacs zu lernen und zu verstehen und den 16C84 aus einem Mikrochip zu programmieren, um dieses Kunststück auszuführen. Ich endete mit diesem Assembler-Code:
Natürlich müssten Sie dies für den von Ihnen erwähnten Chip ändern und möglicherweise eine billige serielle Routine für die Eingabe hinzufügen, da Ihr Chip keinen 8-Bit-breiten Port zum Abhören hat, aber die Idee ist, dass ein scheinbar komplexer Job dies kann in sehr wenig Code erledigt werden - Sie können zehn Kopien des obigen Programms in den 10F200 einpassen.
Weitere Projektinformationen finden Sie auf meiner Seite zum Dimmen von Licht . Übrigens habe ich das meinem Lehrer nie gezeigt, aber am Ende habe ich eine Reihe von Lichtanlagen für meinen DJ-Freund gemacht.
quelle
Nun, vor Jahren habe ich einen Temperaturregler mit serieller E / A (Bit-Banging der seriellen E / A, da die MCU keinen UART hatte) und einen einfachen Befehlsinterpreter geschrieben, um mit dem Regler zu sprechen. Die MCU war eine Motorola (jetzt Freescale) MC68HC705K1 mit satten 504 Bytes Programmspeicher (OTPROM) und etwa 32 Bytes RAM. Nicht so wenig wie das PIC, auf das Sie verweisen, aber ich erinnere mich, dass noch ein ROM übrig war. Ich habe noch ein paar zusammengebaute Einheiten, 17 Jahre später; willst du einen kaufen?
Also ja, es kann zumindest in der Montage gemacht werden.
Auf jeden Fall habe ich kürzlich sehr einfache C-Programme geschrieben, die bei einer Optimierung wahrscheinlich in 384 Byte passen würden. Nicht alles erfordert große, komplexe Software.
quelle
Sie können eine LED mit 384 Bytes Programmspeicher und noch mehr schreiben.
Soweit ich weiß, ist es nicht möglich, den Programmspeicher mit einem externen Chip zu erweitern (es sei denn, Sie erstellen einen vollständigen ASM-Interpreter in den 384 Bytes , was langsam wäre). Es ist jedoch möglich, den Datenspeicher mit einem externen Chip (EEPROM, SRAM) zu erweitern.
quelle
Es ist tatsächlich schlimmer als du denkst. Ihre verknüpfte Mouser-Seite ist verwirrend, wenn angegeben wird, dass dieser Prozessor 384 Byte Programmspeicher hat. Der PIC10F200 verfügt tatsächlich über 256 12-Bit- Wörter im Programmspeicher.
Also, was kannst du damit machen? Der 12-Bit-PIC-Befehlssatz, der von den PIC10F20 x- Geräten verwendet wird, besteht aus nur einem Wort. Nachdem Sie also einige Anweisungen für die Prozessoreinrichtung abgezogen haben, bleibt genügend Platz für ein Programm mit etwa 250 Schritten. Das reicht für viele Anwendungen. Ich könnte wahrscheinlich eine Waschmaschinensteuerung in dieser Art von Raum schreiben, zum Beispiel.
Ich habe mir gerade die verfügbaren PIC C-Compiler angesehen, und es sieht so aus, als würde etwa die Hälfte von ihnen nicht einmal versuchen, Code für einen PIC10F200 zu emittieren. Diejenigen, die wahrscheinlich so viel Kesselcode ausgeben, dass Sie möglicherweise nur einen LED-Blinker in den verbleibenden Bereich schreiben können. Sie möchten mit einem solchen Prozessor wirklich Assemblersprache verwenden.
quelle
Zu meiner Zeit winkten wir mit meinem Stock und mussten unsere eigenen Stücke aus dem Sand ätzen!
1976 (oder so ungefähr) war das Atari 2600 VCS-System eine der beliebtesten "Videospielplattformen" der damaligen Zeit. Darin lief der Mikroprozessor (MOSTEK 6507) mit einer hohen Frequenz von ~ 1 MHz und hatte **** 128 Bytes RAM **.
Ein zweites Beispiel, das ich an einen Mikrocontroller mit extrem begrenztem RAM (~ 128 Byte) erinnere, war ein PIC12F, der in einem DC-DC-Wandler verwendet wurde. Dieses Mikro musste auch Assembler-Sprache verwenden, um überhaupt ausgeführt werden zu können.
quelle