Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:microcontroller_mcu

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
hardware:microcontroller_mcu [2023-03-02 17:01:46] – [Atmel / Arduino] manfredhardware:microcontroller_mcu [2023-04-08 03:32:45] (aktuell) – gelöscht manfred
Zeile 1: Zeile 1:
-====== Microcontroller (MCU) ====== 
- 
-Ursprünglich hatte man MCUs in [[https://de.wikipedia.org/wiki/Assemblersprache|Assembler]] programmieren müssen, dann gab es GUIs, mit denen man MCUs in [[https://de.wikipedia.org/wiki/C_(Programmiersprache)|C]] programmieren konnte. 
-Neuere MCUs werden üblicherweise mit [[https://micropython.org|Micropython]] programmiert. 
- 
- 
-===== Atmel / Arduino ===== 
- 
-Die Controller aus dem Hause Atmel sind wegen ihres einfachen Aufbaus, ihrer leichten Programmierbarkeit, den kostenlosen Entwicklungswerkzeugen und der Verfügbarkeit in DIP-Gehäuseformen auch bei Hobby-Anwendern weit verbreitet. 
- 
-Fast alle Typen können per SPI über einen ISP (AVR ISP, In-System Programmer) programmiert werden, der über simple Programmieradapter Anschluss an die serielle, parallele oder USB-Schnittstelle eines PCs findet. Die Besonderheit liegt in der Möglichkeit, den Prozessor nicht aus der Zielschaltung herausnehmen zu müssen. Stattdessen kann man ihn im eingebauten Zustand reprogrammieren. 
- 
-Ein Vorteil gegenüber anderen Mikroprozessor-Familien ist, dass sich dank der RISC-Architektur die meisten Register-Befehle innerhalb eines Systemtakts abarbeiten lassen, ausgenommen Sprung- und Multiplikationsbefehle sowie Zugriffe auf das Speicherinterface (u. a. RAM und I/O-Ports). Somit ist diese Architektur sehr schnell im Vergleich zu anderen. 
- 
-Durch das auf Hochsprachen wie C ausgelegte Hardware-Design können auch Compiler sehr effizienten Code erzeugen; der Entwickler braucht sich nicht zwingend auf Assembler-Ebene zu begeben. Das Design des ATMEGA8 wurde bereits in der Entwicklung des Chips für C-Compiler optimiert. 
- 
-Im Gegensatz zu den [[https://de.wikipedia.org/wiki/PICmicro|PICmicro]]-Prozessoren wurde der AVR-Befehlssatz über alle Modelle – abgesehen vom AT90S1200 mit eingeschränktem Befehlssatz und vom ATmega mit leicht erweitertem Befehlssatz – kompatibel gehalten. 
- 
-  * [[https://www.mikrocontroller.net/articles/AVR_Typen]] 
-  * [[https://wolles-elektronikkiste.de/atmel-studio-7-ein-einstieg|Atmel (Microchip) Studio 7 – ein Einstieg]] - //05. Juli 2019// 
-  * [[https://www.mikrocontroller.net/articles/AVR_Assembler_-_Vergleichstabelle]] 
-  * [[https://de.wikipedia.org/wiki/Microchip_AVR#Software|Software]] 
-  * [[https://www.arduino.cc/en/Guide|Getting Started with Arduino products]] 
- 
-Bei einer Veranstaltung des US-amerikanischen Magazins Make im kalifornischen San Mateo am 16. Mai 2015 stellte Massimo Banzi einen neuen Markennamen für das Arduino-Projekt vor: „[[https://edu.books.sensebox.de/de/getting_started/genuino_board.html|Genuino]]“. Dieser neue Markenname soll dort genutzt werden, wo die Markenrechte der eigentlichen Marke [[https://www.arduino.cc|Arduino]] ungeklärt sind. 
- 
-Die Marke [[https://edu.books.sensebox.de/de/getting_started/genuino_board.html|Genuino]] soll nun für jene Microcontroller-Boards verwendet werden, die außerhalb der Vereinigten Staaten verkauft werden. Außer der neuen Marke sollen die verkauften Boards sich nicht von den ehemaligen [[https://www.arduino.cc|Arduino]]-Boards unterscheiden. Anscheinend ist die Rechtslage um die Markenrechte von [[https://www.arduino.cc|Arduino]] nur in den Vereinigten Staaten eindeutig. 
- 
- 
-==== Atmel ==== 
- 
-Die modernen Typen sind die Tiny (=winzig) und die Mega (=riesig). Die ATtiny haben kleinere Gehäuse als die ATmega, mit weniger Pins. Dies führt bei ähnlicher Funktionalität wie die Megas zu Mehrfachbelegungen der Pins. Die Tiny sind eher für kleine Aufgaben geeignet, wo die Einsparung über den Preis und den geringeren Aufwand beim Datenblattstudium kommt. Anfänger und Bastler sind mit den ATmega besser bedient, da es weniger Limitierungen gibt. Für ATmega gibt es zahlreiche Entwicklungsboards und Lernsysteme, wie die [[https://www.arduino.cc/|Arduino]]-Familie. 
- 
- 
-=== Nomenklatur - ATmega === 
- 
-Auch wenn die Namensgebung auf den ersten Blick bedingt durch die vielen verfügbaren Modelle kompliziert aussieht, so folgt sie doch immer (von wenigen Ausnahmen abgesehen) einem einfachen Schema. 
- 
-  * Nehmen wir einen aktuellen Baustein als Beispiel: *ATmega48PA-AU*. Der Name besteht aus 5 Teilen: 
-    - Der Baureihe (hier: "ATmega") 
-    - Einer Nummer, immer eine Zweierpotenz (hier: 4). Diese Zahl gibt die Größe des Flashspeichers in Kibibyte an. 
-    - Bis zu zwei weiteren Ziffern (hier: 8). Sie definieren die Zusatzfunktionen sowie Zahl der I/O-Ports. 
-    - Bis zu zwei Buchstaben (hier: PA), die für die Revision sowie spezielle stromsparende Architekturen stehen. 
-    - Einem Bindestrich und zwei weiteren Buchstaben, die die Bauform angeben (hier: AU). 
- 
- 
-===== Python + ESP32 ===== 
- 
-  * Docs: [[https://docs.espressif.com/projects/esp-idf/en/latest/esp32/]] 
-  * Firmware mit Python Interpreter: [[https://micropython.org/download/esp32/]] 
-  * VS Code Extension: [[https://marketplace.visualstudio.com/items?itemName=espressif.esp-idf-extension]] 
- 
-<code python main.py> 
-from helloWorld import hello_world 
-from led import set_pin, led, blinker 
- 
- 
-def main(): 
-    hello_world() 
-    set_pin(15) 
-    led(True) 
-    blinker() 
- 
- 
-if __name__ == '__main__': 
-    main() 
- 
-</code> 
- 
-<code python helloWorld.py> 
-def hello_world(): 
-    print("Hello World!") 
-    print(f"6 * 7 = {6 * 7}") 
- 
-</code> 
- 
-<code python led.py> 
-import time 
- 
-from machine import Pin 
- 
-global __PIN__ 
- 
- 
-def set_pin(pin): 
-    global __PIN__ 
-    __PIN__ = Pin(pin, Pin.OUT) 
- 
- 
-def led(on): 
-    pin = __PIN__ 
-    if on: 
-        pin.on() 
-    else: 
-        pin.off() 
- 
- 
-def blinker(): 
-    pin = __PIN__ 
-    while True: 
-        pin.on() 
-        time.sleep(1) 
-        pin.off() 
-        time.sleep(1) 
- 
-</code> 
- 
  
/home/http/wiki/data/attic/hardware/microcontroller_mcu.1677776506.txt · Zuletzt geändert: von manfred