-
Thread
ADXL345 und ESP8266: Echtzeitdatenergassung mit konstanter Abtastrate und Interrupts
{ PORTD &= ~(1<<PD2); } // Send a single character or byte. void softSerial_sendChar(char c) { cli(); // Send start bit SOFTSERIAL_TXD_LOW; _delay_us(US_PER_BIT); // Send 8 data bits for (uint8_t i=0; i<8; i++) { if (c & 1) {
} else { SOFTSERIAL_TXD_LOW; } _delay_us(US_PER_BIT); c=c>>1; } SOFTSERIAL_TXD_HIGH; sei(); _delay_us(2*US_PER_BIT); } // Send a char array from RAM. void softSerial_sendStr(char* text) { char c; while (
-
Thread
Bascom, C, C++
Multiuser-Datenbankanwendungen implementiert, dort schiebt man meist im wahrsten Sinne des Wortes "Bits und Bytes", wozu die Assemblersprache ja entwickelt wurde. Außerdem erscheint mir der Weg über Pascal und C auf dem PC und dann zu C auf dem MC reichlich weit, nur um sich "mal ein bischen mit AVR´s
viele verstehen ihn nichtmal mehr.) > ... dort schiebt man meist im wahrsten Sinne des Wortes "Bits und > Bytes", wozu die Assemblersprache ja entwickelt wurde. Auch C wurde mit diesem Hinblick entwickelt, schließlich wollte man ein Betriebssystem damit schreiben. Was glaubst Du sonst, wofür
-
Thread
Wie ein Byte über den UART ausgeben?
Hier noch die Interrupt.c Es geht um die Timer2 ISR und die UART ISR. Sorry für den schlechten Stil. Grüße
auch außer true (1) oder false (0) vielleicht > auch mal eine 3 enthalten. Nö, das ist ein einzelnes Bit - nur 0 und 1 sind möglich. Wir sind hier auf einem 8051, da gibt es bit-adressierbaren Speicher.
-
Thread
-
Thread
FT800 / FT810 Library
, imbuff_test); //Function to write 8 bits to intended address location mem_mediafifo_start++; }while(status != FX_END_OF_FILE); [/c] 4. Für 4Bit alignment sorgen [c] while((mem_mediafifo_start % 4) != 0)
ja auch über das REG_SWIZZLE unterstützt wird. Schaltbild ist im Anhang. Da das Display ein 18-bit Display (6bit/Farbe) ist, setze ich zudem in der Init noch das Register REG_OUTBITS: [c] EVE_memWrite16(REG_OUTBITS, 0x01B6); [/c] Die 0x1B6 entsprechen für jede Farbkomponente 0b110 = 6. Bin mir
-
Thread
Adressieren mehrerer XBee's
Modul 2x OK + Enter. Diese können einfach verworfen werden. Man kann als erstes eine einfache Dummy-Abfrage machen (z.B. Channel-Nr. abfragen mit 'CH'), dann weiß man, dass der API-Mode funktioniert. Anschliessend API-Frames senden, wie diese im Datenblatt im Kapitel API beschrieben sind. Man kann das
zuweisbarer Knotenname, der keine weitere Relevanz hat. Wolltest Du vielleicht anstatt dessen die 64-bit MAC oder die 16-bit Adresse (MY) auslesen?
-
Thread
Spannungsspitzen in VHDL eliminieren
0 zu schalten. Wie lautet die High oder Low- Abfrage von 4 von 6 bits bei solch einem std_logic_vector? sr <= sr(5 downto 0) & Data_in;
High/Low bits zähle und gleichzeitig bei Zählschritt 16 abfrage wie der Stand war und denn dann ausgebe.
-
Thread
µC von 0 auf lernen. ASM oder C?
es anders aussehen, aber wer jetzt mit µC einsteigt, sollte es sowieso nicht mehr auf 8 bit tun.
Was ist denn an c schwer?! :-)) Ich habe die Firmware meines kompletten Quadrokopters in c geschrieben. Was habe ich hauptsächlich benötigt? - If-Abfragen - For-Schleifen - While-Schleifen - Case-Abfragen -
-
Thread
Visual C++ CRT Linker-Problem?
nichts finden... -> 2. Versuch: Statisch den Comport zuweisen und konntinuierlich die Messwerte abfragen -> keine Antwort die Kommunikation mit dem MCU läuft einwandfrei (Terminal und Borland CPP) Hat jemand eine Ahnung, wieso es nicht mit Visual C++ läuft?? hab mich mal zwischendurch selber etwas
; [/c]
-
Thread
Wie Assembler ISR in C integrieren ?
Grundtakt, damit der durch die "Stützstellen" nicht gnadenlos einbricht. Ich denke zur Zeit an ein 8Bit R2R Netzwerk als DAC. Wie gesagt, ich möchte erstmal versuchen was mit nur einem µC so möglich ist. Vielleicht reicht es mir aus, vielleicht auch nicht. Werde ich dann sehen.
Grundtakt, damit der durch die "Stützstellen" nicht > gnadenlos einbricht. Ich denke zur Zeit an ein 8Bit R2R Netzwerk als > DAC. Wie gesagt, ich möchte erstmal versuchen was mit nur einem µC so > möglich ist. Vielleicht reicht es mir aus, vielleicht auch nicht. Werde > ich dann sehen. ich lese
-
Thread
uP anzahl inputs erhöhen
einem Zeitraum von etwa 5-10ms einlesen kann (also 16 * 6 pro print). Denke da drängt sich ein i2c auf (mit einem PCF8575CPW Baustein der 16 IO's drauf hat) mit 400kHz , oder ne bessere Lösung? Bei den anderen 6*16 ist Problematischer, die muss ich Periodisch abfragen, und Brauche den Zustand aller
kannst Du auch "einfach" 12 Stück 74HC244 Tri-State-Buffer nacheinander auf einen 8-Bit-Port schalten und so der Reihe nach alle Eingänge abklappern. Die Selektion der einzelnen HC244 erfolgt dann z.B. über zwei Stück HC138, an die ein 4-Bit-Addresse angelegt wird.
-
Thread
Open source Autoradio
Datenblatt ueber 2000Seiten. Speziell fuer Audiodevices gedacht, SPDIF integriert, I2S integrierst, I2C integriert, CAN, SD-Karte mit 1Bit und 4Bit integriert, 1MByte internes Ram in der CPU. AUsserdem Fliesskomma-DSP der sicher genug Power fuer MP3 hat ohne auch nur einen Muskel anzuspannen. :-) USB2.0
Datenblatt ueber 2000Seiten. Speziell fuer Audiodevices gedacht, > SPDIF integriert, I2S integrierst, I2C integriert, CAN, SD-Karte > mit 1Bit und 4Bit integriert, 1MByte internes Ram in der CPU. > AUsserdem Fliesskomma-DSP der sicher genug Power fuer MP3 hat > ohne auch nur einen Muskel anzuspannen.
-
Thread
Logic Analyzer bauen
bereitet mir wegen der Laufzeit/hohen Frequenzen auch etwas Kopfzerbrechen, immerhin müssen die einzelnen CPLD untereinander kommunizieren, der uC ist zu langsam dafür; dh. Trigger Logik/Clock unabhängig vom uC! Immerhin kann ein 8bit Channel zB. den Bus abhorchen, während mit dem 2ten 8Bit Channel das
, die per i2c/4MHz mit dem Master (CPLD, uC) kommunizieren, die oben bereits von mir erwähnte Black Box. Indirekt heisst dies, N Proben für N x 8 BitChannel; da i2c/4MHz im Ctrl CPLD, sind selbst 128 BitChannel kein
-
Thread
Code Optimierung (Geschwindigkeit) AVR, C
halt die Erfahrung, wie man sowas richtig programmiert, welche Variante währe zum Beispiel richtig: [c] while(RFM12_INT_PIN&(1 << RFM12_INT_BIT)); [/c] oder [c] while(RFM12_INT_PIN&(1 << RFM12_INT_BIT)) __asm volatile ("nop"::); [/c] oder vielleicht [c] while((volatile) (RFM12_INT_PIN&(1 << RFM12_INT_BIT))); [/c] Guru schrieb im Beitrag #2156015: > Ohne das ich das jetzt im einzelnen nachgeprüft habe, wird die maximale > Tatktfrequenz der SPI-Schnittstelle von der Systemtaktfrequenz abhängen
-
Thread
Atmega328P Frequenzerzeugung
müsstest du einen Wert zählen, vergleichen usw. Das geht nicht...(zeitlich). Selbst nur das hier: [c] ISR (TIMER0_COMPA_vect) { PORTD ^= (1 << PORTD6); } [/c] Dauert ca. 2,43 µs. (siehe Anhang) Also wird man wohl doch den 16-Bit Timer nutzen müssen, dann kommt er maximal alle 25 µs in die
einzelnen Bits in einem SFIO-Register in seinem "Wissensschatz" hätte, was er aber offensichtlich nicht hat...): [avrasm] push r24 ; 2 2 in r24, 0x0b ; 1 1 sbrc r24, 5
-
Thread
Trivial-FTP: Lesen dauert sehr lange bei falscher IP-Adresse
Rainer Reusch schrieb im Beitrag #4152057: > In einem Klasse-C-Netz wären das 254 Threads. Das wäre sogar noch machbar. Umm... Klasse C? Wie war das nochmal mit CIDR? Deine Software sollte auf allerhand Präfixe ungleich /24 gefasst sein und entsprechend IPs ableiten
Indy) nicht richtig läuft, kann man besser das Problem angehen. Vielleicht kann dir das noch helfen:[c] TIdLogDebug is an implementation of the ancestor class TIdLogBase, and extends the framework for logging information about Indy communication components.[/c] > Die Eigenschaft ReceiveTimeout ist
-
Thread
code funktioniert nicht
Fehler ist ... das du dich standhaft weigerst im Datenblatt nachzusehen in welchem Register das SPIF Bit beheimatet ist und dann eine korrekte Abfrage eines Bits in einem Register zu programmierern if( Register & ( 1 << BitNummer ) ) Bit ist gestzt else Bit ist nicht gesetzt
danke für die antwort. ich dachte das man mit einer while auch einzelne bits abfragen kann. das das nur ein bit ist weis ich, das es im spsr reg ist auch.
-
Thread
Binärzählwert als Dezimalzahl auf LCD-Display
dem HD44780 Display etwas ausgeben willst musst du zuerst die Initialisierung machen. Das sieht in *C* so aus: [c] LCD_Instruction(56); //Function Set (8 bits) LCD_Instruction(56); //Function Set (8 bits) LCD_Instruction(56); //Function Set (8 bits) LCD_Instruction(1); //Display
verschiedensten Technologien zu erledigen. Das könnten z.B. sein: 1. Röhren-Logik & Nixie-Anzeigen 2. Einzelne Transistoren 3. Einzelne IC's Analog & TTL/CMOS-Logik 4. Ein µC & Assembler oder BASCOM oder C/C++ 5. Ein CPLD/FPGA & VHDL oder Verilog 6. Googeln und nachbauen Wie gesagt ein guter Ingenieur
-
Thread
Ich verstehe den Timer0 beim ATtiny 13 nicht.
if (laenge >= 65.535) > laenge =0; Da sind gleich zwei Fehler drin: Zum einen ist in C der Punkt kein Tausendertrenner, sondern der Dezimaltrenner, Du vergleichst also nicht mit 65535, sondern mit 66 (rundung). Außerdem brauchst Du den Test gar nicht, denn ein vorzeichenloser 16-Bit-Wert
online stelle, in dem ich hoffentlich eine > funktionierende Auswertung des Servosignales eines einzelnen Kanal mit > Tiny 13V realisiert habe. Naja, mir brauchst Du nichts versprechen. Und Deinen C-Code kann (und will) ich sowiso nicht nachvollziehen. Ich kann kein C, meine AVRs aber auch nicht.
-
Thread
FAT32 Datenrate mit uC?!
Wiso machst du die Schreib/Lesevorgänge selbst ? Der uC kann sowas auch hardwaremäßig. Dies ist nicht nur einfacher, sondern auch schneller. Die 16bit sind zwar ein Problem, das man aber leicht in den Griff bekommen kann. Ich verwende die Schaltung im Anhang
ursprünglichen Thema zurück. Ich hab jetzt meine Leseroutinen nochmal optimiert (einige Inline-Functions, IF-Abfrage geändert,...), es ist aber immer noch alles in C geschrieben. Jetzt bring ich eine Datenrate von _315kByte/s_ zusammen. Also damit bin ich zufrieden ;-)! mfg Andreas -- Andreas Auer
-
Thread
Neues Terminal-Programm für Windows
Nur so als Richtgrösse: Ich habe derzeit kein Problem auf einem AVR mit 8MHz über die UART mit 500kBit zu empfangen und zu senden ohne das etwas verloren geht. Die Routinen sind in C geschrieben.
du da auf die Beine gestellt hast. Ich habe noch keines gefunden, was mir beim Debugging serieller µC-Kommunikation bessere Dienste leistet. Jetzt habe ich hier aber ein Bauteil mit serieller Schnittstelle, was neben einem stop bit auch ein start bit im Protokoll verwendet und ich habe noch kein Terminal-Programm
-
Thread
Datensatz aus UART "gewinnen"
Abweichung. Die driftet dann auf PC > Seite irgendwann weg... Beim UART-Empfang werden mit jedem Start-Bit, i.e. für jedes einzelne Zeichen die Karten neu gemischt. Wie soll da irgendetwas irgendwann ins Driften kommen?
// Oups two '$' in one > record! > // TODO: Error Flag? > } > } > [/c] Hier hat sich leider ein Fehler eingeschlichen! :( Das wird so nicht klappen, die Abfrage sollte besser an anderer Stelle passieren.
-
Thread
Probleme mit SPI- PIC18
SPI1BAUD = 0x3; TRISBbits.TRISB5 = 0; //SPI1_Open(); } void SPI1_Open() { SPI1CON0bits.EN = 1; } void SPI1_Close(void) { SPI1CON0bits.EN = 0; } void SPI1_ExchangeByte(uint8_t data) { // while(!PIR2bits.SPI1TXIF){}; // dieser prüft ob platz im FIFO ist. SPI1TXB
warten auf den RX Interrupt beides geht. SPI1INTFbits.SRMTIF = 0; //while(!PIR2bits.SPI1RXIF); } [/c]
-
Thread
AVR Struct Zugriff
Idee, warum haust du nicht alle Flags in z.B. eine > Int-Variable und belgst mit den Flags die einzelnen Bitstellen. > Dann sparste > 1.Speicherplatz > 2.Aufwand beim Auslesen > 3.undefinierte Zustände Das würde das C-Buch empfehlen, das Karl heinz Buchegger ansprach. Bleibt noch das switch-case
ist, da der gcc die Bitoperation standardmäßig auf einen Integer aufweitet (d.h., er rechnet mit 16 Bit), wohingegen der Bitvektor schnöde in einem 8-Bit-Feld vorgehalten wird. Die folgenden beiden Varianten erzeugen bei Optimierung (egal worauf) identische Assemblies: [c] /* Variante 1 */ int main
-
Thread
Kommunikation zwischen PC und UART-MSP430
so ich möchte jetzt abfragen. wenn "A" ankommt dann soll er was anders ausführen oder wenn "B" dann was anders. soll ich einfach so machen? if(c="S") { wie Oben; } else if (c=="A") { blabla; } else if(c=="C")
! c ist ein einzelnes Zeichen, ein char! Daher musst du ebenfalls mit einem character vergleichen! Der schriebt sich aber mit ' if( c == 'S' ) { ... Strings, also so was: "Alain", kann
-
Thread
NMEA - Protokoll / UBLOX SAM - LS / ATMEGA 16
> SET_BIT(UCSRB, RXEN); //Der Empfänger wird aktiviert > //SET_BIT(UCSRB, TXEN); //Der Sender wird aktiviert > SET_BIT(UCSRC, URSEL); //Es kann in das C Register geschrieben
/Zum loeschen von einzelnen Bits #define TOGGLE_BIT(PORT, BITNUM) ((PORT) ^= (1<<(BITNUM))) //Zum toogeln von einzelnen Bits /* ********************* Clear_Display ********************* Autor: Worzfeld Martin
-
Thread
Interner ADC des 80C535
nicht weis, wie ich das busy abfragen kann.... es ist ja im ADCON enthalten aber wie frage ich ein einzelnes Bit eines Bytes ab?? Danke für Antworten
Und-verknüpung mit 0x10 gemacht. 0x10 ist binär 00010000 Das ADOCN Register ist so aufgebaut: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 ? BD CLK BSY ADM MX2 MX1 MX0 X X X 1 X X X X wenn AD nicht fertig 0 0 0 1 0 0
-
Thread
Tastenschlagzeug mit NXP LPC 935 selber bauen
ausgewertet und es kommt genau das heraus, was du auch schon vermutet hast. Das LSB ist das erste Bit und das MSB das letzte Bit eines Bytes in der Übertragung. Ich habe das erste Bild mal mit ungefähren Bitmarken versehen und man sieht dann schön die einzelnen Daten. Erstes Byte 10011111 = Befehl
Programm selber auf die Beine zu stellen. Du brauchst definitiv viel mehr Übung im Programmieren in C. :( Ich kann dir nicht jede einzelne Zeile Code immer wieder erklären. Du solltest dir schon selber erst mal genug Programmierkenntnisse in C aneignen, damit du überhaupt verstehst, wie man in C programmiert
-
Thread
I2C Signal wird nicht fertig gesendet
Hallo Leute, Ich nutze einen PIC24FJ128GB204 als Master und möchte eine I2C- Verbindung zu einem FT200XD (I2C zu USB) aufbauen. Die Verbindung kann auch aufgebaut werden. aber nach einigen Malen "hängt" der Controller sich beim Senden der Adresse bzw. des Lese/schreib Bits
schreibe die Nummer des Input in die Variable: actOutputPort } // Setze die einzelnen Muliplexerbausteine, je nach Configuration setGates(); //errorHandling(errorNumber); } // Start der USB Abfrage // es geht
-
Thread
grafische Flüssigkristallanzeige schnell löschen
noch ~200k for (int i = 0; i < 5227; i+=2) { P4OUT=0; CD_H; // (* C/D = H (ctrl) *) P5OUT &=~(BIT2 + BIT3); //WR = L; CE = L P5OUT=0x0F; //alles H P4OUT=d; CD_H; // (* C/D = H (ctrl) *) P5OUT &=~(BIT2 + BIT3); //WR = L; CE = L P5OUT=0x0F; //alles H P4OUT=0; CD_H; // (* C/D = H (ctrl) *) P5OUT &=~(BIT2 + BIT3); //WR = L; CE = L P5OUT
-
Thread
Mikrocontroller Einstieg
zwischen C++, C, (hier weitere Hochsprachen einsetzen) und Assembler? Was laesst dich also glauben, dass C++ das Seligmachende ist? Gerade die einfachen Bit- (aka Gatteroperationen) werden von manchen Controllern
> Instruktionen wenn man von den wenigen Doppeltaktinstruktionen absieht Leider kann so eine einzelne 8-Bit-Instruktion nicht so viel. Die ARMs können in einem einzelnen Takt mehr machen. Gerhard O. schrieb im Beitrag #7799095: > daß die größeren Brüder, w.z.B. bestimmte Typen der STM32 Familie
-
Thread
Temperaturüberwachung mittels Linux PC
im Ösiland. Der DS2405 ist vom Preis her ja nicht viel günstiger als der DS2408 mit 8-bit. mfg
DS9097 ist nur ein Stecker mit 2 Transistoren, also vollkommen passiv. Die Software muß daher jedes einzelne Bit zu Fuß machen. Je nach Meßrate kann das schon ne merkbare CPU-Last sein. D.h. die Stromaufnahme des Linux-PC kann meßbar höher sein, als im Leerlauf. Das Abfragen der Pumpe per Handshakeleitung
-
Thread
Tutorial für _sauberen_ C-Code
"XXX.h" satt in die "XXX.c" gehauen. > Auch hier gilt: So lokal wie möglich Ist schon klar, daß sowas in der main.c nix zu suchen hat. Ich will die XXX.h und XXX.c woanders nochmal verwenden. Danke für das Schlagwort
@Sven: ich kenne (für C) nur splint - was gibt es denn noch?
-
Thread
2 Einsteigerfragen - Arithmetik & Frequenz
verstanden habe, Ist ganz einfach: Schau ins Datenblatt. Bei jedem Register steht dabei, wie die einzelnen Bits heissen. Du willst eines dieser Bits auf 1 setzen? Dann führe es mit einem (1<<Bitnamen) Ausdruck auf. Du brauchst nichts rechnen, du brauchst keine Bits zählen.
Fehler > ohne Compiler-Warnung. Stimmt, das wird deutlich übersichtlicher wenn man die Namen des BIT's da hat. Ich denke mal wenn man länger mit uC's arbeitet (bin jetzt 3 Tage dabei), dann weiß man irgendwann auch so ungefähr (und vor allen Dingen die "wichtigsten") was diese Bezeichnungen bedeuten
-
Thread
AVR GCC Tutorial
Bitfeld RAM sparen, das Programm aber würde größer und langsamer werden. Der "Codevision AVR" - ein C-Compiler - kann bei bei Variablen vom Typ bool einzelne Bits in dafür vorgesehenden CPU-Registern setzen. Das geht sogar eher schneller als ein normaler RAM Zugriff und verbraucht überhaupt kein RAM
dem variablen angelegt, wobei im Tutorial eben nur unsigned dran steht, konnte ich hier eben die 8 Bit verteilen und dann war gut. Also wenn ich jetzt auf die schnelle 20 mal je 2 Bit bräuchte, die ich WÄHREND dem Programm nach 0 ... 3 Abfrage, wie mach ich dies dann am besten? Grüße
-
Thread
geschachtelte if Abfrage auf AVR Pins
be s. schrieb im Beitrag #4418155: > Das kann man z.B. für folgendes Verwenden: > [c]if((x != NULL) && (*x == 123)) {}[/c] > So ist sichergestellt, dass, falls x gleich NULL ist, der Zeiger nicht > dereferenziert wird. Das stimmt! Die "Einzelbit-Abfrage" sollte wegen den volatilen
} [/c] das wird so für den gewünschten Zweck nicht funktionieren, denn das Ergebnis der UND-Verknüpfung zwichen PINx und Maske ist immer dann ungleich Null wenn *eines* der Bits in der Maske HIGH ist. Es
-
Thread
Assembler-Code - STK500 - Codeverbesserungsvorschläge :)
Man kann auch einzelne Bits testen, bzw setzen und löschen. http://www.mikrocontroller.net/topic/15116 cpi r16, 0b11111110;vergleiche Tasterkombination mit NUR Taster 0 gedrückt Da gibt es einen Befehl: sbrs
klein an, und natürlich ist simple LEDs an und aus machen nicht DAAAAS Metier wo man unbedingt nen µC braucht, aber wie gesagt, irgendwomit muss man ja anfangen. und nun zu deinem Code. Ich würde in deiner Loop direkt abfragen, ob auch beide Tasten gedrückt sind. Also quasi so: [avrasm] loop:
-
Thread
LCD 202A Conrad und Atmega 8
komfortabler als String lcd_string("Hello World!"); while(1) { } return 0; } [/c] lcd_routines.c [c] // Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus // http://www.mikrocontroller.net/articles/HD44780 // http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Bitmuster übertragen for ( uint8_t i=0; i<8; i++ ) { lcd_data( data[i] ); } } [/c] lcd_routines.h [c] // Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus // http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung // #ifndef LCD_ROUTINES_H
-
Thread
Bytes senden mi Visual Basic 2005 Express
Kofler, Visual Basic 2005, Addison-Wesley Die Denkweise ist in VB komplett anders als bei einem µC. Daran musst Du Dich (leider) gewöhnen. Ein Beispiel: Wenn Du bei Deinem µC ein Integer definierst [pre] int Zahl; [/pre] dann sind das einfach 16 auf einander folgende Bits, die irgendwo
() '.BaudRate = Deine Baud Rate '.Parity = Deine Parity '.StopBits = Deine StopBits '.DataBits = Deine DataBits .DiscardNull = False .Handshake = Handshake.None .ParityReplace = 63 ' "?" .ReceivedBytesThreshold
-
Thread
mehrere ADC und UART
[c]void ADC_Init(void) { ... ADMUX = (1<<REFS0);[/c] [c]int Read_ADC1() { ... ADMUX = (1<<MUX0);[/c] x = 1; x = 2; Welchen Wert hat x nach diesen beiden Zeilen?
Ausgabe]] genau so an: [C] /* ADC Einzelmessung */ uint16_t ADC_Read( uint8_t channel ) { // Kanal waehlen, ohne andere Bits zu beeinflußen ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F); ... [/C] und weist nicht
-
Thread
Erklärung des Programmes/der Software
Maximilian Thümmel schrieb im Beitrag #4015233: > kann mir jemand die einzelnen Befehle von meinem Programm erklären? Quellcodes enden nicht mit *.png! Du kannst C-Code hier einbinden: [pre] [c] C-Code [/c] [/pre] > kann mir jemand die einzelnen Befehle von meinem
[c]=[/c] Zuweisung, weißt der Variable links davon den Wert rechts zu [c]for(;;)[/c] For Schleife, in diesem Fall endlos { [c]if()[/c] If Abfrage: Führt den Folgendem Block bzw. Zeile nur aus wenn
-
Thread
AVR: Wetterinformationen über DCF77 Gesperrt
12 Bit ADC, man misst die Spannung/Strohmaufnahme des uC. Dazu reduziert man auch die Entstoerkondensatoren, sowie fuerht ein Wiederstand dazwischen ein. Nun fuetter man den uC mit source-dateien, und
Abdul: Habe mal einen Test gemacht: Hab ein 85bit wort genommen und konsequent alles möglichen xor/and/or/shift/etc operationen in abhängigkeit von konstanten im rahmen 0-32 sowie in abhängigkeit von den anderen bits gemacht (also jedem einzelnen bit
-
Thread
Intex SPA Whirlpool automatisieren
: Digit 4 Zyklus 5: LEDs Zyklus 6. Tastenabfrage Für die Tastenabfrage werden sie wohl ein einzelnes Bit durch die Schieberegister schieben und mit jedem Takt eine der Tasten abfragen. Wenn ich dazu komme, zeichne ich die Kommunikation am WE mal mit einem Logic-Analyser auf.
vom uC > und mein Hardwaregrab ist überflüssig. Genau, das ist auch mein Ziel. Ich will mit einem ESP32 die Datenleitungen auftrennen und einzeln bedienen. Damit kann ich dann auf der Anzeige auch etwas
-
Thread
MC68000 mit uC "verheiraten"
eigenen Protokoll benutzen, man kann aber auch auf die Portregister direkt zugreifen und die Leitungen einzeln per Software ziehen (ala Druckerport beim PC). Man kann seriell also so schnell fahren, wie man per Bit-Banging mit der 68k zusammenbringt. (Die 2 Datenleitungen sind Open-Collector Ausgänge mit
geeigneten I/O-Baustein wie beispielsweise eine UART in den genannten Adressraum einblenden und den µC damit verbinden. Allerdings solltest Du dem I/O-Baustein auch eine Möglichkeit spendieren, auf der 68K-Seite Interrupts auszulösen, da sonst der 68k die Schnittstelle zyklisch darauf abfragen müsste,
-
Thread
Bandbreite Bluetooth mouse
Toucheinheit von Displays. Und mit denen fällt es sehr leicht, Touch-Ereignisse zu generieren, die die 16Bit tatsächlich brauchen. 2) Mäuse mit besonders hoher physischer Auflösung. Auch bei denen kann es sehr leicht passieren, dass die Änderung zwischen zwei Abfragen nicht in 8Bit passen. 3) (last
z.B. 8000dpi. 10cm (also ca. 4 inch) in 100ms gibt damit also 32000 Punkte, die in 10 bis 100 Abfragen zu melden sind. Also zwischen 320 und 3200 Punkte als ∂x in jeder Meldung. Jetzt klar, warum man da 12 oder 16bit benötigt?
-
Thread
Linux ist endlich vom C89 Standard weg
char` bei C++ >= c++20: es findet eine Initialisierung mit den unteren N Bits der rhs statt und die werden als N-Bit 2er-Komplement interpretiert (alle Ganzzahltypen sind 2er-Komplement seit C++20) Die nä.
eine Integralpromotion auf `int` (das kann je nach data-model 16, 32 oder 64 Bit sein) und dann kann ein Overflow stattfinden (ggf. erst bei 2^64-1). Bei der Zuweisung gilt dann dasselbe wie oben, also bei C / C++ < c++20 ist es implementation-defined, ab c++20 dann eine N-Bit-Konvertierung
-
Thread
Problem mit Interrupts
sinnvoll. Insofern wird das mit Unterbrechungen durch ISR's, die dann eine eigene I²C-Kommunikation starten, nicht funktionieren. Die allereinfachste Lösung dürfte sein, mehrere getrennte I²C-Busse einzusetzen. Die Abfrage der Eingabeelemente dürfte ja nicht zeitkritisch sein, da reicht
erfassen -Messwert A in ASCII umwandeln -Messwert B erfassen -Messwert B in ASCII umwandeln -Messwert C erfassen -Messwert C kontrolieren -Kontrolzustände abfragen -Kontrolzustände auswerten -Eingabeelemente: auswerten (Werden durch Timer-Interrupt aktualisiert) -Eingabeelemente: Aktionen ausführen
-
Thread
Problem mit loop_until_bit_is_clear
get_key_short(1<<KEY_UP))); getestet, aber leider passiert dann nichts.. Ich nutze die Universelle Tasten Abfrage von peter. Danke :) Danke für eure hilfe.
brauchst eigentlich gar keine /externen/ Pullups, wenn du die /internen/ Pullups der entsprechenden uC-Pins einschaltest...
-
Thread
Tastenfeld mit 25 Tasten auslesen
werden können. Werden 2 oder mehr Tasten gleichzeitig gedrückt erkennt der uC das nicht. Ich würde es digital lösen. Der HT16K33 kann 39 Tasten abfragen und wird über I2C angesprochen, also 2 Ports vom uC. Der Chip ist allerdings nur für diese Anwendung etwas Overdressed
simpelste? Wahrscheinlich Hardware so lassen, mit dem HT16K33 24 Taste in der vorhandenen 3x8 Matrix abfragen und die Taste "E" über einen einzelnen GPIO?
-
Thread
Rotary-Encoder mit Arduino als Konzentrator
der Pin Eingang oder Ausgang, und dann kann man den Pin als Variable angeben, die muss für das Abfragen des Registers erst umgerechnet werden (Pinnummer zu Register-Speicherstelle). "Arduinosprache" ist einfach ineffizient, wenn Du es schnell willst, musst Du auf C, Pascal, Assembler zurückgreifen
das Gegenteil einer Erweiterung. > "C/C++" gibt es nicht. Ich betrachte C++ als objektorientierten Zusatz zur Sprache C. Für mich enthält C++ die Sprache C fast vollständig, deswegen halte ich "C/C++" für einen gültigen Begriff.