Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
de:netzer:io [2014/01/04 11:19] – [Flankenzähler] svesch | de:netzer:io [2025/06/11 20:42] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Netzer GPIO ====== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | ===== Überblick ===== | ||
+ | |||
+ | Hier ist ein Überblick über die 13 verfügbaren Netzer-Pins. | ||
+ | |||
+ | ^ Netzer Name ^ ID ^ Pinleiste ^ PIC Pin ^ Strombelastbarkeit Ausgang ^ Maximale Eingangsspannung ^ Beschreibung und zusätzliche Funktionen^ | ||
+ | | SPI_INT | j | JP1 | RC2 | 25\ mA | 5,5\ V | [[io#PWM- und Impulsgenerator|PWM- und Impulsausgang]] | | ||
+ | | SPI_CLK | k | JP1 | RC3 | 25\ mA | 5,5\ V | Takt des SPI- oder I2C-Moduls - RTS-Ausgang für [[UART]] **(Ab Version 1.5)** | | ||
+ | | SPI_MI | l | JP1 | RC4 | 25\ mA | 5,5\ V | Dateneingang des SPI-Moduls, Datenleitung des I2C-Moduls - CTS-Eingang für [[UART]] **(Ab Version 1.5)** | | ||
+ | | SPI_MO | m | JP1 | RC5 | 25\ mA | 5,5\ V | Datenausgang des SPI-Moduls | | ||
+ | | SPI_CS | i | JP1 | RF7 | 2\ mA | 5,5\ V | GPIO | | ||
+ | | RX | h | JP2 | RC7 | 25\ mA | 5,5\ V | Empfangsleitung UART | | ||
+ | | TX | g | JP2 | RC6 | 25\ mA | 5,5\ V | Sendeleitung UART | | ||
+ | | IO0 | a | JP2 | RB0 | 25\ mA | 5,5\ V | Interrupt-Eingang, | ||
+ | | IO1 | b | JP2 | RB1 | 25\ mA | 5,5\ V | Interrupt-Eingang und [[io# | ||
+ | | IO2 | c | JP2 | RB2 | 25\ mA | 5,5\ V | Interrupt-Eingang und [[io# | ||
+ | | IO3 | d | JP1 | RD1 | 8\ mA | 5,5\ V | [[io#PWM- und Impulsgenerator|PWM- und Impulsausgang]] | | ||
+ | | IO4 | e | JP1 | RA2 | 2\ mA | **3,3\ V** | [[io# | ||
+ | | IO5 | f | JP1 | RA3 | 2\ mA | **3,3\ V** | [[io# | ||
+ | |||
+ | Alle Pins des Netzers können frei über das Webinterface als digitaler [[io# | ||
+ | Die ID wird als Kürzel auf den Webseiten sowie im [[gpioserver|GPIO-Server]], | ||
+ | |||
+ | Sollte der [[serialserver|serielle Server]] aktiv sein, sind einige IOs nicht schreibbar, aber immer lesbar. | ||
+ | Je nach Modus betrifft das verschiedene IOs. | ||
+ | Die GPIO-Hauptseite informiert über IOs, die vom seriellen Server benutzt werden. | ||
+ | |||
+ | Jeder IO-Pin hat eine eigene Konfigurationsseite, | ||
+ | Darüber kann die Signalrichtung konfiguriert werden, aber auch neue Funktionen wie PWM, Impuls, Flankenzähler und ADC eingestellt werden. | ||
+ | |||
+ | |||
+ | ===== Webseiten ===== | ||
+ | |||
+ | ==== Allgemeine Konfiguration ==== | ||
+ | |||
+ | {{ gpiocommon.png? | ||
+ | |||
+ | Das automatische Neuladen stellt ein, nach wieviel Sekunden die GPIO-Hauptseite automatisch neugeladen werden soll (bei Überwachung von bestimmten Eingängen). Das Neuladen wird browserseitig angestossen, | ||
+ | |||
+ | |||
+ | ==== GPIO Hauptseite ==== | ||
+ | |||
+ | {{ gpiomain.gif? | ||
+ | |||
+ | Die GPIO Hauptseite ermöglicht den schnellen Überblick und Zugriff auf alle IOs. | ||
+ | Digitale Signale werden in Form einer Checkbox oder eines Balls dargestellt (Javascript muss aktiviert sein). | ||
+ | Eingänge sind ausschliesslich lesbar. | ||
+ | PWM-/ | ||
+ | |||
+ | Von der Hauptseite kann durch Auswahl der entsprechenden ID in der " | ||
+ | |||
+ | |||
+ | ===== Digitale Ausgänge ===== | ||
+ | |||
+ | Jeder Netzer-Pin kann als digitaler Ausgang konfiguriert werden. Eine logische ' | ||
+ | |||
+ | Weitere elektrische Daten sind dem {{: | ||
+ | |||
+ | Auf der IO-Konfigurationsseite kann der Startwert festgelegt werden, der nach Neustart des Netzers angenommen wird. | ||
+ | |||
+ | Der Ausgang ist über die GPIO-Hauptseite und über den [[gpioserver|GPIO-Server]] oder die [[commands_io|Kommandoschnittstelle]] schreib- und lesbar. | ||
+ | |||
+ | |||
+ | ===== Digitale Eingänge ===== | ||
+ | |||
+ | Jeder Netzer-Pin kann als digitaler Eingang konfiguriert werden. Es ist dabei die maximal zulässige Eingangsspannung zu beachten (siehe IO-Tabelle im [[de: | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Für jeden digitalen Eingang kann konfiguriert werden, ob bei auftretenden Änderungen am Pin (steigende, fallende oder beide Flanken) direkt eine Nachricht an den [[gpioserver|GPIO-Server]] oder die [[commands_io|Kommandoschnittstelle]] gesendet werden soll. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Flankenzähler ===== | ||
+ | {{ edgecounter.png? | ||
+ | |||
+ | IO0, IO1 und IO2 sind mit Flankenzählern ausgestattet. Es werden je nach Einstellung steigende oder fallende Flanken gezählt. Die Zählrichtung (dekrementieren oder inkrementieren) ist konfigurierbar. | ||
+ | Der Zähler ist 15 Bit breit. | ||
+ | Überläufe werden registriert und auf der jeweiligen IO-Seite angezeigt. | ||
+ | Durch die Reset-Checkbox kann der Zählerwert zurückgesetzt werden. | ||
+ | Auf Zählerwert und das Überlaufflag kann alternativ mit [[gpioserver|GPIO-Server]] oder [[commands_io|Kommandoschnittstelle]] zugegriffen werden. | ||
+ | |||
+ | Der Filter ermöglicht das Entprellen von beispielsweise Taster- oder Relaiskontakten und kann zwischen 1\ ms und 250\ ms in Stufen eingestellt werden. | ||
+ | |||
+ | Handelt es sich um eine externe Signalquelle, | ||
+ | Es können aber auch Ausgangsflanken gezählt werden, beispielsweise, | ||
+ | |||
+ | |||
+ | ===== Impulstrigger ===== | ||
+ | |||
+ | Neben der normalen digitalen Funktion kann IO0 Interrupts auslösen. Auf den Interrupt ist ein [[io# | ||
+ | |||
+ | Für das Auslösen der Flanke **muss** der IO0 Flankentrigger **aktiviert sein**. Je nach Einstellung wird der Impuls bei negativen oder positiven Flanken ausgelöst. Der Flankenzähler muss hingegen für die Impulserzeugung nicht unbedingt aktiv sein. Für externe Trigger-Signale muss IO0 als digitaler Eingang konfiguriert sein. | ||
+ | |||
+ | |||
+ | ===== PWM- und Impulsgenerator ===== | ||
+ | |||
+ | IO3 und SPI_INT können für das Generieren von PWM- oder Impulssignalen verwendet werden. Folgende Abbildung zeigt beispielhaft den Konfigurationsdialog für IO3. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | <note important> | ||
+ | * PWM-Frequenz | ||
+ | * Impulsmodus | ||
+ | * Impulseinheit | ||
+ | </ | ||
+ | ==== PWM ==== | ||
+ | |||
+ | Kontinuierliche PWM-Signale werden über einen 10-Bit-Wert (0..1023) eingestellt. Dieser Wert gibt das Tastverhältnis des Signals wieder. Der Wert selbst wird über die GPIO-Hauptseite oder mittels des [[gpioserver|GPIO-Servers]] oder der [[commands_io|Kommandoschnittstelle]] geschrieben und gelesen. | ||
+ | |||
+ | Der PWM-Startwert ist die Default-Einstellung direkt nach Neustart des Netzers. | ||
+ | |||
+ | Der PWM-Wert beeinflusst die Länge der ersten Halbwelle im Verhältnis zur zweiten. Je nach Polarität (Logik) des Signals wird beispielsweise bei einem PWM-Wert=1023 eine Gleichspannung von 0\ V (Logik=0) oder 3,3\ V (Logik=1) erzeugt. | ||
+ | |||
+ | Die PWM-Frequenz schliesslich beeinflusst direkt die Länge der beiden Halbwellen. Es werden die Werte 40\ kHz, 10\ kHz und 2,5\ kHz unterstützt. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Impuls ==== | ||
+ | |||
+ | Im Impulsmodus können einzelne oder auch kontinuierliche Impulsfolgen generiert werden. | ||
+ | Der Impulswert ist 16\ Bit breit, hat aber einen **Minimalwert von 100**, der nicht unterschritten werden kann. Der Wert selbst wird über die GPIO-Hauptseite oder mittels des [[gpioserver|GPIO-Servers]] oder der [[commands_io|Kommandoschnittstelle]] geschrieben oder gelesen. Die Impulslänge ist intern gepuffert, so dass das Ausgangssignal bei Änderungen keine unzulässigen Zustände annimmt. | ||
+ | |||
+ | Die Logik bezieht sich auf die Polarität des Impulses. 0-Logik bedeutet, der Impuls ist 0, danach nimmt der Pin den 1-Zustand an. 1-Logik bedeutet, der Impuls ist 1, danach nimmt der Pin den 0-Zustand an. | ||
+ | |||
+ | Der Startwert ist die Default-Einstellung direkt nach Neustart des Netzers. | ||
+ | |||
+ | Wird der Impuls getriggert, wird ein Impuls der Länge (Aktueller Impulswert * Impulseinheit) am Pin generiert. Es können die Einheiten 100\ ns, 200\ ns, 400\ ns und 800\ ns eingestellt werden. | ||
+ | |||
+ | //Modus Einzelimpuls// | ||
+ | Immer dann, wenn ein neuer Impulswert geschrieben wird, wird der Impuls getriggert. | ||
+ | |||
+ | //Modus Trigger von IO0// | ||
+ | Immer dann wenn an IO0 eine zuvor [[io# | ||
+ | |||
+ | //Modus Kontinuierlich// | ||
+ | Analog zur PWM wird ein Impulsstrom am Pin generiert. Getriggert wird immer dann, wenn ein interner Zähler überläuft. Die Zeitdauer des Zählers beträgt (65556*Impulseinheit). Für IO3 und SPI_INT wird der selbe interne Zähler verwendet, so dass beide Signale immer in Phase sind. | ||
+ | |||
+ | |||
+ | ===== ADC ===== | ||
+ | |||
+ | IO4 und IO5 können Spannungen zwischen 0\ und 3,3\ V messen. | ||
+ | Folgende Abbildung zeigt beispielhaft den Konfigurationsdialog für IO4. | ||
+ | {{ adcconfig.gif? | ||
+ | |||
+ | Der Messwert ist 10\ Bit (0..1023) breit. Er kann über die GPIO-Hauptseite oder den [[gpioserver|GPIO-Server]] oder die [[commands_io|Kommandoschnittstelle]] abgefragt werden. | ||
+ | |||
+ | Der ADC wird nach dem Neustart des Netzers automatisch kalibriert. | ||
+ | Beide Kanäle teilen sich den selben ADC. | ||
+ | Der ADC wird immer erst aktiviert, wenn ein Auslesevorgang angestossen wird. | ||
+ | Der Auslesevorgang dauert ca. 2,5\ µs. | ||