-
Thread
u-blox steigt aus IoT-Funkmodulgeschäft aus, Container für Echtzeitbetriebssystem, RP2350 von Olimex
color depth. • Add sideset_pindirs to rp2pio.StateMachine. • rp2pio: support on GPIO pins 32 and up, available on RP2350B. • Initial implementation of audiobusio.PDMIn on Espressif. • Update Espressif ESP-IDF to v5.3.2, which supports ESP32-P4 v1.0 chips. • New ports/analog
community.nxp.com/t5/MCUXpresso-IDE-Knowledge-Base/MCUXpresso-IDE-v24-12-Now-Available/ta-p/2028216 [/c] ### Neue Exportbeschränkungen für Chips „hohe Dichte“ Die weltpolitischen Wirren wirken sich naturgemäß - Stichwort Bestellen eines STM32N6- Entwicklerboards - auch auf das Leben des Mikrocontrollerentwicklers
-
Thread
ADC Dynamikbereich
Der ADC des RP2040 ist meiner Erfahrung nach nur mäßig gelungen. Z.B. die ADC-Einheiten moderner STM32 sind wesentlich besser. Wenn es Dir auf Genauigkeit ankommt würde ich den nicht nehmen. Wenn Du beim RP2040 bleiben willst, dann schließ einen externen ADC an. Z.B. per I2C oder SPI, da gibts viel
Signalbereich zu wählen. Das wäre meine erste Wahl. Oder nimm einen anderen Mikrocontroller, z.B. STM32F373 mit Delta-Sigma, oder sonst die STM32G4-Serie und dort dann Oversampling verwenden. Größere Gehäusegröße, so dass die dedizierten Ref-Eingänge rausgeführt sind. Das wäre meine 2. Wahl.
-
Thread
STM32F042 gecloned aber verhält sich seltsam
genau? Wie hier schon vermutet wurde macht die Firmware einen Test auf die Device ID (im Code ab 0x0800184C), da werden die Werte aus 0x1FFFF7AC und 0x1FFFF7B0 geprüft. Siehe z.B. hier für Details zur Device ID: http://blog.gorski.pm/stm32-unique-id Der Code zur Prüfung ist etwas komplexer,
Dieter S. schrieb im Beitrag #7812505: > ist 0x08000000 bei diesem STM32 nicht eher 0x08004000 ?
-
Thread
Basteln: USB via dünnes HDMI-Kabel
Wie wäre es mit einem USB-C Kabel? Das hat ein Adernpaar passend für USB1.0/USB2.0, je nach Kabel ausreichend dicke Stromkabel und 4 Superspeed Paare, die man für die Fernbedienung missbrauchen kann, z.B. jeweils eine Ader + GND) Wichtig ist nur, das das Kabel USB 3.0 oder größer kann, sonst fehlen die Superspeed-Pärchen. Vielleicht geht z.B. das hier: https://www.reichelt.de/de/de/shop/produkt/sync-_ladekabel_usb-c_-_usb-c_60w_3_0_m-348661 Eventuell kann man
-
Thread
Raspberry Pi mit 16 GB, Arduino Cloud mit S3
verwenden. Interessant ist, dass hier die bereits vom Raspberry Pi 5 mit 2 GB bekannte neue Version D0 des Hauptprozessors zum Einsatz kommen wird bzw. soll: [c] The optimised D0 stepping of the Broadcom BCM2712 application processor includes support for memories larger than 8GB. And our friends at
und Co. behandeln wir deshalb erst morgen. ### In eigener Sache, zur Zweiten - STM32N6-Entwicklerboard ist nicht lieferbar, Grund dafür sind Export-Lizenzprobleme. Der Newsautor entschuldigt sich bei allen, die auf ein Unboxing des STM32N6-Entwicklerboards warten. Der Autor kaufte
-
Artikel
USB-Tutorial mit STM32
in der Software passiert. Für komplexe USB-Geräte oder eine schnelle Implementierung sei auf die im STM32CubeF1 enthaltene Bibliothek verwiesen. Es wird Grundlagenwissen über die Programmierung der STM32-Controller und über die C++-Programmierung vorausgesetzt. Zunächst wird ein "USB Hello-World" entwickelt
USB High Speed (480 MBit/Sec). Hier wird ein Controller mit der einfachsten Variante gewählt, der STM32F103RB. Dieser ist beispielsweise auf dem Olimexino-STM32 zu finden, im Folgenden wird dieses als Grundlage für die Beispiele genutzt. Der auf den günstigen Blue Pill-Boards zu findende STM32F103C8
-
Thread
STM32G031G8 Grundbeschaltung / keine Verbindung über SWD
Hallo zusammen, ich arbeite erstmals mit einer MCU aus der STM32G0-Reihe, vorher nur mit STM32Fx. Die im Screenshot ersichtliche Schaltung habe ich als PCB erstellen lassen, mit der Minimalbestückung (MCU, bypass, Filter an NRST) bekomme ich aber partout keine
René K. schrieb im Beitrag #7807830: > Die ICs kommen von Aliexpress Selber schuld. Die STM32G... die ich habe (nicht aus China) funktionieren wie im Handbuch beschrieben.
-
Thread
Bau GPS-Tracker mit Solarpanel und Akku
im Beitrag #7808152: > Ich würde mir da ja eher was wünschen, daß BT 5.1 unterstützt. Manche ESP32 können BLE 5.3, die STM32WB können BLE 5.4, die nRF5 können BLE 6.0... Brauchst du BT Classic?
Michael L. schrieb: >> Ich würde mir da ja eher was wünschen, daß BT 5.1 unterstützt. > > Manche ESP32 können BLE 5.3, die STM32WB können BLE 5.4, die nRF5 können > BLE 6.0... Brauchst du BT Classic? Ich denke, eher nicht. Geboren wurde die Idee zu einem Tracker/Ortungsgerät über die Weihnachtsfeiertage
-
Thread
Zeiger auf String-Array wird falsch
Wert 0x2bcb an. Wahrscheinlich wird hier falsch gecastet, daher ist die Adresse nur 2 byte lang, der Rest wird abgeschnitten. In meiner Implementierung für den STM32F1 ist das Problem wahrscheinlich nicht
Datei für den STM32 so zu sehen ist. Vielen Dank im Voraus. Gruß, Philipp
-
Thread
welcher Debugger für 8bit Controller (AVR etc.) ?
mittlerweile schon ordentliche Bibliotheken > dazu geschrieben habe – sowohl für AVR als auch für STM32 Na auf dem STM32 ist das nur eine Zeile mit der HAL, da braucht es keine Bibliothek. Gregor J. schrieb im Beitrag #7806937: > Auch > Einsprünge und das Verlassen der Interrupts, die Ausführungszeit
Niklas G. schrieb im Beitrag #7806947: > Na auf dem STM32 ist das nur eine Zeile mit der HAL, da braucht es keine > Bibliothek. HAL enthält – genauso wie die IDE in ihrem vollen Umfang selbst – Fehler. Es kommt nicht oft vor, aber man wird irgendwann
-
Thread
Mikrocontroller mit 5V
www.microchip.com/en-us/product/PIC18F44Q71 Plus dsPIC33EV* (16 Bit, 70 MHz) einige ATSAM bzw PIC32C (Cortex M0) fchk
Auch NXP: S32K1 Serie (Cortex M0 / M4F) und wohl auch einige der neuen S32K3 Serie (Cortex M7)
-
Thread
ADC Daisy Chain
sind keine SR implementiert. https://onlinedocs.microchip.com/oxy/GUID-F2693295-804D-4E36-8BA5-0105C1751EA5-en-US-5/GUID-A303F2B6-8BBA-4702-B548-AFF957E0B12D.html voschi
ausreichend. __________ > Da braucht man sicher µCs mit entsprechend hohem Systemtakt. Mit z.B. STM32 kann man deutlich höher mit der Clockrate gehen – spielt z.B. eine ganz wichtige Rolle, wenn man SPI-Speicher (25er) auslesen muss, wo dann zig Clocks folgen müssen, um überhaupt an das erste Datenbit
-
Thread
Library für GUI
Ausgabe und Rotary Encoder und Buttons als Eingabe hat. Das Display ist momentan ein standard SSD1306 0.96 Zoll OLED mit 64x128 Pixeln. Das ist aber für die zukünftigen Revisionen nicht mehr gut genug und daher will ich ein 2 Zoll Farbdisplay verwenden. Programmiert wird ein ESP32S3 mit Arduino IDE.
Editor kostenlos, dafür sind die Displays relativ teuer und die Auswahl ist begrenzt. Die MCUs wie ESP32 oder STM32 (LPC u.a. natürlich auch) haben heute soviel Power und schnelles SPI per DMA das es kein Problem ist eine Anwendung mit guter Grafik auf einer CPU laufen zu lassen. Oder heute auch der RP2040
-
Artikel
Pegelwandler
Alles andere was nicht explizit dafür freigegeben wurde Beispiele für 5V-Tolerante Bauteile. manche STM32 WizNet W5500 Kompatibilität von Logikpegeln. Verschiedene Logikfamilien haben unterschiedliche Anforderungen an ihre Eingangssignale, bei einer Wandlung von kleinerer zu größerer Spannung kann es
Baud und bis zu 10 m Leitungslänge Beschränkungen: ggf. Platzbedarf Geschwindigkeit s.o. Beispiel: I2C-Bus: gemeinsam 3.3V und 5V. MSP430 an 3,3V/5V: slaa148.pdf Philips PCA9515: I2C Puffer mit Pegelwandlung. Der PCA9515 ist ein I2C-Bus Repeater, welcher I2C Busse mit verschiedenen Spannungen isoliert
-
Thread
esp32c3 & interrupt service routine
? Zum Lernen würde ich mit einem überschaubaren STM32L0 anfangen und später auf einen stärkeres Modell wechseln, falls nötig. Test-Boards findet man unter dem Namen "STM32 Nucleo".
ist? > Zum Lernen würde ich mit einem überschaubaren STM32L0 anfangen und > später auf einen stärkeres Modell wechseln, falls nötig. Test-Boards > findet man unter dem Namen "STM32 Nucleo". Ja Da gebe ich Dir zu 100% recht. Diese Mikrocontroller sind
-
Thread
Was verwendet ihr zum Z-Dioden testen?
schöne Fingerübung für eine Controlleranwendung. Heute würde ich das ganze wahrscheinlich mit einem STM32F072 machen, da dieser schon einen DAC verbaut hat und man sich das "Gedönse" mit PWM und Tiefpassfilter dann schenken kann.
| | uC |-+ | | C 1k | | | A0|---------(------+ | | | 5V | A1|---------(------(--(--(--+ | | D2|---470R--(------(--(-|< | | +----+ | 10k | | 10R | | |
-
Thread
RS232/UART - Hardware-Terminal
produkte/lcd-oled-tft-hmi-display-industrie-medizintechnik/grafik-hmi-bedieneinheit-mit-touch-rs232-spi-i2c.html P.S. Die meisten davon gibt es auch bei Reichelt P.P.S. gibt es eigentlich ATmega mit 100kByte RAM? Das ist ja selbst für STM32 ziemlich viel?
Beitrag #7804132: > P.P.S. gibt es eigentlich ATmega mit 100kByte RAM? Das ist ja selbst für > STM32 ziemlich viel? Man kann mit einem AVR auch einen externen und entsprechend großen SRAM mit Bankswitching betreiben, die STM32 gibt es mit SRAMs zwischen 4KB bis mindestens 1,4MB, aber mit einem
-
Thread
Raisonance vergibt nun RIDE + RKIT-51 Lizenzen kostenlos
einzigen die sich Sorgen machen muessen, ist wohl Raisonance selbst. Kennt man deren Produkte, z.B. von STM8 oder STM32, wird man um die kuenftig einen Bogen machen. Und die Supportabteilung sitzt in Frankreich. Man darf sich jetzt selbst gerne seinen Teil denken... Fuer 51er ist wohl Keil MDK/C51 immer
#7804277: > Ich hab den Compiler eigentlich in guter Erinnerung. Hab vor vielen > Jahren mal mit einer 32k Version gearbeitet. Das Ergebnis war durchaus > vergleichbar mit dem c51. Ich werde ihn mir dieses Jahr mal ansehen. Aber beim STM8 war mein Eindruck, das Optimierung auf Codegröße das einzige ist
-
Thread
ModBus-TCP adapter
liebsten wäre mir ein einfacher Adapter, der einen RJ-45 Port hätte, den ich dann seriell oder anders (i2c, spi, was auch immer) ansprechen könnte. Die andere Möglichkeit wäre natürlich einen STM32F4 zu verwenden, der ein Ethernet-Interface hätte. Dann müsste ich aber für die ZigBee-Implementierung eine Lösung
=eb:g:vms:eb:p:165678753308;&gQT=2 Ich hab auch ne Frage, was für ein STM32WB Board willst du verwenden?
-
Thread
PCB für DP83848, Entwurf
Gnade walten :D. Jedenfalls möchte ich für ein Projekt gerne ein PCB bzw eine Schaltung mit nem STM32F407 und nem DP83848i entwerfen. Habe alles soweit schonmal mit Breakoutboards von Waveshare und ST getestet. Ist natürlich keine sonderlich kompakte und schöne Lösung. Also würde ich mir gerne selber
Warum nicht ersteinmal ein Aufsteckboard auf ein STM32 Nucleo mit ETH? Und hinter der Ferritperle direkt am AVDD Pin wuerde ich auch (einen) Entkoppelkondesator(en) empfehlen.
-
Thread
Sammelbestellung AR488 kompatibler USB-GPIB Adapter. Interesse?
0x0002 bcdDevice = 0x0100 iManufacturer = 0x0001 <Espressif Systems> iProduct = 0x0002 <ESP32S2_DEV> iSerialNumber = 0x0003 <0> ^ [/pre]
load:0x4004a004,len:0xa04 load:0x4004e000,len:0x3540 entry 0x4004a15c Hat jemand eine Idee? Ich habe nichts am geclonten Repo verändert.
-
Thread
Assembler-Verständnisproblem beim attiny13a
der Assemblerdatei anschaut. Beim STM32 empfehle ich niemandem, irgendetwas in Assembler zu schreiben – wenn man es doch macht, was ja nicht verboten ist, wird man schon sehen (manchmal sehr selten sehen :), was man da angerichtet hat.
ab Seite 76-79 able 11-8. Waveform Generation Mode Bit Description 0 0 0 0 Normal 0xFF Immediate MAX 1 0 0 1 PWM (Phase Correct) 0xFF TOP BOTTOM 2 0 1 0 CTC OCRA Immediate MAX 3 0 1 1 Fast PWM 0xFF TOP MAX 4 1 0 0 Reserved – – – 5 1 0 1 PWM (Phase Correct
-
Thread
[V] Transistoren, ICs analog/digital, Opto,.
-> 0,10€/Stk. Halbleiter uC, Speicher: 1700x F280048PMQR, TI: C2000 32-bit MCU, 100MHz -> 0,50€/Stk. 18x ESP32-C3-MINI-1-N4, Espressif: ESP32, 4MB Flash -> 1,00€/Stk. 124x M29W320EB
, TI: C2000 32-bit MCU, 100MHz -> 0,50€/Stk. 15x ESP32-C3-MINI-1-N4, Espressif: ESP32, 4MB Flash -> 1,00€/Stk. 124x M29W320EB-70N6, ST: 32MBit Parallel Flash -> 0,25€/Stk. 5x
-
Thread
[V] Evalboards, passive Bauteile, Netzteile, Relais,.
, 25ppm -> 0,05€/Stk. 200x ECS-200-8-30Q-VY, ECS: 20MHz, 8pF, 20ppm -> 0,05€/Stk. 30x MC-306 32.7680K-E5, Epson: 32.768KHz 12.5pF, 20ppm -> 0,05€/Stk. 100x ABM7-12.000MHZ-D2Y-T, Abracon: 32.768KHz
-> 2,00€ 2x HTCC-AB01, Heltec: SX1262 LoRa Modul (gebraucht) -> 4,00€/Stk. 1x STM32F4 Discovery, STM: Evalboard STM32F407 -> 5,00€ 1x STM32W RF Control Kit: Evalboard Wireless 2,4GHz -> 5,00€ 1x GD-xD-W515-EVAL, GigaDevice: Evalboard GD32W515 -> 10,00€
-
Thread
Drehencoder in ASM Timer oder Interrupt
Signalfrequenzen) ausgewertet werden sollen, würde ich die Auswertung nicht in Software machen, sondern einen µC nehmen, der bereits entsprechend ausgestattete Timer/Counter mitbringt. Mittlerweile ist das kein allzu exotisches Feature mehr. Einige ATxmega, die meisten (oder alle?) STM32 und sogar der chinesische
(n) dann ja schon nach ca. 0,5-2 Stunden Kurbeln, erneuern... Carsten-Peter C. schrieb im Beitrag #7819885: > Wenn ein Kontakt noch > flattert und der jeweils andere schon schaltet, wird es schwierig. Du hast da drei Kontakte
-
Thread
Idee gesucht. Funk Led Sparsam
Distanz, Linkbudget? Die STM32WL33 haben ein "RF Wakeup", und können mit einem starken Funksignal (-50 dBm) aus einem sparsamen Sleep-Modus (4 uA) geweckt werden. Und sie sind allgemein sehr stromsparend. Modern wären die auch
bei einem Sende-Intervall von 18 Sekunden, und (angenommener) Sendedauer pro Paket pro Empfänger von 0.1 Sekunden ergeben sich 180 Geräte, welche adressiert werden können. Vermutlich ausreichend.
-
Thread
Welcher Controller für Unterrichtszwecke?
wie ich finde. Sofern mit sachkundiger Anleitung gelehrt wird, wäre mein Vorschlag, mit einem µC auf M0/M3/M4 Basis zu beginnen. Es gibt diverse Hersteller und Typen, selber würde ich namentlich STM32G0xx oder STM32G4xx empfehlen. Mein Hauptpunkt dabei ist die SWD-Schnittstelle, die den Controller
frei und unbeschränkt erhältlich, C und C++ fähig (Das IDE ist Ecclipse und der Debugger ist dem des STM32 sehr ähnlich) Peripherie Komplexität nicht so extrem wie bei STM32 und leichter verständlich für Einsteiger. Dokumentation ist
-
Thread
Raspberry Pi Pico 2-Alternativen, mehr PIOlib und Abschied vom RK3588
: [c] • Supports wireless link, supports Wifi 802.11a/b/g/n, 4GHz or5GHz dual-band, supports low-power Bluetooth and Bluetooth 5.0, and can be developed and deployed in more IoT scenarios; [/c]
# Blues Cygnet - kostenreduzierter Basisprozessor auf Basis des STM32L433 Das als Anbieter einer Funk-HAL agierende amerikanische Unternehmen Blues bietet seit Jahr und Tag eine modulare Entwicklungsplattform an, die neben den im NoteCard-Format vorliegenden eigentlichen
-
Thread
AVR128DA64 TCA1 funktioniert nicht mit alternativen Output?
der Zukunft müsste ich da auf jeden > Fall was ändern. Man könnte natürlich auch gleich z.B. zu STM32 greifen, sofern man nicht auf 5V als VCC angewiesen ist, denn der Lötaufwand bei LQFP64 mit 0,5mm Raster ist dann quasi gleich – selbst ein STM32F030RC müsste dem Anwender mehr als ein AVR128 bieten
Initial-Revision A4, es ist aber insgesamt immer noch relativ wenig im Vergleich zu den Erratas bei STM32.
-
Thread
Strommessung bei High-Speed Motor
keine spezifische Anwendung. Die Steuerung haben wir in der Firma entwickelt, basierend auf TI und STM32 uC. Bisher wurden diese aber nur selten für High-Speed eingesetzt und auch nur mit Induktivitäten in den Phasen. Der Motor aus der Messung ist folgender (24V, 60krpm Variante): https://www.maxongroup.de
Erfolge. Stelle sicher wieder auf 50kHz zurück. Müssten bei 75kHz nur 1333 Schritte sein (Auf dem C2000 F280025, auf dem STM32F7 weiß ich gerade nicht). Alex E. schrieb im Beitrag #7796655: > 2. Warum Faktor 3 und nicht 2 wie es alle anderen machen. Werde da sicher wieder mit Faktor 2 experimentieren
-
Thread
Feedback zu meiner Schaltung
: Header gegen TAG-Connect ausgetauscht. Gefällt mir sehr, danke für diesen tollen Tipp ! (der uC wird über ISP programmiert, dafür muss C10=0 Ohm sein, es besteht aber falls nötig die Möglichkeit mittels bootloader UART1 mitzubenutzen, dann wird C10 =100 nF ) - Hinzugefügt: 4 MHz Quarz mit jeweils
ich derzeit nicht, habe aber noch Vorschläge: Jules schrieb im Beitrag #7800171: > dafür muss C10=0 Ohm sein, es besteht aber > falls nötig die Möglichkeit mittels bootloader UART1 mitzubenutzen, dann > wird C10 =100 nF ) C10 mit 100nF bestücken und einen Lötjumper dazu parallel. Bei ausreichend
-
Thread
STM32f030F4 eigene PCB
den Chips machen, befor ich darauf zugreifen kann? Aktuell habe ich folgendes bestückt: * R3: 0 Ohm (Anders als im Schaltplan) * C4: 100 nF * R6: 0 Ohm * R5: 10 kOhm * C1: 100 nF * Quarz mit C's ist nicht bestückt. Die Chips habe ich neu bei Reichelt gekauft. Die sind also nicht mit ergendwas
Ich vermisse den Pulldown an Boot0, ansonsten empfielt sich ein Blick in https://www.st.com/resource/en/application_note/dm00089834-getting-started-with-stm32f030xx-and-stm32f070xx-series-hardware-development-stmicroelectronics.pdf
-
Thread
Neuer Jetson, ESP32-P4-Entwicklerplatinen, Satelliten-Arduino uvam
mitbringt: [c] • New tools and versions: The latest STM32Cube tools include STM32CubeMX configuration tool v6.13.0 and STM32CubeIDE v1.17.0. Additionally, there are new versions for eight existing STM32Cube MCU
have been released for STM32U0, STM32U5, STM32WB0, STM32WB, STM32WBA, STM32H5, and STM32H7 series. • Maintenance updates: Applied to STM32F1, STM32F2, STM32L4, and STM32G4 packages. [/c] An „detaillierten Changelogs
-
Thread
STM32U575 und ILI9341 SPI DMA Problem
vermutlich geswappte Bits oder ähnliches. Ich kenne mich leider in der neuen GPDMA1 Konfiguration des STM32U575 nicht so gut aus.. Ich weiß nur, das der Code ohne DMA funktioniert, mit DMA sind die Color falsch, scheinbar wird hier nochmal was "gedreht" Hier mal die ganzen Funktionen: main.c: [
LCD_IRQ_GPIO_Port, LCD_IRQ_Pin, itsNONE, itnNormalized); ili9341_fill_screen(_lcd, ILI9341_RED); [/c] Funktionen: [c] void ili9341_fill_screen(ili9341_t *lcd, ili9341_color_t color) { ili9341_fill_rect(lcd, color, 0, 0, lcd->screen_size.width, lcd->screen_size.height); } void ili9341
-
Thread
Visual Studio Code > undefined reference
phony || mbed-os/mbed-linker-script build mbed-os/CMakeFiles/mbed-os.dir/__/custom_targets/TARGET_STM32H7/TARGET_FK743M5_XIH6/PeripheralPins.c.obj: C_COMPILER__mbed-os_unscanned_debug /home/jojo/projects/mbed/mbed-ce-H7/custom_targets/TARGET_STM32H7/TARGET_FK743M5_XIH6/PeripheralPins.c || cmake_object_order_depends_target_mbed-os
_CORTEX_M7 -D__FPU_PRESENT=1 DEP_FILE = mbed-os/CMakeFiles/mbed-os.dir/__/custom_targets/TARGET_STM32H7/TARGET_FK743M5_XIH6/PeripheralPins.c.obj.d FLAGS = -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wno-psabi -fmessage-length=0 -fno-exceptions -ffunction-sections -fdata-sections
-
Thread
USART Kommunikation zwischen ATMega32 und ATMega328p
B. schrieb im Beitrag #7794984: > Ich hatte mal den Fehler das Kommandos mit hyperterm an einen µC > funktionierten aber aus einem C-Programm ging es nicht. Der Fehler war: > der µC hat die UART gepollt und war bei einem gesendeten String zu > langsam. Er sollte mal den ATmega32 über UART mit
kein Fehler vom String der gesendet wird. Im Code selber ganz am Anfang bei dieser Code Zeile: [c] UCSRC = (1 << UCSZ1) | (1 << UCSZ0); [/c] hat ein weiter Bit gefehlt. Dieser hier [c] UCSRC = (1 << UCSZ1) | (1 << UCSZ0)| (1 << URSEL); [/c] Nach dem hat alles funktioniert. Ich bedanke