mstroh76 1 month ago
parent
commit
ac80b32a5f
1 changed files with 35 additions and 55 deletions
  1. +35
    -55
      documentation/deutsch/functions.md

+ 35
- 55
documentation/deutsch/functions.md View File

@@ -34,7 +34,7 @@ sudo apt purge wiringpi
## Pin-Nummerierung und Raspbery Pi Modelle ## Pin-Nummerierung und Raspbery Pi Modelle
Pins: https://pinout.xyz/pinout/wiringpi
GPIOs: https://pinout.xyz/pinout/wiringpi
**Raspberry Pi Modelle mit 40-Pin GPIO J8 Header:** **Raspberry Pi Modelle mit 40-Pin GPIO J8 Header:**
@@ -101,8 +101,7 @@ Pins: https://pinout.xyz/pinout/wiringpi
| | | GND | 25 I 26 | CE1 | 11 | 7 | | | | GND | 25 I 26 | CE1 | 11 | 7 |
**Hinweise**
**Hinweise**
Beachten Sie die abweichende Pin-Nummern und den I2C0 bei Raspberry Pi 1B Rev. 1! Beachten Sie die abweichende Pin-Nummern und den I2C0 bei Raspberry Pi 1B Rev. 1!
@@ -194,22 +193,21 @@ void pinMode(int pin, int mode)
pinMode(17, OUTPUT); pinMode(17, OUTPUT);
``` ```
**Support:**
**Support:**
PM_OFF setzt den GPIO zurück (Input) und gibt ihn frei. PWM wird beendet. PM_OFF setzt den GPIO zurück (Input) und gibt ihn frei. PWM wird beendet.
Raspberry Pi 5 unterstützt den PWM BAL (Balanced) Modus nicht. Bei PWM_OUTPUT wird der MS Modus aktiviert. Raspberry Pi 5 unterstützt den PWM BAL (Balanced) Modus nicht. Bei PWM_OUTPUT wird der MS Modus aktiviert.
GPIO_CLOCK wird bei Raspberry Pi 5 (RP1) aktuell noch nicht unterstützt. GPIO_CLOCK wird bei Raspberry Pi 5 (RP1) aktuell noch nicht unterstützt.
** PWM Ausgang **
**PWM Ausgang**
PWM_OUTPUT aktiviert den angegeben PWM Ausgang mit den Einstellungen: PWM_OUTPUT aktiviert den angegeben PWM Ausgang mit den Einstellungen:
- Modus: Balanced (Pi0-4), MS (Pi 5)
- Modus: BAL-Balanced (Pi0-4), MS-Mark/Space (Pi 5)
- Range: 1024 - Range: 1024
- Clock: 32
- Divider: 32
Um sicher zu stellen, dass der Ausgang ohne aktiver Frequenz startet, sollte man vor der Aktivierung ``pwmWrite(PWM_GPIO, 0);`` ausführen. Um sicher zu stellen, dass der Ausgang ohne aktiver Frequenz startet, sollte man vor der Aktivierung ``pwmWrite(PWM_GPIO, 0);`` ausführen.
Danach können die entsprechenden Clock und Range Werte angepasst werden, ohne das bereits ungewollt eine Frequenz ausgegeben wird. Danach können die entsprechenden Clock und Range Werte angepasst werden, ohne das bereits ungewollt eine Frequenz ausgegeben wird.
### pinMode ### pinMode
@@ -281,11 +279,11 @@ if (value==HIGH)
``` ```
## Verwendung ISR
## Interrupts
### wiringPiISR ### wiringPiISR
Registriert eine Interrupt Service Routine (ISR) die bei Flankenwechsel ausgeführt wird.
Registriert eine Interrupt Service Routine (ISR) bzw. Funktion die bei Flankenwechsel ausgeführt wird.
>>> >>>
```C ```C
@@ -293,13 +291,14 @@ int wiringPiISR(int pin, int mode, void (*function)(void));
``` ```
``pin``: Der gewünschte Pin (BCM-, WiringPi- oder Pin-Nummer). ``pin``: Der gewünschte Pin (BCM-, WiringPi- oder Pin-Nummer).
``mode``: Der Widerstand.
> INT_EDGE_RISING ... Steigende Flanke
> INT_EDGE_FALLING ... Fallende Flanke
> INT_EDGE_BOTH ... Steigende und fallende Flanke
> *function .. Funktionspointer für ISR
``mode``: Auslösende Flankenmodus
- INT_EDGE_RISING ... Steigende Flanke
- INT_EDGE_FALLING ... Fallende Flanke
- INT_EDGE_BOTH ... Steigende und fallende Flanke
``*function``: Funktionspointer für ISR
``Rückgabewert``: ``Rückgabewert``:
> 0 ... Erfolgreich
> 0 ... Erfolgreich
<!-- > <>0 ... Fehler, zur Zeit nicht implementiert --> <!-- > <>0 ... Fehler, zur Zeit nicht implementiert -->
Beispiel siehe wiringPiISRStop. Beispiel siehe wiringPiISRStop.
@@ -339,24 +338,6 @@ int main (void) {
} }
``` ```
**Beispiel:**
```C
static volatile int edgeCounter;
static void isr(void) {
edgeCounter++;
}
int main (void) {
wiringPiSetupPinType(WPI_PIN_BCM);
edgeCounter = 0;
wiringPiISR (17, INT_EDGE_RISING, &isr);
Sleep(1000);
wiringPiISRStop(17);
printf("%d rinsing edges\n", edgeCounter)
}
```
### waitForInterrupt ### waitForInterrupt
@@ -368,16 +349,16 @@ int waitForInterrupt (int pin, int mS)
``` ```
``pin``: Der gewünschte Pin (BCM-, WiringPi- oder Pin-Nummer). ``pin``: Der gewünschte Pin (BCM-, WiringPi- oder Pin-Nummer).
``mS``: Timeout in Milisekunden.
``mS``: Timeout in Milisekunden.
``Rückgabewert``: Fehler ``Rückgabewert``: Fehler
> 0 ... Erfolgreich > 0 ... Erfolgreich
> -1 ... GPIO Device Chip nicht erfolgreich geöffnet > -1 ... GPIO Device Chip nicht erfolgreich geöffnet
> -2 ... ISR wurde nicht registriert (wiringPiISR muss aufgerufen werden) > -2 ... ISR wurde nicht registriert (wiringPiISR muss aufgerufen werden)
## PWM (Pulsweitenmodulation)
## Hardware PWM (Pulsweitenmodulation)
Verfügbare pins: https://pinout.xyz/pinout/pwm
Verfügbare GPIOs: https://pinout.xyz/pinout/pwm
### pwmWrite ### pwmWrite
@@ -393,51 +374,51 @@ pwmWrite(int pin, int value)
### pwmSetRange ### pwmSetRange
Setzt den Bereich für den PWM-Wert. Haupt eine Auswirkung auf die PWM Frequenz.
Gilt für alle PWM Pins und PWM Kanäle.
Setzt den Bereich für den PWM-Wert für alle PWM Pins bzw. PWM Kanäle.
Für die Berechnung der PWM Frequenz (M/S Mode) gilt 19200/divisor/range.
Bei Befehl ``pinMode(pin,PWM_OUTPUT)`` wird automatisch der Wert 1024 für den Teiler gesetzt.
>>> >>>
```C ```C
pwmSetRange (unsigned int range) pwmSetRange (unsigned int range)
``` ```
``pin``: Der gewünschte Pin (BCM-, WiringPi- oder Pin-Nummer).
``range``: PWM Range ``range``: PWM Range
### pwmSetMode ### pwmSetMode
Setzt den PWM Modus auf
Setzt den PWM Modus für alle PWM Pins bzw. PWM Kanäle.
>>> >>>
```C ```C
pwmSetMode(int mode); pwmSetMode(int mode);
``` ```
``mode``: Teiler (0-4095)
> PWM_MODE_MS ... Mark/Space Modus (PWM Frequenz fix)
> PWM_MODE_BAL ... Balanced Modus (PWM Frequenz variabel)
``mode``: PWM Modus
- PWM_MODE_MS ... Mark/Space Modus (PWM Frequenz fix)
- PWM_MODE_BAL ... Balanced Modus (PWM Frequenz variabel)
**Support:**
**Support:**
Raspberry Pi 5 unterstützt den Balanced Modus nicht! Raspberry Pi 5 unterstützt den Balanced Modus nicht!
### pwmSetClock ### pwmSetClock
Setzt den Teiler für den PWM Basistakt. Der Basistakt ist für alle Raspberry Pis auf 1900 kHz normiert.
Der Raspberry Pi 4 max divisor is 1456,
Setzt den Teiler für den PWM Basistakt. Der Basistakt ist für alle Raspberry Pis auf 1900 kHz normiert.
Für die Berechnung der PWM Frequenz (M/S Mode) gilt 19200/divisor/range.
Bei Befehl ``pinMode(pin,PWM_OUTPUT)`` wird automatisch der Wert 32 für den Teiler gesetzt.
>>> >>>
```C ```C
pwmSetClock(int divisor) pwmSetClock(int divisor)
``` ```
``divisor``: Teiler (Raspberry Pi 4: 0-4095, alle anderen 0-4095)
> 0 ... Deaktivert den PWM Takt bei Raspberry Pi 5, bei anderen Pi's wird divisor 1 benutzt
``divisor``: Teiler (Raspberry Pi 4: 1-1456, alle anderen 1-4095)
- 0 ... Deaktivert den PWM Takt bei Raspberry Pi 5, bei anderen Pi's wird divisor 1 benutzt
**Support:**
Der Raspberry Pi 4 hat aufgrund seines höheren internen Basistakt nur einen Einstellbereich von 0-1456.
Ansonsten gilt 1-4095 für einen gültigen Teiler.
**Support:**
Der Raspberry Pi 4 hat aufgrund seines höheren internen Basistakt nur einen Einstellbereich von 1-1456.
Ansonsten gilt 0-4095 für einen gültigen Teiler.
**Beispiel:** **Beispiel:**
@@ -453,7 +434,6 @@ int main (void) {
double freq = 19200.0/(double)pwmc/(double)pwmr; double freq = 19200.0/(double)pwmc/(double)pwmr;
printf("PWM 50%% @ %g kHz", freq); printf("PWM 50%% @ %g kHz", freq);
delay(250); delay(250);
pinMode(18, PM_OFF); pinMode(18, PM_OFF);
} }
```
```

Loading…
Cancel
Save