-
Thread
Touch - wie kalibrieren in C?
Wo kommen die großen Zahlen her? 12 bit geht doch nur bis 4095.
pegel schrieb im Beitrag #5748966: > Wo kommen die großen Zahlen her? 12 bit geht doch nur bis 4095. Jepp, Werte größer 4095 ist kein 12 Bit mehr. ists vielleicht ein 14bit ADC? Oder wird hier mit Oversampling gearbeitet?
-
Thread
Lösung für Füllstandsmessung gesucht
https://cse.google.de/cse?cx=partner-pub-1202612203358489%3Ajaffbdxotov&ie=UTF-8&q=F%C3%BCllstandsmessung&sa=Suche
zuverlässig über Jahre hinweg. Den Spülkasten muss man ja nicht nehmen. Diese Regler gibts auch einzeln im Baumarkt.
-
Thread
Sprung aus Funktion zu Funktion ?
Nullen stimmt, universell eindeutig ist es aber nicht. > > 1 << 15 ergibt ohne Beschränkung der Bits 32768. Dieser Wert ist in > einem 16-Bit Typ nicht mit Vorzeichen darstellbar. Du wuerfelst hier {1.2}-Komplement und Left-shift einfach durcheinander. Mit 32bit Integern: [c] $ cat shift.c
Und wie ist es mit der Aussage: [c] a << #bits == a * 2^(#bits) [/c] Ein Zweierkomplement-System: 1<<15 = 1*(2^15) (mit negativem Vorzeichen) =-32768 (dezimal) Und auf einem Einerkomplement-System: 1<<15 = 1000 0000
-
Thread
WTV020 Start - Stop - ohne AVR
Dir ist klar, was du willst, dem Leser nicht. - Wenn du mehrere Vorgänge parallel hast (Taster abfragen, Signal State Machine und LED blinken) bietet sich das in einzelnen Unterfunktionen an, die jeweils eine eigene State Machine abbilden. Das geht mit Hilfe von switch/case Stukturen. Klingt kompliziert
besten verarbeiten. „state“ kann nur maximal 3 annehmen, da reicht die native Datenbreite des AVRs mit 8bit vollkommen. Für „counter“ kann der Wert bis zu 3000 annehmen, da reicht 8bit nicht. Also nimmt man 16bit. Bei einem ARM Prozessor mit 32bit kann man in aller Ruhe alles mit 32bit machen, der Prozessor
-
Thread
Byte verschieben und mit Eingang auffüllen.
eher selten effizient... wie wäre es damit das komplette Byte auf einmal zu negieren anstatt jedes Bit einzeln?
konkretisieren? > wie wäre es damit das komplette Byte auf einmal zu negieren > anstatt jedes Bit einzeln? Ja, das könnte eine Abkürzung sein.
-
Thread
3D Drucker zum Laserengraver umbauen?
Zu Marlin und deiner Frequenz das dürfte HW-PWM sein da ist der µC der begrenzende Faktor aber warum willst du soviel brauchst nicht und wen ich das jetzt richtig gesehen habe kann Marlin nur 256 schritte also 8-bit PWM aber das reicht vollkommen aus zumal die Lasereinstellung
stelle schauen da ein Laser-EN mit reinzubauen dann könntest du mit der Stromversorgung oder über den µC den Laser freischalten, damit du keine Fehlschüsse bekommst, baue mir auch sowas ähnliches über den Spindel-EN vom µC damit ich nochmal extra was habe wenn der µC nicht läuft, oder beim Einschalten keine
-
Thread
Autonome Musikbegleitung, Midifizierung von analogen Orgeln
Den Link https://media.ccc.de/v/35c3-9768-open_source_orgelbau meinte ich eigentlich.
. Hier würde ich mich einfach mal in entsprechenden Fachforen umsehen welche Erfahrungen da Einzelne gemacht haben.
-
Thread
STM32 EXTI-Entprellung mit HAL
sinvollen Grund, einen Taster einen Interrupt auslösen zu lassen, betrachte ich das Aufwecken des μC aus einem Sleep-Mode heraus. Nach dem Aufwachen erfolgt die weitere Abfrage und Entprellung dann wie üblich im Ticker-Interrupt. Falls das Prellen schon beim Wakeup stört (was üblicherweise nicht
bit */ EXTI_ClearITPendingBit(PLAY_EXTI_LINE); if (!fastFlags.PlayUpdate) { fastFlags.PlayUpdate = TRUE; } } } [/c] triggert die Routine genau einmal. Ich halte von HAL nicht
-
Thread
W5100 Modul und SD-Card-Modul gleichzeitig an Mega 2560
Bit-Banging (Soft-SPI) ansteuern.
zum Ethernet kümmert sich der entsprechende IC auf dem Modul schon. Und man muss auch auch kein Bit-Banging machen. Bit Banging ist das Nachbilden einer Schnittstelle in Software. Sprich, der Datenstrom wird durch Bitwackeln an IOs durch die CPU nachgebildet. Hat zwar den Vorteil, auf praktische jedem
-
Thread
Nachfolger für ATMega gesucht
Am Ende erinner ich mich auch > das ich mir in der Vergangenheit hin und wieder was breiteres als 8bit > gewünscht hätte. Ich vermisse die 8 Bit Zeiten definitiv nicht. Ein wichtiger Vorteil der 32 Bit Arm M0-M7 ist die C compilerfreundliche Architektur: Genug 32 Bit Register, Parameterübergabe
der XMega nicht. Soweit ich gehört habe, hat der XMega die gleiche Peripherie wie der Atmel ARM uC. Das was viele noch 8-bit Verliebte nicht verstanden haben, ist dass der Cortex uC im Prinzip genauso einfach ist wie ein 8-bitter. Der Unterschied ist doch nur, dass die Register 32 Bit sind.
-
Thread
PORT/Register Beschreibung in AVR
hat, eingebette systeme haben nicht unbedingt etwas mit avr zu tuen, zur erinnerung AVR ist eine 8-bit microcontroller familie von atmel die unter avr-gcc compiler in c zu programmieren ist wobei der gcc seine eigene interpretation besitzt...grusse
einzelne Bits in einem Byte oder Word setzen und löschen. Und das geht in C immer gleich. Und eine 0 zu schieben ist in jeder Programmiersprache und auf jeder Architektur sinnlos, Herr Ingenieur.
-
Thread
Welchen Parameter muss ich nutzen, um mit Arduino und DS18S20 ein Relais zu steuern?
ein float. Der DS18B20 liefert keine Float und auch keine Nachkommastellen. Der Sensor liefert 9 Bit signed integer, die als 16 Bit signed integer ausgegeben werden (Fig. 4 im Datenblatt). Das LSB hat ein Gewicht von 0.5°C. Man muss die ausgegebenen Int-Zahlen also mit (Grenzwert * 2) vergleichen
die Abfrage auf >20° in die Hauptschleife legen. Testen kann ich mangels Hardware nicht, aber zumindest kompiliert das: [c] #include <Wire.h> #include <DallasTemperature.h> #include <OneWire.h> const
-
Thread
C Neuling benötigt Schubs in die richtige Richtung Gesperrt
Der Eindruck verfestigt sich: Es ist für eine einzelne Person unmöglich, ein funktionierendes C-Programm zu schreiben. Zu viele Fallstricke und Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt werden könnten.
Fazit schrieb im Beitrag #5704526: > Der Eindruck verfestigt sich: Es ist für eine einzelne Person unmöglich, > ein funktionierendes C-Programm zu schreiben. Zu viele Fallstricke und > Unwägbarkeiten, als daß sie noch von einer einzogen Person überblickt > werden könnten. Es gibt
-
Thread
Operatoren verstehen
stimmt nicht -- und Dank Deines Einwandes ist mir inzwischen auch klar, wieso. Nehmen wir mal [c] a = b & c; [/c] Hier ist der Sachverhalt völlig klar: Jedes Bit von b kann unabhängig vom korrespondierenden Bit in c den Wert "0" oder "1" annehmen. Das gilt umgekehrt auch für die Bits von c, die unabhängig vom korrespondierenden Bit in b den Wert "0" oder "1" haben können. Es ergeben sich die bekannten vier Belegungsmöglichkeiten für die korrespondierenden Bits von b und c, und daraus
-
Thread
Makro für: PORTD |= (1<<PD1)
Bimbo. schrieb im Beitrag #5703128: > Ich meine natürlich: > [c] > #define Servo1_aus (PORTD &= ~(1<<PD0)); > [/c] ja, bin grad dabei ein C-Buch zu lesen. ich verstehe jedoch nicht wirklich, warum ich das Bit negieren soll anstatt eine 0 hineinzuschreiben
>// C > uint8_t X = (PINB & (1<<PB2)) > 0; Aus andrem Thread >x = (PORTA & (1 << BIT)) == (1 << BIT) Wo ist denn der Unterschied, ob ich PINx oder PORTx schreibe ?
-
Artikel
CtLab FPGA SigLab
den SPI-Slave kann ein Master (z.B. ein Mikrocontroller wie der ATmega644 auf der FPGA-Karte aus dem c´t-Lab) Konfigurationswerte ans CtLab FPGA SigLab übergeben und Messwerte auslesen. Der SPI-Slave besitzt mehrere Datenregister mit 32 Bit Breite, die über ein separates Adressregister ausgewählt werden
Kanal des c´t-Lab-Busses, über welche die FPGA-Karte angeschlossen ist, eingestellt werden. Zusätzlich zu diesen intervallgesteuerten Abfragen werden die Messwerte aber auch unmittelbar ausgelesen, wenn Einstellungen
-
Thread
Gruppen Flags unterscheiden
Hallo Ich arbeite mit einem uC STM32F072C8T6 und bin gerade dabei mir die Funktion eines TSC näher anzusehen. Ich lese auf S 317 im Reference Manual: Bits 23:16 GxS: Analog I/O group x status These bits are set by hardware when
müssen demnach 3 Interrupts kommen. Aber das kann ich ja mal testen. > Das waeren insgesamt 3 Abfragen. Wo ist das Problem? > Es geht doch nur darum, ob das jeweile Flag GSx gesetzt ist, oder? Ja es ging mir darum, ob du das auch so verstehst wie ich. Ich frage im Interrupt die GxS bits einzeln
-
Thread
Rust - ist das hier um zu bleiben?
sowie Kotlin gewünscht. Letztere werden für Android-Apps verwendet. Mithilfe von Anbindungen an C und C++ ist außerdem die Nutzung in der Unreal Engine möglich. [/pre] Rust 1.49.0 hebt Linux-64-Bit-ARM auf höchste Support-Stufe https://www.heise.de/news/Rust-1-49-0-hebt-Linux-64-Bit-ARM-auf-hoechste-Support-Stufe
verantwortungsvoll den neuen C++ Code im Kernel reviewen? Die "alte" Kernel-Hacker-Gilde eher nicht. Einzelne C++ Features auszuschließen würde die Sache nicht besser machen, würde wohl in einem größeren Krieg enden. Aber ein paar
-
Thread
stm32 HAL UART Receive_IT(.) sendet nur 1 Byte
Daten über die HAL_UART_Receive_IT() Funktion zu empfangen. Leider kommt im Speicher nur das erste Bit an welches versende. Hier der Quellcode: In der main.c: uint8_t a = 0; char docklight[10]; int main(void){ while(1){ HAL_UART_Receive_IT(&huart3,&docklight,strlen(docklight));
In der _*_it.c brauchst du nichts zu ändern. Füge im die main.c die Funktion HAL_UART_RxCpltCallback ein. In dieser kommt jedes Zeichen einzeln an und du kannst auf Zeilenende auswerten oder einen Puffer mit einer
-
Thread
Anzahl verwendeter Bitstellen mit C-Preprocessor ermittelbar?
Mit dem Pre-prozessor fällt mir nichts ein, mit C++ und rkcursiven Templates schon: [c] /* Recursives template */ template<unsigned long VALUE> class GetBits { public: static constexpr uint8_t Bits = 1 + GetBits<VALUE/2>::Bits;}; /* Rekursionsende */ template<> class GetBits<0> { public: static constexpr uint8_t Bits = 0;}; /* beispiel */ int bits = GetBits<12345>::Bits; [/c] Wird komplett vom Compiler berechnet, am Ende steht da nur noch eine Zahl im Code. Wenn
-
Thread
[C] Was bewirkt diese Zeile?
Warum werden die einzelnen "Strings" mit "\0" miteinander verkettet? [c] #define STR1 "eins" #define STR2 "zwei" #define STR3 "drei" char str[]=STR1 "\0" STR2 "\0" STR3 "\0"; puts(str); [/c] wird ja nur "eins
zitter_ned_aso schrieb im Beitrag #5699410: > Warum werden die einzelnen "Strings" mit "\0" miteinander verkettet? Damit man sie sauber voneinander trennen kann? > [c] > puts(str); > [/c] > > wird ja nur "eins" ausgeben. Ja. Und? Die Strings stehen da nicht
-
Thread
Siebensegment und Tasten ansteuern mit TM1651 \ TM1637
verwendet, bei der Ausgabe des einzelnen Datums die Bits reversiert (d.h. Bit7 <=> Bit 0, Bit6 <=> Bit1, Bit5 <=>Bit2, Bit4 <=> Bit3 tauscht), dann kannst du den TM16XX auch mit regulären I2C - Funkionen ansprechen. Das "ärgerlichste
TWI und I²C identisch. [/code] Allerdings steht dort auch: [code] Alle Bytes werden dabei „Most Significant Bit First“ übertragen. [/code] Somit ist ein Frame für den TM16XX kompatibel zum I2C-Bus, aber
-
Thread
Busy Flag bei LCD mit mit ST7036i?
); I2C_out(0x6D); I2C_out(0x0C); I2C_out(0x01); I2C_out(0x06); delay(10); I2C_Stop(); [/c] Für die Kommunikation verwende ich das interne SERCOM-Modul und kein Bit-banging wie im Datenblatt. Die I2C-Routinen
): "There is a known issue on our serial LCD modules which affects its operation when used in I2C mode. When using the module’s I2C interface at a clock rate of 100KHz NACKs/bit errors/hanging, may occur. Therefore, if using the I2C interface of these serial LCD modules, a MAX clock rate of 50KHz
-
Thread
Viele Kippschalter (ca. 40) auslesen / Mikrocontroller wake-up
Fall_, dass es doch SPST-Schalter werden müssen, habe ich nochmal über eine Matrix-Lösung mit einem µC nachgedacht, der regelmäßig geweckt wird. Die SW muss ja alle Kombinationen detektieren, also ohne "Phantom-keys". Vielleicht ginge das mit einem µC, der jeden einzelnen Pin zwischen Pull-Up und
Tastenmatrix wäre dieser: https://www.ebay.de/itm/1PCs-PCF8574-IO-Expansion-Board-I-O-Expander-I2C-Development-Module-8-Bit-TE255/232932082676?hash=item363bd583f4:g:TdYAAOSwr6RZnO2V:rk:2:pf:0
-
Thread
Modbus RS485 RTU - China Relais Board
01 05 00 03 01 00 3c 5a 3 Relais aus 01 05 00 03 00 00 3d ca 4 Relais offen 01 05 00 04 01 00 8d 9b 4 Relais aus 01 05 00 04 00 00 8c 0b [/c] Wenn ich: [c] Alles aus 01 05 00 ff 00 00 fd fa Alles Licht 01
sondern lediglich ein paar RS485 Kommandos. Beispielsweise kann man die Inputs zwar mit 0x02 abfragen, aber immer nur von 0x00 bis 0x07 gleichzeitig, nicht einzeln. Desweiteren stellt man die Adresse des Boards ein, indem man an die Adresse 0x00 schreibt, etc. @da_danny hat auch schon erwähnt
-
Thread
Ich hasse Windows schon wieder
-16-bit-pro) > Genauso wie unter FreeBSDD "make world" das geilste > Kommando ist, das ich je gesehen habe. Make ist ein Build-Prozessor für C/C++ und auf praktisch jedem Betriebssystem verfügbar. Jede C/C++ Entwicklungsumgebung enthält make.
-
Thread
ADWandler Wert PIC18
einem PIC18F26K22 Controller mit der MPLAB IDE 5.10 und dem XC8 Compiler. Ich will eine konstante Abfrage der Spannung eines Gerätes mithilfe einer AD-Wandlung, dabei habe ich bemerkt, dass der einzige Rückgabewert die 1023 sind... Mithilfe eines einzelnen Code-Fetzens, habe ich dies herausgefunden,
Hallo, Die config bits werden in deinem Code nicht gesetzt. Diese können in mplab per Menü eingestellt werden (memory view?). Den erzeugten Code dann in ein source file (main.c) kopieren. Die while(1) enthält eine return
-
Thread
Noch ein Taschenrechner auf ATMega Basis
so wie hier [1] [1] http://www.hp-15c.homepage.t-online.de/examples.htm
Ich hab die "C"-Varianten des Compilers / Decompilers an die geänderten Codes von boris5 angepasst. Zu finden unter https://github.com/Feinmechaniker/UPN/tree/master/C
-
Thread
Zählrichtung festlegen
Ich würde die ZU-Variable einsparen. Die Information AUF oder ZU eigentlich in einem einzelnen Bit/ bzw in C einer Variable abbildbar --> "AUF"-gedrückt --> AUF = 1; sowie "ZU" gedrückt --> AUF = 0; So merkst du dir die letzte aktivierte Richtung und zählst bei einem Impuls, der ja nur kommt
else { zaehlerstand = zaehlerstand -1; } zaehlerstand_anzeigen(); P2IFG&=~BIT5; } [/c]
-
Thread
Wachsende Unterstützung der Selbstreparatur
War beim 35C3 auch ein Thema: https://www.youtube.com/watch?v=rfr_V3GnV2o https://media.ccc.de/v/35c3-9371-repair-cafes
zui schrieb im Beitrag #5676637: > War beim 35C3 auch ein Thema: > > https://www.youtube.com/watch?v=rfr_V3GnV2o > https://media.ccc.de/v/35c3-9371-repair-cafes ohne mir das im einzelnen durchgelesen zu haben: Bei uns in der Stadt hat sich
-
Thread
Beruflich für ARM CORTEX fit machen
embedded systeme Software entwicklen, welche "Skills" sind dafür wichtig? Bisher habe ich bloß 8 bit Systeme genutzt und zwar Atmel AVR 8 bit und alles in C. Richtig viel hab ich in C nicht dazu gelernt, da ja vieles vorgeben verfügbar ist, das habe ich bisher alles verstanden. Deshalb überlege ich
E_Techniker schrieb im Beitrag #5674788: > Bisher habe ich bloß 8 bit Systeme genutzt und zwar Atmel AVR 8 bit und > alles in C. > Richtig viel hab ich in C nicht dazu gelernt Das ist schade, gerade das Programmieren sollte man gründlich lernen, die Architektur ist
-
Thread
Wärmebildkamera mit dem MLX90640 und Arduino Due
Christoph E. schrieb im Beitrag #5716476: > Ist das Ansprechen/Abändern von Speicherzuständen über I²C nicht > softwareseitig standardisiert? Habe nochmal kurz recherchiert. Wahrscheinlich kümmern sich die beiden Funktionen Wire.beginTransmission() und Wire.requestFrom() um das besagte Lesen-/Schreiben-Bit
noch und übermittelt passende Temperaturen. Damit dies so ist, muss jedoch in der Datei MLX90640_I2C_Driver.cpp zu Beginn die Zeile #include <Arduino.h> hinzugefügt werden. Von den 768 Pixel scheint nur ein einziges defekt zu sein, da es die Temperatur "nan" liefert. Da übernehme ich nach Abfrage
-
Thread
EleLa - Elektronik Lagerverwaltung V3.1
Satz eindeutig zu identifizieren. Ja ist schon doof, die Zeilennummer statt ID auszugeben Die einzelne numerische Zeile 4128 wäre: [c]SELECT * FROM `foto` LIMIT 4128, 1;[/c] zum löschen DELETE statt SELECT. Nachtrag: oups, war zu langsam
. schrieb im Beitrag #6270907: > (armv8l) using readline 5.2 ^^^^^^ Hoppala, du fährst die 64-bit Armbian? Weist schon dass die noch ganz frisch ist und erst seit Raspi4 das coming-out hat? Auch wenn die SoC seit Jahren schon 64-bit ist. Das könnte ein Punkt werden. Behalte das mal im Auge.
-
Thread
7 Segment Multiplexing und USART Kommunikation(Baudraten)
Meine Funktion die ich im Moment fürs Senden nutze sieht so aus: [code] void sendToSerial(char c[]) { for (int i = 0; i < strlen(c); i++){ if(c[i] != 0) { while (( UCSR0A & (1<<UDRE0)) == 0){}; UDR0 = c[i]; }else{ break; } } } [/code] Mfg
auf einer Platine platzsparend unterzubringen. Deswegen nutze ich 2x 74HC595 und 2x Pins vom PortC Register. Die Ausgänge des ersten Registers liegen über 510 Ohm Widerstände an den Anode der Segment LED an. Q0 bis Q6 sind dabei für die einzeln Segmente und Q7 ist für den Dot Punkt. Das zweite
-
Thread
Lebensdauer von lokalen Variablen
Probier mal statt: [C] strcpy(leds,"NoLED"); [/C] dass hier: [C] strcpy_P(leds,PSTR("NoLED")); [/C] PS: Oder was Rufus schreibt.
klein sein. In Assembler sollten es um die 60 Byte sein, bin gespannt was der Compiler draus macht. [c] // Aufruf Parse("window 18.45,19.53","window \xC0\x80.\xC1\x81,\xC2\x82.\xC3\x83", buf); int Parse(char* input, const char* command, uint8_t* buf) { uint8_t cmd_ch, in_ch; do { in_ch
-
Thread
Benötige Hilfe beim programmieren eines Microkontrollers!
verwirklichen, die eben bitweise arbeiten, oder man hat vordefinierte Bitfelder, die den zugriff auf einzelne Bits erlauben. Soll also PORTE2 als Eingang genutzt werden setzt man dem nach nur Bit 2 von DDR2 auf den entsprechenden Wert und lässt die anderen erst mal so, wie die Entwickler des Controllers
Im AVR GCC Tutorial sind die Ports für mich wunderbar erklärt. Man schaut sich die C Bsp. Codes an und weiß Bescheid was man machen muss. PDIP Gehäusepin 9 wäre PB.6 [c] DDRB |= (1<<DDB6); // PB6 Ausgang, Bit setzen PORTB |= (1<<PB6); // PB6 einschalten, Bit setzen PORTB &
-
Thread
Viele Ein/Ausgabeports am PC
PCI-Karte für digitale Messdatenerfassung und Steuerung. 32 Digital-I/O-Kanäle, gruppiert in 2x 16 bit Ports mit portweise umschaltbarer Richtung. 3x Zähler/Inkrementalgeber (32 bit, optional Zählerreset) an beliebigen Digitaleingängen anschließbar. Eine PCI-Karte, es gibt auch USB- "Digital-I/O"
P.S.: Für ein paar LEDs könnte man dem CY7C68013A mit einigen 595 expandieren. Mit 10 davon würde man z.B. 80 LEDs steuern können. Die Soft-SPI sollte dann natürlich der CY7C68013A selber machen und nicht der PC.
-
Thread
RS232 Schnittstelle mit C über Visual Studio Bitweise auslesen
oder 0V beträgt. Mein einziges großes Problem ist hierbei nur, dass ich nicht weis wie ich die einzelnen Inputleitungen des RS232 in Visual Studio abfragen kann.
Steuerleitungen der RS232, naja... ich würds so nicht machen. Was hälst du von dieser Idee (da du ja C kannst): Nimm dir z.B. ein kleinen µC (ATtiny) definiere dort bis zu 8 Eingänge und sende jede 500ms ein Byte (in dem die 8 Eingänge als Bits hinterlegt sind) über die UART an den PC und dort kannst
-
Thread
Ultraschallsensor und ATmega 2560
Timer aufgerufen werden und einfach nur eine Variable hochzählen. Nennen wir sie uint32_t systick (8bit wäre zu klein). [c] uint32_t volatile systick=0; ISR(TIMER1_OVF_vect) { systick++; } [/c] Dann schreibst du dir noch eine Funktion, mit der du systick sicher lesen kannst ohne dass
Intervall machen soll. Du musst also abfragen können, ob inzwischen 10ms verstrichen sind. Das macht man so: [c] uint32_t anfang = getSystick(); ... irgendwas machen uint32_t jetzt=getSystick(); if (jetzt-anfang > 10000/58) {
-
Thread
Maskierungsprobleme
einen Einfluss auf die Einzelnen Gain's besitzen. Jedoch wenn ich z.B. nur Bit 6 und 1 einschalte am Switch, wird mir schon ein Fehler ausgegben. So besitzt einer der Variabeln GainSen1-4 0x13. Jedoch sollte dies nie passieren und
Beitrag #5639578: > Mit dem Funktionier es. Aber wiso nicht, wenn ich über das gesammte nach > 0x13 abfrage? Du verwechselst | und ||. | liefert eine bitweise VerODERung, || ist ein logisches ODER. Mit ((GainSen1 | GainSen2 | GainSen3 | GainSen4) == 0x13) veroderst Du zuerst alle Bits von GainSen1.
-
Thread
ATSAM VS STM32 Eingangswiderstand ADC
und was bedeutet das: auf Seite 1178 bei ATSAM ENOB Effective Number of Bits 9.5 11 12 bits
Und was ist mit und was bedeutet das: auf Seite 1178 bei ATSAM ENOB Effective Number of Bits 9.5 11 12 bits
-
Thread
Scheduler für AVR
LCD_DB7); > lcd_enable_puls(); > } Was bitte ist das denn? Wer kommt hier auf die Idee jedes Bit einzeln zu setzen? [code]LCD_PORT &= 0x0F; // Pins low LCD_PORT |= data & 0xF0; //high Nibble setzen[/code]
Karl K. schrieb im Beitrag #5631076: > Was bitte ist das denn? Wer kommt hier auf die Idee jedes Bit einzeln zu > setzen? Wahrscheinlich der Gleiche, der die Zuordung der Bits zu den Portbits maximal variabel halten wollte. Wo liegt das Problem? Die 3us CPU-Laufzeit? > LCD_PORT &= 0x0F; //
-
Thread
Bus per MISO MOSI
Ich würde an deiner Stelle I²C benutzen. Dort kannst du jeden Teilnehmer einzeln adressieren, und nur der adressierte antwortet. SPI wird bei vielen Teilnehmern immer langsamer.
schrieb im Beitrag #5628568: > @Jörg W. (dl8dtl) (Moderator) > >>Ich würde an deiner Stelle I²C benutzen. Dort kannst du jeden Teilnehmer >>einzeln adressieren, und nur der adressierte antwortet. > > Ja, aber nicht wenn das Ganze über mehrere Dutzend Meter verteilt ist. I²C kann man praktisch
-
Thread
STM32F7 mit externem ADC - Geschwindigkeit und Durchsatz
> Geht das ernsthaft nicht mit einem > STM32F7 Cortex M7 ?! Doch, aber du darfst nicht jedes 16bit-Wort einzeln verarbeiten. In einer Schleife direkt einlesen sollte gehen, dann bleibt aber nicht mehr viel Rechenzeit für anderes. Hier sollte man darauf achten effizienten Code zu schreiben und die
. Macht auch Sinn. Niklas G. schrieb im Beitrag #5628173: > Doch, aber du darfst nicht jedes 16bit-Wort einzeln verarbeiten. In > einer Schleife direkt einlesen sollte gehen, dann bleibt aber nicht mehr > viel Rechenzeit für anderes. Hier sollte man darauf achten effizienten > Code zu schreiben
-
Thread
MINOS - Minos Is No Operating System
Firmware zu kriegen? Lowlevel-Timer-Initialisierungen in main, Uhrzeit- und Kalender-Funktionen in base.c, kein wirklicher Tasten-Handler in buttons.c sondern nur sowas: if (GPIO_ReadInputDataBit(BUTTON_PORT, BUTTON_PIN) == BUTTON_PRESSED) und so weiter.. W.S.
entsprechende Events zu deen Kenntnisnahme zu senden. Übles Beispiel deinerseits: dein Unit button.c, der nicht die geringste Treiber-Qualität besitzt. Es mag ja OK sein, auch eine Abfrage des momentanen Zustandes einer Taste zu haben, aber das Wesentliche wäre, ein Tastaturereignis a la "idButton1"
-
Thread
Variable gelöscht - PCINT bei ATTINY85
------------------------------------------------------------ /// Software UART send routine for 8 bit data UART data frame /// /// void sendChar(uint8_t chr) //Character senden { cli(); uint8_t bit_cnt; //bit counter -> um die einzelnen bits zu vergleichen PORTB &= ~(1<<PIN_UART_TX)
= 0; _delay_us(HALF_BIT); //Halbes Bit wird abgewartet, damit Frame pünktlich beendet wird sei(); return; } _delay_us(ONE_BIT); } } /// @} //end group slave [/c]
-
Thread
uC für 0,20€ CH552 / CH554 von WCH Billig Micro mit USB Funktion, Chip vorstellung
Makros für SDCC), hier ein kleiner Zwischenstand zum Bootloader. Diie Mainfunktion des Bootloaders in C. Sie ist nicht 100% identisch zum Original sollte aber funktionsgleich sein und das Wesentliche zeigen. Thomas [c] bit bit00; // ??? bit bSoftReset; // 1 for going to reset
Das funktioniert soweit ich kann's bloss nicht abschließend testen da ich nur die Demo habe. Die einzelnen Dateien kann ich aber kompilieren. Dann hab ich mir nochmal den MicroC Pro Compiler angeschaut. Das Ding ist der Hammer die übersetzen doch tatsächlich unsigned short in einen 8Bit Typ also gleich
-
Thread
xmega single ADC-Messung
ADC.CH2.MUXCTRL = ADC_CH_MUXPOS_PIN4_gc | ADC_CH_MUXNEG_PIN5_gc; #endif ADC.CTRLB = ADC_RESOLUTION_12BIT_gc | (ADC_MODE << 4) | (1 << 3);// enable freerun } [/c] Da sind noch einige Besonderheiten drin, die du aber rauswerfen kannst/solltest. Abholen der Werte jederzeit z.B. mit [c] myChannel0 =
Perform one sample to initialize the ADC on the new reference getADC(0); return 1; } [/c] Auch ich lese hier das Ergebnis in einem Rutsch in eine 16bit Variable aus.