-
Thread
-
Thread
Auf einen UNO mehrere I2C Adressen laufen lassen
#6903157: > Der Uno liest drei eigene Sensoren aus (SPI oder ähnliches) und schickt > sie als I2C-Slave an den Master, wenn der ihn abfragt. Warum diese vermischte Funktionsbeschreibung. Bei I2C ist der Master der Herrscher über die Datenübertragung und legt mit seinem Clock fest, wann ein Bit über den Bus geht. Der Slave schickt gar nichts, sondern der Master holt die Daten Bit für Bit ab. Zum Abfragen und Daten schicken/senden bräuchte man halbwegs eigenständige Transceiver.
-
Thread
maximale Datenrate bei Porterweiterung mit ADP5589
ADP5589, einen universellen Baustein, den ich aber noch nicht kenne. Laut Datenblatt ist der mit I2C und 1Mbps zu betreiben. Wenn ich meine alten I2C-Kenntnisse ausgrabe, braucht man rund 10Bit je Wort und wenigstens 3 Worte fürs einzelne Lesen eines Werts (Adresse setzen 2 und dann Lesen) ... ...
Im Übrigen rechnet man auch in den Termen von I2C immer mit ganzzahligen Viefachen von 8 Bit. Du kannst zwar sparsam sein, dir eine Soft-I2C-Implementierung selbst bauen und nur 10 Bit statt 16 übertragen aber das wird dir nichts helfen.
-
Thread
PIC16F1825 - I2C Acknowledge Problem?
; letztes Bit 1 = read Data call i2c_tx ; sende I2C-Adresse call i2c_rx ; lesen Speicherzelle nach W ; call i2c_ack call i2c_off ; Bus stop
= 0; // Clear the flag bit return ACKSTAT; // Return ACK/NACK from slave } [/c] Dann bekommst du Du das ACK Bit als Ergebnis zurück. /regards
-
Thread
GPIO schalten
nicht... wie gesagt ist "in" dem Pin bzw. "zwischen" Pin und CPU der SPI controller. Es gibt zwar µC die Multiplexer von jeder Hardwareeinheit zu jedem Externen Pin haben, die sind jedoch rar (z.B. PSoC von Infineon früher Cypress Semiconductor).
Programm um den Chip Select kümmerst, geht das. Dann kannst du auch 200 Chip Selects mit IO-Expandern (I2C oder Schieberegister) implementieren und dann im Code durch die einzelnen "Chips selecten". Der Linux-Kerneltreiber für SPI hat allerdings die 2 bzw. 3 CS-Signale fest verbaut. Für bestimmte Funktionen
-
Thread
TWI/I2C am ATtiny417
//TWI0_SADDRMASK = 0xff; TWI0_SCTRLA = 0x71; TWI0_SCTRLB = 0x7; [/code] Abfrage um festzustellen ob Adresse stimmt [code] if(twi_test_ap() | twi_test_apif()) { REG->wr_bits.led_vtr1 = ~REG->wr_bits.led_vtr1; twi_ackact(); state = (TWI0_SDATA
Hallo, default für I2C ist Pin PB0 und PB1. Mit Portmux liegt I2C auf PA0 und PA1. Das heißt wenn du im PORTMUX.CTRLB das "TWI0" Bit setzt, dann ist I2C auf PA0, PA1 aktiv. Was du aber nicht machen darfst, wenn du auf Port.A
-
Thread
ADXL345 Device ID auslesen
den falschen SPI-Mode verwendest... Was heißt falscher SPI-Mode, ich sehe nur ein Byte um SPI / I2C zu verwenden. Lothar M. schrieb im Beitrag #6886188: > Also: SS#=low, 8 Bit Kommando senden, 8 Bit Dummy senden, SS#=high Okay, jetzt ist wechselt mein SCLK Signal schonmal 16 mal und 16 Bit werden
muss: mit jedem einzelnen gesendeten Bit schickt dir der Slave eines zurück. Er kann gar nicht anders, weil das in Master und im Slave ja einfach nur hintereinander geschaltete Schieberegister sind, die immmer mit jedem SCLK-Takt
-
Thread
Temperaturwächter mit NTC oder PT1000
(destil.) Wasser, eingepackt in ein trockenes Handtuch und Temperatur (Referenzthermometer) auf 15°C eingestellt. NTC rein. In einen speziellen Programmzusatz (z.B. durch Abfrage eines Testeingangs beim Booten) verzweigen und dort den Messwert als "Referenzwert" übernehmen.
mir DS1820 ein. Nur mal als Hausnummer: https://www.reichelt.de/digital-thermometer-1-wire--0-5-c-to-92-ds-18s20-p7207.html?&trstct=pos_0&nbc=1 Das wäre jenseits meiner Geizschwelle. Da nur ein einzelner Schwellwert erfasst werden soll, wäre auch eine Messbrücke mit nachfolgendem Komparator eine
-
Thread
Passwort Klartext oder Hash
Zuerst also PW A, dann B, dann wieder A, dann wieder B usw. Will man das verhindern, so dass es zu C kommt, muss der Server somit A im Klartext verschlüsselt durch B speichern. Ist dann das PW auf C geändert, wird A und B im Klartext bzw. verschlüsselt durch C gespeichert und das aktuellste liegt dann
G mit den Teilstrings aus { A, B, C, D, E, F } Ist das getan und alles korrekt, so dass G gesetzt werden kann. Dann werden { A, B, C, D, E, F } mit G verschlüsselt und G gehashed. Dann kommen auf den Server dann die Daten und liegen
-
Thread
AT90USB162 Endpoint Interrupts funktionieren nicht
Naja, wie geschrieben, bei USB kommt noch dazu, dass du 16-Bit-Strings brauchst. Die normalen C-Strings sind halt erstmal 8 Bit pro Zeichen.
clr z.B. ersetzen). Wenn ich weis das alles Funktioniert wollte ich noch sowas wie btm (kurz für "bit mask") machen, wo ich dann z.B: schreiben kann [c]btm(PLLCSR, PLL0, 0, 1, 0);[/c] Also quasi erst der Register, dann das Erste Bit und dann die Bits die von da aus gesetzt werden sollen. Oder irgend
-
Thread
Sende/Empfangsvorgang mittels nur 1St. µC
while(1) { // Anmerk.: for(;;) gefällt mir nicht so aufgabe_taste(); // Taste abfragen, ev. Befehl and B schicken aufgabe_daten_empfangen(); // Daten empfangen und ev. anzeigen aufgabe_daten_anzeigen(); // alternativ } } void aufgabe_taste(void) if !((P2IFG&BIT0
__delay_cycles(900); } } [/c]
-
Thread
C: Kann man mittels #define einen Wert zurück geben?
: [c] p_myarray = static unsigned myArray[256]; myFoo(myArray, 256) [/c] Wenn DU etwas zurück haben willst, brauchst Du schon eine Funktion.
Nachdem der gcc ja auch C++ kann, wäre es zumindest eine Überlegung > wert? In C++ gibt es dafür std::array
-
Thread
Gesucht: Bus-System um mehrere uC zu vernetzen
keinen LAN Anschluss, weil der uC STM32F4xx nicht genug Ressourcen hat. SPI, I2C, LIN, ModBus, und weitere, auch ältere Bussysteme sind mir bekannt, aber ich müsste einen recht umfangreichen Protokollstack schreiben, damit man die
Andreas I. schrieb im Beitrag #6860021: > mehrere uC Boards von ST Andreas I. schrieb im Beitrag #6861790: > Als eindeutige Identifikation > (UID) möchte ich die Seriennummer des uC nehmen. Die hat aber 96 Bit, ein wenig sperrig für z.B. 24 Bit
-
Thread
Einschaltautomatik Esp8266
Kanal-Wandler bedeutet, dass du 18 Analogsignale daran anschließen kannst. Aber es ist zum Glück nur ein 18-Bit-Wnalder, von dem du mit deinem aufbau gleich mal 7-8 Bit vergessen kanst. > jedoch bin ich beim Versuch mit dem ESP8266 das Analoge Signal vom ACS758 > abzufragen und *gleichzeitig* die WLAN Kommunikation
> val) *pmin = val; } //----------------------------------------------------------------- [/c]
-
Thread
Ich will auf Linux umsteigen. Hilfe!
will be installed: gnucash gnucash-common gnucash-docs guile-2.2 javascript-common libalgorithm-c3-perl libaqbanking-data libaqbanking44 libboost-regex1.71.0 libbytes-random-secure-perl libclass-c3-perl libclass-c3-xs-perl libclass-data-inheritable-perl libclass-inspector-perl libclass-singleton-perl
> Diesen Ansatz hat RHEL ausprobiert. Er ist gescheitert. Das ging > erstaunlich lange gut. Bis C++ angefangen hat, Fahrt aufzunehmen. Da gab's auch noch keine Flatpaks. Und Microsoft Windows hat das immer gut funktioniert, den Microsoft kümmert sich darum, dass selbst die älteste 32 Bit Win
-
Thread
RGB Tastenfeld in 5x4 Sonderform
key_event.key_number)] = (224, 224, 224) Starte_prg_von_taste_5 end if Du musst diesen BASIC - Code jetzt in C umwandeln. Hier die Erklärung für IF-THEN abfragen unter C https://www.delftstack.com/de/howto/arduino/arduino-if-statement/ Und hier hast du eine Erklärung wie man gewisse Sachen in Arduino-C
gleich gibt (deshalb das abtippen). Ich persönlich mache 0-9 und dann mit Buchstaben weiter. In der Abfrage schreibe ich im Kommentar dann dahinter was ich damit will. z.b. keypadEvent e = customKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == "E") { ' funkt Taste e
-
Thread
Differenzverstärker INA105
ich meine fast, die Aufgabe bekommt man sogar nur mit Spannungsteilern hin, wenn man statt des 10-Bit-MCP einen 12-Bit-Wandler nimmt...
fertige Chips, da verbindest du deine 15 Zellen einfach dran, und kannst dann bequem über SPI oder I²C alle Einzelspannungen abfragen. Ja, kosten ein paar €, und nein, fertige Arduino-Breakout-Boards bei Aliexpress findest du eher nicht. Beispielhaft mal das Datenblatt für den LTC6812-1 angehängt
-
Thread
mehrere Millis()
. Das wird in der Tastenentprellung benutzt, um die vier Tasten als einzelne Bits in einem Byte zu speichern und zu verarbeiten. Da ist sogar noch Platz für 4 weitere Bits bzw. Tasten. Hast du mein Beispiel mal real ausprobiert? Wie läuft es?
nur eine Bastelei. Das ist deine Beurteilung! Ein Abbild deiner Fantasieren. Ich sage: Ein 32Bit Zähler ist billig. Das verwalten einer Time/Date Struktur ist viel aufwändiger. Also, wenn das billige reicht, dann nehmen wir es doch. ---------- Außerdem redest du schon wieder über C++
-
Thread
Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?
empfangenen Rohdatenstreams wird aus: [pre]01-6C-4A-B9-88-23-0C-B9-88-23-0C-80-80-00-80-AC-00-AE-02-55-00-AB-00-AA-82-46-00-00-5A-17[/pre] Beim Schieben des ganzen Streams um ein Bit nach links diese Bytefolge: [pre]02-D8-95-*73-10-46-19-73-10-46
1 zugeordnet, obwohl sie zu Pipe 0 gehören. Hier ein Beispiel, gehört eigentlich zu Pipe 0, die Abfrage [c]radio2.available(&pipe)[/c]liefert aber Pipe 1, darum wird das Telegramm C3 zugeordnet und anschließend wegen falscher Prüfsumme (Die Berechnung legt die Adresse WR2 zugrunde) verworfen. In den
-
Thread
Datumspalten in CSV umrechnen
Jetzt geht es c-hater gleich wieder viel besser🤣
c-hater schrieb im Beitrag #6842775: > Wichser! Angenehm, das sagtest du schon. ;-)
-
Thread
lcd switch case Eintrage aktualisieren
#6839950: > Falls ihr den ganzen braucht, hänge ich noch zip-Sketch an. Tu das mal, aber häng lieber einzelne ino Dateien an, dann kann man den Code auch mit dem Handy anschauen.
da nur mit Kopf schütteln. Es wurden nur Begriffe wie ISR und Interrupt in den Raum gewurfen. Ein µC hat jedoch viele Interrupts und viele ISRs. Dann kamst du noch mit Timer um die Ecke. Wer soll daraus schlau werden ...
-
Thread
Benötige Hilfe beim Schltplan
: > Bauteile die per Kabel angeschlossen werden sollen: > - Analog zu Digital Wandler ADS1115 16-Bit ADC > - Optional: 0,96" OLED SSD1306 Display beide Positionen laufen an I2C, du hast sogar die Wahl ob mit 3V3 oder 5V
das müssen Pull-Up Widerstände sein. Ist dir bekannt, dass du beim ESP8266 beliebige Pins für I²C benutzen kannst, weil das eh in Software (Bit-Banging) implementiert wurde? Wenn du allerdings für SCK einen der "flackernden" Pins verwendest, könnte das unangenehme Seiteneffekte an den angeschlossenen
-
Thread
Interrupt verhalten bei STM32F103
definiert sind. Strg-Mausklick auf TIM4 sollte sie öffnen. In der Datei suchst du dann nach "CC1OF". [c] /******************** Bit definition for TIM_SR register *******************/ ... #define TIM_SR_CC1OF_Pos (9U) #define TIM_SR_CC1OF_Msk (0x1U << TIM_SR_CC1OF_Pos) [/c] Folglich muss deine Code-Zeile so lauten: [c] TIM4->SR &= ~(1<<TIM_SR_CC1OF_Pos); [/c] oder: [c] TIM4->SR &= ~TIM_SR_CC1OF_Msk; [/c] oder: [c] CLEAR_BIT(TIM4->SR, TIM_SR_CC1OF_Msk) [/c
-
Thread
Drehgeber an Arduino, external interrupt ISR wird doppelt ausgeführt
c-hater schrieb im Beitrag #6812128: > Du musstest nun schon zugeben, dass es (also interruptbasierte Abfrage > von Quadraturencodern) prinzipiell funktioniert Falsch. c-hater schrieb im Beitrag
c-hater schrieb im Beitrag #6812128: > Du musstest nun schon zugeben, dass es (also interruptbasierte Abfrage > von Quadraturencodern) prinzipiell funktioniert Falsch. c-hater schrieb im Beitrag
-
Thread
MAX7313 Input Auswertung
Ganz einfach, so wie es gedacht ist. Du musst die einzelnen Bits auswerten. Das geht mit Bitmasken oder Bitfields.
if(Input.in3){ // tu etwas wenn Taste 3 } if(Input.in4){ // tu etwas wenn Taste 4 } .... [/c] Wenn die Bits invertiert sind also eine 0 da steht wenn der Taster gedrückt ist dann musst du die Abfragen eben invertieren also sowas wie: [c] if(!Input.in1){ // tu etwas wenn Taste 1 }
-
Thread
TOISWITCH - IoT I/O-Server für ESP8266
hacker-tobi schrieb im Beitrag #6805321: > mit dem Arduino-C-Dialekt kann ich mich nicht anfreunden Du meinst C++? Ist aber heutzutage doch praktisch Standard.
-Überarbeitetes HTML-Interface. Bilder reiche ich noch nach. -PWM arbeitet jetzt intern mit 10 Bit @ 1 kHz, extern mit 8 Bit -Farben sind Gamma-korrigiert -Bugfixes
-
Thread
ILI9486 8-Bit Parallel Bus deutlich langsamer als SPI
ein paar Zyklen. Leicht gekürzte Version: [c] void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) { if (BitVal != Bit_RESET) { GPIOx->BSRR = GPIO_Pin; } else { GPIOx->BRR = GPIO_Pin; } } [/c]
BitVal) [/c]
-
Thread
Ausschalten von LED nach dreimaligem Taster drücken
PORTB &= ~(1<<PB0); Führe eine Variable ein, die den Status der LED widerspiegelt, ändere die abfrage auf 3 durch eine Modulo-Divisions-Abfrage auf 0 und toggle dann die LED anhand deren Status. Nebenbei: Willst du einen Triple-Klick erkennen, oder nur die Anzahl der Klicks zählen und dann reagieren
bis 3 zählen und gut. Klappt schon im Kindergarten... Achtung Spoiler : . . . . [c] if(var == 3) { PORTB ^= (1<<PB0); var = 0; } [/c]
-
Thread
Geländefahrzeugsteuerung mit Arduino - Codingproblem
habe ich mir einen Code (ab-)geschrieben, mit dem ich die Motoren zeitgesteuert gleichzeitig und einzeln sowie in beide Richtungen laufen lassen kann. Beide Codes funktionieren einzeln einwandfrei und zusammengesetzt schauen sie so aus: [c] //Variablen //RC-bezogen //Channel 1: linker Joystick
Abweichung von 1/8 oder 1/16, also 12,5% oder 6,75%. Kleinere Abweichungen kann er nicht, da kann die C-Software ruhig mit 128bit Genauigkeit rechnen, das BaudrateRegister kennt kein FloatingPoint. Mit freundlichen Grüßen Klaus
-
Thread
"Gruppierung" von Pins
ist, deshalb habe ich es erwähnt. Der TO belegt eine Menge Pins. Und die muss er auch noch alle einzeln ansteuern. Wenn er eine Port-Erweiterung wie den besagten PCF-8574 nutzt, kann er das BIT-Array mit 1 Befehl via Libs / I2C an den Chip senden. Das spart Code ohne Ende. Und Speicher ist Knapp in
Schlaumaier schrieb im Beitrag #6779712: > Der TO belegt eine Menge Pins. Und die muss er auch noch alle einzeln > ansteuern. Wenn er eine Port-Erweiterung wie den besagten PCF-8574 > nutzt, kann er das BIT-Array mit 1 Befehl via Libs / I2C an den Chip > senden. Das spart Code ohne Ende. Und Speicher
-
Thread
Kurzschreibweise
nur eine überflüssige Fehlerquelle ohne Nutzen. Die Abfrage sagt glasklar aus das du nur auf die Gültigkeit des 3. Bits abfragst. [c] if (PIND & (1<<3)) [/c] Die Alternative wäre [c] if (PIND & 0b00001000) [/c] Was dir aber wohl niemand so richtig
hinten fehlte beim Muster eine 0. Das hätte man erkennen können. Hier noch mal korrigiert: [c]if (PIND & 0b00110000 == 0b0001000*0*)[/c] Maske und Muster sind allgemein nicht gleich. Sie sind nur gleich, wenn man ein einzelnes Bit auf Eins abfragt. Zur Maske 0b00*11*0000 gäbe es die vier abzufragenden
-
Thread
Stromverteiler mit Überwachung
https://www.amazon.de/Waveshare-Industrial-USB-RS485-Transceiving/dp/B081NBCJRS/ref=sr_1_4?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=rs485+usb&qid=1627654648&sr=8-4 Achte darauf, dass Du drei Klemmen (A, B, GND) hast. Nicht die Teile mit nur zwei Klemmen (A und B) kaufen, das gibt
Beschaltung solltest du bedenken das da sowohl positive als auch negative Spannungen raus kommen und die 10 Bit des ADC sind nicht gerade der Brüller.
-
Thread
Zustandsmaschine: Namensschemata
Peter D. schrieb im Beitrag #6771745: > Hier mal ein Beispiel mit Hochzählen (onwire.c): > Beitrag "DS18B20 mit Interrupt, AVR-GCC" Ernsthaft? [c] case OW_WR_DONE: // 1. command byte finished pbuf++; onwi.state = OW_WR_BIT0; case OW_WR_BIT0
die sich eher auf einer Metaebene abspielen. Für den speziellen Fall SM auf Mikrocontroller in C könnte man sich z.B. mit Protothreads eine Menge Freiheit bei der Umsetzung der einzelnen Zustände einkaufen. Protothreads muss man immer mit der Kneifzange anfassen weil die Dinger schnell unübersichtlich
-
Thread
Frequenzzähler mit PIC 16F628A
Config-Bits des µC richtig gesetzt?
bis zu 50 MHz zählen, da kann nichts synchronisiert sein. Zu LCD-Daten auf GND - Wenn ich im 4-Bit-Modus bin und das Busyflag abfrage, werden dann die vier unbenutzten Datenbits auch auf Ausgang umgeschaltet? Und welchen Pegel nehmen die dann an? Er hat hier keine Busy-Abfrage benutzt, die Datenbits
-
Thread
Geräte reparieren
Kühlschrank müffelt, hilft saubermachen. Wer nicht weiß wie das geht: https://www.frag-mutti.de/search/?q=k%C3%BChlschrank+m%C3%BCffelt Michael schrieb im Beitrag #6769634: > Ich finde das irgendwie unanständig, sich so mediale Aufmerksamkeit zu > verschaffen, wenn man das, was man sagt, gar nicht mit heutiger
und WaMa haben noch mechanische Schalter zur Programmwahl, die aber lediglich dem Elektronikboard/µC mitteilen, was dort als Hauptprogramm ausgewählt wurde, für weitere Parameter wie Schleuderdrehzahl, Ecomode und ein paar mehr wird dem µC über Taster mitgeteilt und mir per LED bestädigt. Kein Megaunterschied
-
Thread
ARM-GCC: No strict alias
with gcc -fwrapv to get a more meaningful result: // x86_64-w64-mingw32-gcc.exe -fwrapv -O1 -Wall -c bug2.c // int f(int i) { return i+1 > i; } [/c] Abfrage auf Überlauf: [c] void foo(int a, int b) { if (a <= 0 || b <= 0) return; // only deal with positive numbers if (
Wissen, ob ein Überlauf stattgefunden hat. Und diese builtin-Funktion ist das beste Mittel, unter C an das Carry-Bit zu gelangen.
-
Thread
genaue Zeitmessung (hohe Auflösung + Genauigkeit) STM32
Eingang starten und stoppen lässt), sich mit einem hochgenauen Oszillator ansteuern lässt und per SPI,I2C oder UART abfragen lässt? Ich habe schon einen TDC7200 ins Auge gefasst, aber dieser kann maximal 14mS messen (mit 2Mhz Quarz) und langsamer kann ich den nicht sinnvoll machen. Wie gesagt ich habe
erspart man sich für den Anfang das Layout und auch die derzeit völlig überzogenen Kosten für den einzelnen Controller. TIM2 und TIM5 sind 32 Bit breit und haben jeweils vier Capture-Eingänge. Das sollte für viele Spielereien reichen. https://www.digikey.de/product-detail/de/stmicroelectronics/NUCLEO-H743ZI2
-
Thread
Atmega 8; EEPROM bei Reset korrumpiert; alle 0 werden zu 255
Variable mit einem Wert, damit man genau weiß, wie groß die Zahl zum Beginn der Funktion/Schleife/Abfrage/etc ist. Und i wird auch nie den Wert 256 haben können - es ist nur eine 8 Bit große Zahl.
Das hier: [c]uint8_t *eeprom_adr = 0; // eeprom_adr++; if (eeprom_adr>(uint8_t*)255)[/c] ist auch Unsinn.
-
Thread
Rs485 Kollisionserkennung und Kollisionsvermeidung
Das geht rein mathematisch nicht. Unabhängig von Baudrate oder > Störungen, zumindest nicht bei 8-Bit-Daten. Ich komme auf 1% Abweichung bei 9600 vs 9500. plus ggf ungenauem Takt durch R/C- oder Keramik-Oszillator. Wo sieht deine Mathematik das Problem?
> > Sorry. Zuviel zitiert. Ich bezog mich auf die 5%. Das kommt auf den UART drauf an, bei 8 Bit Nutzdaten und 16-fach Oversampling sollte es sich aber knapp ausgehen. 8 Bit Daten + 1 Start- + 1 Stop-Bit ergibt 10 Bit-Zeiten. Bei 16-fach Oversampling wäre das Stop-Bit bei Takt 144 bis Takt 160
-
Thread
Was ist bzw. war Atmel QTouch?
ausgereizt ist, da ist noch viel reserve zur Empfindlichkeitserhöhung. QT-cycle.png: zyklische Abfrage alle 20 ms QT-pulse_chain.png: eine komplette Abfrage, man sieht eine Kette von 16 Impulsen QT-detail.png: einzelne Abfrage (Touch-Button berührt), offenbar wird die Touch-Elektrode erst auf Vcc
alles in der TinyTouchlib implementiert: https://github.com/cpldcpu/TinyTouchLib/blob/7eb7866e6f166f9c9668dcffd517c061258f035c/TinyTouchLib.c#L79
-
Thread
Arduino: abwechselnde Verwendung von A4/A5 als analoger Input und I2C
über den Interruptpin erkennen, ob überhaupt eine Taste gedrückt ist und mußt nicht ständig den I2C-Bus abfragen. Erst für >2 Tasten gleichzeitig braucht man noch eine Diode je Taster.
Einzelne kurze Tastendrücke machen keine Probleme. Längere Dauerkontakte kollidieren dann mit dem I2C-Signal und bringen manchmal den Nano zu Absturz oder die I2C-Verarbeitung wird dadurch natürlich gestört
-
Thread
Parallele Reedkontakte mit Toggle
c-hater schrieb im Beitrag #6745041: > Du mußt also eine Schaltung finden, die das separiert. Man kann das > durch Differenzierglieder (AKA: Kondensatoren) erledigen, für jeden > einzelnen Kontakt
macht ein Port-Expander an Pin INT genau das, was ich für den Reset des ESP brauche. Die Status der einzelnen Eingänge könnte ich dann über I2C einlesen, richtig? Danke für den Hinweis @c-hater https://www.mikrocontroller.net/articles/Port-Expander_PCF8574 Pin7 wäre dann ein Beispiel für die Beschaltung
-
Thread
CanOpen Hack
nocheinmal, bitte entschuldige, ich habe PDO und SDO verwechselt(wieder mal). Mit SDOs kannst Du einzelne Werte abfragen, PDOs sind "häufige" Nachrichten die Hersteller-spezifisches Format haben. Was die einzelnen Bits in einem PDO bedeuten kann also nur der Hersteller oder Reverse-Engineering an den
Christopher B. schrieb im Beitrag #6749238: > Der PDO ist abgeschaltet. Lösch mal das 63.bit > [663][8][22 00 18 01 E3 01 00 40] du hast das Objekt gelesen RainerZufall24 schrieb im Beitrag #6749317: > ID 663 -> 43 00 18 01 E3 01 00 40 > AW:ID 5E3 -> 43 00 18 01 E3 01 00 C0
-
Thread
welche Datentypen soll ich nehmen?
sie dann letztendlich auf µC, meist Arduino artige, von 8 Bit bis 64 Bit. Dabei ist dann schon so manche unerwartete Hürde aufgetreten.
bevorzugt die "Datengröße" des µC, uint8_t bei 8bit, uint16_t bei 16bit etc. Datentype ansolsten so groß wie nötig, so klein wie möglich. Gruß Robert
-
Thread
ADC Messung mit dem Attiny 841
Um es einmal zu verstehen und arbeite an einer übertragung mit I2C. Wollte mir nicht gleich die 10 Bit antun. Kannst du mir ein paar Tips geben wenn ich 10 Bit per I2C übertragen will?
Heiner schrieb im Beitrag #6724986: > Kannst du mir ein paar Tips geben wenn ich 10 Bit per I2C übertragen > will? Man überträgt einfach zweimal 8 Bit (ein 10 Bit ADC Wert wird in einer 16 Bit Variable gespeichert, siehe Return-Wert ADCW) da du 10 bit über I2C nicht einfach übertragen
-
Thread
Eigene SoC-Software vor Duplizierung schützen
. Zwischenfrage: Kann man das Flash so nutzen, dass der Kunde seine Kunden-APP drin hat (also SoC-Software + eingebaute SoC-FPGA-firmware) und parallel meine beiden Versionen, also SoC-FPGA-firmware + allgemeine SW? ... also für den Fall, dass das SoC das ermöglicht (siehe die Einschränkung von
bietet zuviele Angriffsmoglichkeiten. Benutze das eeprom. Z.b. 256 byte. Das sind 8x 32byte oder 256 bit 32 byte für user ID(30 für ID, 1 für checksum, 1 für Rest checksum), 4 byte für unix-time, 4byte für Option, 2byte für Version. 16bit für auth, 16 bit checksum, 4byte system ID. Dann kommen auth
-
Thread
frage zu defines TRUE/FALSE
das auch allgemeiner, nicht spezifisch für C. In Java ist ein boolean 8 Bit, kann aber wegen dem Alignment effektiv bis zu 64 Bit belegen.
Das ist Compiler abhängig. " Die Größe einer _Bool-Variablen ist plattformabhängig und kann 8 Bit übersteigen." https://de.wikipedia.org/wiki/Datentypen_in_C#bool Es ist bekannt, das in ASM eine Abfrage auf 0 implementiert ist, alles andere benötigt mehr Befehle. Wenn FALSE = 0 ist, dann
-
Thread
RS485 Stern-Netzwerk - Ein paar Fragen
hat der Elektriker aber nur ein Kabel (2x2x0.8) pro Raum gezogen, so dass ich die Signale nicht einzeln in den Technikraum bekomme. Deshalb war meine Idee die Signale jeweils vor Ort mit einem uC auszulesen und die jeweiligen Zustände per Modbus übers Kabel zu schicken. Damit wäre das System auch ausbaufähiger
an. Noch kurz zu den technischen Bedingungen: Baudrate kann winzig sein (600-2400), da die Abfrage 1x/sek stattfindet und jeweils nur 30Bits + CRC übertragen werden, also fast nichts. Die Kabel haben einen Folienschirm, sind aber wahrscheinlich nicht verdrillt. Es ist davon auszugehen, dass die
-
Thread
RTOS mit Arduino
Moin, Bitte nicht schießen;-) Bei den kleinen 8-Bit Dingern kommt es hauptsächlich auf die "Heimarbeit" an. Zuerst muß man sich im Klaren sein wie die HW Ressourcen "gleichzeitig" verwendet werden sollen und dokumentiert die Aufgaben des uC planmäßig
dürfte da einem T11 um einiges überlegen sein. Auch wenn man in Betracht zieht, dass der AVR ein 8-bit Prozessor ist und der T11 ein 16-bit. Aber der T11 brauchte für eine Instruktion mindestens 1.6usec. In der Zeit führt ein AVR 30 Instruktionen aus. Calling Convention war mit DECUS C kompatibel, d.h