-
Thread
Physikprojekte
. Das Lambert-Beersche Gesetz lautet ja: I = I0 * exp(-k * c * x) Der Faktor k hängt von der jeweiligen gelösten Substanz und natürlich auch von der Wellenlänge lambda ab. Ich werde aber nur einen einzelnen Laser verwenden. Habe folgende Laserwellenlängen zur
man eine Audioaufnahme machen und diese dann mit einer Frequenzspektrumsoftware analysieren. Die einzelnen Töne sollten einen gleichen Frequenzabstand von c / (2*L) haben... Mehr Informationen: https://stoppi-homemade-physics.de/freihandversuche/
-
Thread
bitte um hilfe bei switch case aufbau
Für die Abfrage einzelner Bits ist switch/case nicht geeignet, da die Nachbarbits mit eingehen. Außerdem ist kein Mensch in der Lage, aus CPU-Sicht 2 Tasten gleichzeitig zu drücken (innerhalb 50ns) oder loszulassen
Du hast aber folgende situation: [c] if( x & (1<<0) ){ // ist bit 1 gesetzt? } if( x & ( (1<<1) | (1<<2) ) ){ // ist bit 2 oder bit 3 gesetzt? } [/c] Das kann man nicht mit switch case abbilden, denn es ist kein Vergleich ob ein
-
Thread
Brauche Uhr/Zähler/Generator mit Frameanzeige und 100stel Sekunden, RS232 Anschluß
anzuzeigen, nur ein Segment bzw. zwei nicht benachbarte, also z.B. Zi Segment 0 a a 1 b b 2 c c 3 d d 4 e e 5 g f 6 c g 7 d a+d 8 e b+f 9 f c+e
Das sollte eigentlich nicht möglich sein, denn die Eingabe wird geprüft. Siehe cmd_terminal.c, cmd_cal_fcpu() >In der Software ist eine Abfrage drin, die eigentlich nur +/- 1000 ppm >zulässt, aber ... Eben! >Falk, welches ist die älteste Software, mit der man das Projekt >compilieren
-
Thread
Protokoll Level zusammen mit Tasks, brauche hilfe
definiert wird). Und da bei RS485 alle Kommunikation sowieso vom Master initiert wird, ist diese Abfrage nicht so sinnvoll. Es würde eher auf einem Slave zutreffen. Aber auch da würde ich nicht auf das Parity-bit schalten.
alle Kommunikation sowieso vom Master initiert wird, >> ist diese Abfrage nicht so sinnvoll. Es würde eher auf einem Slave >> zutreffen. Aber auch da würde ich nicht auf das Parity-bit schalten. > > Das Protokoll soll unabhängig vom Master wie auch vom Slave > funktionieren
-
Thread
"Eigenes USB-Gerät" für eigene Software
fangen doch die Probleme wieder an - Angefangen bei den Treibern für die einzelnen Systeme (Oder das man überhaupt einen Treiber braucht!) darüber das man nichtmal eben flexibel nen anderes System (vom µC über nen Oszi hin zum Pc) anstöbseln kann, und aufgehört das man ja das PC
richtigen Ports - da gebe ich mich geschlagen, das ist korrekt. Ich habe mir da aber angewöhnt ne "Abfrage" in meine Programmierung mit "einzubauen" - bei Auflisten der einzelnen Ports auf der Rechnerseite wird, sofern möglich, jeder Port geöffnet - eine Zeichenfolge geschicht, welcher (wenn der µC an
-
Thread
LED Matrix | Atmega8 | C
= ~(1 << OE_PIN); // enable latches again col = (col << 1) & 0xFE; // lets wander through the bits and make sure of a clear LSB row++; // prepare the next scan // limit the matrix to 7 columns if (col == 0x80) { col = 0x01; row = 0; } } [/c] Der Mega 8 hat hier viel zu wenig
ist 0. also sollte die Bedingung heissen: [c] if (col == 0) { col = 0x02; row = 0; } [/c] Es steht dir auch frei, row als Abbruchbedingung zu nehmen, dann würdest du auf 'if (row > 5)' abfragen. Übrigens musst du natürlich den Timer
-
Thread
AVR als I2C-Slave macht Probleme
Ich bin auf ein seltsames Problem gestoßen: Ich möchte, dass diese beiden Geräte per I2C kommunizieren: - Raspberry Pi Zero als Master, 2 GPIOs bit-banged - ATmega328P (3.3V) als Slave mit Hardware-I2C Sonst hängt niemand am Bus (abgesehen vom LA). Ich habe externe 2,4-kOhm-Widerstände
Jobst M. schrieb im Beitrag #4661868: > Zeig mir bitte mal die richtige Stelle. [c] • Bit 7 – TWINT: TWI Interrupt Flag This bit is set by hardware when the TWI has finished its current job and expects application software response. If the I-bit in SREG and TWIE in TWCR are set,
-
Thread
Pins und Bits verknüpfen
Hallo, ich fange gerade mit C an und versuche einzelne Pins meines Atmega8 einem Bit der Ausgabevariable zuzuordnen. der folgende Code macht komische Sachen, wo ist mein Denkfehler? [code] DDRC = (1 << DDRC1) |(0 << DDRC2) |
PIND >> pPin) & 1) ^ vVar) & (1 << vBit)) #define mapB(vVar, pPin, vBit) { vVar ^= chkB(vVar, pPin, vBit); } #define mapC(vVar, pPin, vBit) { vVar ^= chkC(vVar, pPin, vBit); } #define mapD(vVar, pPin, vBit) { vVar ^= chkD(vVar, pPin,
-
Thread
Visual Studio C# Serielle Daten anzeigen /verstehe befehle nicht
Lars schrieb im Beitrag #4656066: > Finde ich allerdings nicht sooo toll. Ich würde die abfrage pollen ist > dann auch zu Linux kompatibel :) Sein Titel: Visual Studio C# Serielle Daten anzeigen /verstehe befehle nicht Merkste was? Ausserdem, den Serial Port pollen machen wirklich
und zwar mit [c] theSerialPort.DataReceived -= new serialDataReceivedEventHandler(DataReceived); theSerialPort.PinChanged -= new SerialPinChangedEventHandler(PinChanged); [/c] Mit der Switch Case Abfrage wird,
-
Thread
3-Kanäle PWM messen
anfänglich auch gedacht, der > Vorteil davon wäre: Ich könnte natürlich mehr als 3 Kanäle einfach > abfragen. Das halte ich nun wieder für dämlich. Das skaliert nämlich nicht, wenn du für jeden weiteren Kanal einen Pin um µC brauchst. Die Hardware- Variante von oben braucht lediglich weitere drei Bauteile
Langsamen schon mit der Armbanduhr schief gehen wird, dann geht es /sicher/ auch im Schnellen mit dem uC-Timer schief. Das merkt man natürlich nicht sofort (in der Anwendung /hier/ mit einem exklusiven Timer für die Aufgabe gar nicht), aber einzelne Takte summieren sich auf. Und wenn man mehrere solcher
-
Thread
SD Karte (SDIO) Multi Block Operationen Ende
) != MCI_FUNC_OK ) { return MCI_FUNC_FAILED; } return MCI_FUNC_OK; } [/c]
Angesichts diverser Leerschleifen, die moderne Compiler wegoptimieren: [c] for ( i = 0; i < 0x10; i++ ); [/c] würde ich von oben gepostetem Code nix halten. Ich denke der funktioniert nur wenn jeweils ein einzelner Block gelesen oder geschrieben wird - was übrigens gängige
-
Thread
Effizient Datum und Uhrzeit vergleichen
effizienteste Lösung. Komme nur nicht mit dem Little Endian Format zurecht. - Verschachtelte If Abfrage (zu viele Ifs und scheint mir ineffizient) - per Schiebeoperator die Elemente der Struktur im richtigen Abstand aneinanderhängen und die entstehende 64Bit Zahl dann miteinander vergleichen. (auch
oder irgend ein anderer Startpunkt genommen wird, ist eigentlich egal. Ich benutze schlichtweg nen 32 Bit Zähler für die Sekunden seit dem 1.1.2000 und das reicht für die Lebenszeit eines durchschnittlichen Gerätes allemal aus. Und wenn es um Zeitabläufe im µC geht, dann werden die Millisekunden ab Mitternacht
-
Thread
[xMega] FatFs: Erklärung zufällig unregelmäßige Speicherzeiten?
die 10MByte/sec (bei Speed Class 10) und je > nach Karte auch mehr. Aber nicht mit einem AVR 8-Bit µC. Außerdem braucht der OP sicher nicht mehr als ein paar KByte/sec. Dr. Sommer schrieb im Beitrag #4652351: > * SD Bus ("SDIO") statt SPI verwenden, denn nur dann gilt die Speed > class Da
genau in meinem Text sage. > Jim M. schrieb im Beitrag #4652410: >> Aber nicht mit einem AVR 8-Bit µC. > Wer sowas verwendet ist eh selbst schuld :) Ich nehme an, Du bist Hobbybastler und kein professioneller Elektronikentwickler. Ich danke allen für die teils sehr hilfreichen Kommentare und
-
Thread
Das Ende von 8bit?
32-Bit Hauptprozessoren, d.h. auf einen 32-bit µC kommen mehrere 8-bit. 6) Auch wenn der Preis der Cortex-M0 jetzt schon oft den von 8-bit µC unterbietet, ist oft die Stückzahl nicht so groß, dass ich a)
einen µC auf MIPS Basis sehr sexy. So viel netter ist ARM da nicht. > PS: Ich brauche aktuell einen PIC (gerne 8Bit) der >= 5 Touch-Buttons > abfragen kann und mit einer CR2032 versorgt mind. 1 Jahr lang
-
Thread
Neue Library: RFID Desfire EV1 Karten mit Arduino programmieren
, falls eine PCB Firma (wie z.B. die in Ungarn) die Boards herstellt und bestückt und auf Wunsch einzeln verschickt. Vielleicht lässt sich dafür ja eine Firma begeistern, die die Infrastruktur der Produktion und des Versands schon hat.
übernimmst. > Die Funktion "CLEAR" und auch "RESTORE" sollten meiner Meinung nach eine > weitere Abfrage "are you sure doing this? yes/no" enthalten Bei CLEAR stimme ich dir zu. Aber RESTORE löscht nur eine einzelne Karte, die du genau so schnell wieder zufügen kannst, wie du sie gelöscht hast,
-
Thread
C Katastrophen.
: int a[10]; Dann wird fleißig über diese Arraygrenze hinaus in der Gegend rumgeschrieben: a [c] = 0; Natülich zerlegt das in C den Speicherinhalt. Das ist aber ein Problem des C-Programmierers, der weiß nämlich, daß das passiert und wenn es nicht passieren darf, wird er eine Abfrage einbauen
c { gcc -Wall -fbounds-check -fstack-protector -D_FORTIFY_SOURCE=2 -I. -O5 \ -D_GNU_SOURCE -D__SMP__ -DLINUX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS \ -D_REENTRANT -std=gnu99 -lpthread -lncurses -
-
Thread
RC-Empfänger zu Arduino - die 100ste Variante?
Im Allgemeinen ist es so, das die einzelnen PWM signale durch den Sender auch hintereinander gesendet und im Empfänger auseinander gewutstelt werden. Früher (in zeiten analoger Fernsteuerungen) wurde der erste Kanal dadurch idendifiziert
unbrauchbar, die Ausgänge musst du manuell ein- und ausschalten. In Assembler oder sogar in normalem C kein Problem, aber mit Arduino overhead ist es mehr als fraglich...
-
Thread
Wie Software mit Stift und Papier entwerfen?
Zusammenspiel der einzelnen Softwareblöcke. Dies zwingt einen dabei auch nicht Objektorientiert zu programmieren, man kann genauso die Implementation in C erledigen. Aber auch in UML kann man es zu weit treiben, oftmals genügt
>> Mit Sicherheit nicht. > > Ich sehe das Problem nicht. Nehmen wir an, man programmiert einen µC. > Zuerst erstellt man Klassen für die einzelnen Komponenten. Danach kann > man diese je nach Bedarf zum Beispiel in der Main Funktion ansteuern. Genau umgekehrt wird eine Schuh daraus. Die
-
Thread
OOP - für was in aller Welt soll denn das gut sein?
sein kann. Mit C-Strings würde man einfach schreiben: [c] for(char *it = s; *it; it++) { [/c] Aber auch mit C++-Strings geht es einfacher, sogar noch einacher als in C: [c] for (auto c: s) { [/c]
C. Ich finde jedenfalls ein [C] string c = a + b; [/C] wesentlich komfortabler (und weniger fehleranfällig) als ein [C] char* c = malloc(strlen(a) + strlen(b) + 1); strcpy(c, a); strcat(c, b);
-
Thread
Suche Digital Poti logaritmisch
Klar, DGND und AGND sind verbunden. Es läuft jetzt! Im Headerfile der Lib war [c] const static unsigned int resolution = resolution_7bit; [/c] definiert. Das MCP41HV51 ist aber ein 8 bit Poti. -> folglich erreichte ich bei 100% nur Mittelstellung, da ich nur 127 der 256 steps des Potis ausgenutzt habe... Ändern der Zeile in: [c] const static unsigned int resolution = resolution_8bit; [/c] lösst das Problem! Gruß Alex
-
Thread
[AVR] Zwischen einzelnen PCINT-Quellen unterscheiden
Note schrieb im Beitrag #4614635: [c] > ISR(PCINT1_vect) > { > // Vergleich alter/neuer Portzustand > uint8_t changedBits; > > changedBits = PINB^portOldState; > portOldState = PINB; [/c] Du hast definitiv das PCINT-Problem
besser? ISR(PCINT1_vect) { // Vergleich alter/neuer Portzustand uint8_t changedBits; uint8_t changedBitsBuffer; changedBitsBuffer = PINB; changedBits = changedBitsBuffer^portHistory; portHistory = changedBitsBuffer; // die restlichen Abfragen }
-
Thread
Welchen Bus nehmen? Smart Home / Temperaturmessung und mehr
und auf dem CAN ausgibt. So kannst du mit 2-3 Empfangsstationen alle Temperatursensoren im Haus abfragen. 433-Mhz-Temperaturfühler gibts wie Sand am Meer. Ansonsten kannst du die die mit einem uC auch selber basteln
Versorgung mit Kleinspannung (10-40V). Slew rate limited Treiber, max. 250kBaud. Noch sicherer sind die 115kBit Typen. Notfalls noch externe Bauteile für noch langsamere Anstiegszeiten und Datenraten vorsehen. Die Kabellängen der einzelnen Segmente sind zwar nicht angegeben, Chancen stehen aber gut, dass es sogar
-
Thread
MyAVR Port Expander Ansteuerung
(in Pseudo Sprache), da du nicht geschrieben hast, welche Sprache benutzt wird: [c] Do I2C_Start() I2C_Write(Adress) I2C_Write(6) // PortA CONFIG I2C_Write(0b00001111) // bits 7-4 AUSGANG, 3-0 EINGANG I2C_Stop() Wert = 0x70 // Setze bits 4-6 I2C_Start() I2C_Write(Adress) I2C_Write(2) // PORTA I2C_Write(Wert) I2C_Stop() Delay(1000) // 1000ms (1sec) warten Wert = Wert AND 0x30 // Jetzt wird bit 6
-
Thread
Mikrocontroller Einstieg (AVR,PIC)
8 bit ist. Wie das nun genannt wird, ist mir ja relativ egal. Und mit C ist das eh automatisch im Hintergrund. Die C-Eignung hatte ich oben ja schonmal erwähnt. Ich programmiere seit ca 8 Jahren PICs mit
nicht schwer, _weil_ ich keinen anderen kannte ;) Ich habe später mal ASM für einen (ich glaube) 80C535 gelernt. Was mich da z.B. gestört hat war, dass man zwar einen 1Bit-Speicherbereich hatte, um einzelne Bits abzulegen, aber ich konnte nicht (wie von PIC-ASM gewohnt) einzelne Bits jedes beliebigen
-
Thread
Assembler Programm zu umständlich
Yalu X. schrieb im Beitrag #4609290: > Dazu kommt ggf. noch der CRT0-Startcode aus der C-Bibliothek. Muss ja, wegen Stack. [c] PORTC = (PORTC & 0x0f) | i; // Ausgabe von i auf PORTC[0..3] [/c] Die unteren 4 bits sollen ausgeblendet werden, oder ? [c] PORTC = (PORTC & 0xf0) | i; // Ausgabe von i auf PORTC[0..3] [/c] Aber: [c] subi r28,lo8(-(-1)) sbrs r28,7 [/c] LOL, das mit 7-tem bit habe ich lange nicht gesehen und gerade heute in einem anderen Thread daruber diskutiert.
-
Thread
STM32: Wie funktioniert diese Entprellung?
verallgemeinern? Ich würde an die Funktion den Pin und Port übergeben (z.B. PD2) und dort eine switch-case Abfrage mit allen möglichen Pins. In dieser Abfrage dann den jeweiligen Pin einlesen. Peter D. schrieb im Beitrag #4608892: > Z.B. reicht ein 2Bit-Zähler bei ~10ms > Timerintervall aus. Dann kann
Stellen zugreifen? Falls du meinst, wie ich in main() darauf zugreife, dann mit einer solchen Abfrage (maskierte Abfrage): [c] if (Pin0_state & 0x8000) { // Tastendruck lang, tu etwas } else if (Pin0_state & 0x4000) { // Tastendruck normal, tu etwas } [/c] oder so (bit Abfrage
-
Thread
"Guter Programmierstil" VHDL
Ich sehe records ähnlich wie Pointer und C. Wenn man sie richtig einsetzt sind sie sinnvoll. Aber viele verkünzeln sich auch darin und meinen es wäre eine Eierlegende Wollmilchau. Ich hatte mal nen Kollegen der hat alles in Records gepackt
einen* Record zu packen, anders wie in einer MyHDL-Klasse. Andersrum kann man aber gerade in einem SoC z.B. alle Register/Bits wunderbar in einen 'status' (read) und 'control'-Bus aufteilen. Das generiert sich auch noch relativ elegant aus einer SoC-Beschreibung und ist gerade für komplexe Sachen mit
-
Thread
Atemega328p - schaffst du das?
. für die bluetoothkompatible Baudraten. c-hater schrieb im Beitrag #4638046: > Der Trick ist: betreibe die UART als SPI-Master bei deutlich > höherer Bitrate und benutze mehrere ihrer Bits (wobei "mehrere" nach > einem sinnvollen Muster um +-1 variiert) für ein effektives Bit auf der > Leitung interessant. c-hater schrieb im Beitrag #4638046: > Ziemlicher Kinderkram für Leute, die wirklich programmieren können, aber > für FanBoys natürlich... Das erste Mal, dass
-
Thread
mit Arduino 2 parallele Prozesse steuern
den Text somit kürzen und übersichtlicher machen kann. Darum gehts erstmal nicht. Mir gefällt die einzelne Abfage in jedem Ablauf nicht. Wie kann ich die Abfrage vereinfachen? Mit Unterprogrammen? const int Taste1 = 2; const int Taste2 = 3; const int Taste3 = 4; const int Taste4 = 5; const int Taste5
; ... } [/c]
-
Thread
Root-Paßwort für Raspberry Pi 3
Antwort ;-) /Darauf/ erwartest Du eine "fachkundige Antwort"? Na gut: [code] sheeva@m1:~> python -c "print 'LOL! ' * 8" [/code]
verschiedene Lösungen für das gleiche Problem parallel wichtig: https://de.wikipedia.org/wiki/Diversit%C3%A4t_%28Technik%29 und, etwas weiter gefasst, https://de.wikipedia.org/wiki/Biodiversit%C3%A4t Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.l02.de
-
Thread
DS18B20 Problem Telfonkabel 4 polig
Man sollte daher den Leseslot von 15µs auf 10µs verkürzen und an die Bitzeit noch 5µs ranhängen. [c] static uint8_t w1_bit_io( uint8_t b ) { ATOMIC_BLOCK(ATOMIC_FORCEON){ W1_DDR = 1; _delay_us( 1 ); if( b ) // send low bit W1_DDR = 0; _delay_us( 9 ); if( W1_PIN == 0 ) // receive bit b = 0; } _delay_us( 50 ); W1_DDR = 0; if( b == 0 ) _delay_us( 5 ); return b; } [/c]
-
Thread
Atmega8 und I2C-Display startet nicht
Byte das am LCD ansteht nur durch Ver-odern > und Ver-undung geändert werden soll. Ok. Also so: [c] void I2C_Write_4Bit_Set(int cmd) { int Data; //Low-Nibble Data=((cmd&0b00001111)<<4); Data|=(1<<2)|(1<<3); //Led=1,E=1 I2C_Send_Data(Data,2); Data&=~(1<<2); //E=0 I2C_Send_Data(Data,
data) { I2C_Write_4Bit_Ram(data); } void LCD_Print_String(const char *s) { while(*s) LCD_Print_Char(*s++); } int main(void) { LCD_Print_String("1234"); } [/c] muss funktionieren, es sei denn,
-
Thread
I2C und STM8
(uint8_t)result; I2C->CCRH = (uint8_t)result & 0x0F; //first 4 bits of CCR-value I2C->OARL = 0xA0; //own Address I2C->OARH = 0x40; //6th bit must be set by software I2C->CR1 = 0x01; //enable peripheral [/
[/c] "Entscheident" hier war die Abfrage, ob der I2C-Bus die Startaktion schon erkannt hat !! while (!(I2C_SR1 & I2C_SR1_SB));
-
Thread
NRF24L01 und Atmega328P
. schrieb im Beitrag #4616499: > die globale Variable steht jetzt nur mehr in der Datei <wl_modul.c>.
habe ich auch noch mit dem Datenblatt. Dort ist ein State-Diagramm eingezeichnet, wie ich in die einzelnen States kommen kann. In der nrf24.c-Datei steht unter nrf24_config(): [code] void nrf24_config(uint8_t channel, uint8_t pay_length)//(2,4) { /* Use static payload length ... */ payload_len
-
Thread
Digitales Display und Keyboard mit PC verbinden
c-hater schrieb im Beitrag #4594892: > OMG, dir fehlen massiv sämtliche Grundlagen. > > Konkret: Abfrage einer Matrix-Tastatur. Du findest das Prinzip an > hundertausend Stellen im INet erklärt.
Spannungswandler? Oder an sendval, was ja bei einem A gleich "01000001" sein müsste. Wenn laut Datenblatt das C-Bit (Bit 7) eine 1 ist, kommt es nicht zur Anzeige des Wertes auf dem Display sondern es wird eine Controlfunktion angesteuert. (Datenblatt Table 1)
-
Thread
RFM69 - Beispiel für Initialisierung gesucht
initialisieren (auch nach mehreren Abenden Datenblattstudim). Was schon geht: SPI-Kommunikation vom µC zu den beiden Modulen, ich kann Register schreiben und deren Wert auch wieder abfragen. Was ich suche: Eine Sequenz an Register-Initialisierungen für ein Minimalbeispiel, z.B. sowas: Reg 0x01
hier schon mal angeschaut: https://www.mikrocontroller.net/topic/332579#4082861 ? In der RFM69.c gibt es eine Funktion rfm_init(), in der die entsprechenden Kommandos stehen. Bei Rückfragen zu den einzelnen Einstellungen, bin ich gerne bereit zu helfen.
-
Thread
DS18S20 wird vom ATmega8 nicht gefunden
Die Rückwertegabe sieht so aus, wie ich es in meiner Frage erklärt habe also FFFF.... 0000.... 127,5°C.
******* '* ist ein Testmodul für Digital Temperatur-Sensoren * '* [DS18x20] DS18S20 ist ein 9 Bit Family Adr &H10 * '* und DS18B20 ein 12 Bit Family Adr &H28 * '* somit große Unterschiede bei der "Empfindlichkeit" * '* Das lesen der Bit's ist somit auch Unterschiedlich.
-
Thread
array auf nullen überprüfen
anderen weg? Oder wäre es besser, einen integer zu nehmen und jeden Sensor durch Bitmanipulation ein einzelnes Bit beschreiben zu lassen? Dann wäre die Überprüfung ja if((variable & 0xFF) == 0xFF) wenn ja, haben alle geantwortet, wenn nein, müsste ich ebenfalls jedes Bit durchgehen, ob dieses 1 oder 0 ist
geht das bequem mit einer 8-Bit, oder 16-Bit-Variablen. Der zeiliche Vorteil ist minimal, bringt eher was bei knappem Speicher. Ablauf: - Antwort-Variable = 0 - Bei erfolgreicher Abfrage des jeweiligen Sensors addierst
-
Thread
IR-Schalter mit tiny 13
Projekt hinzufügen. Dann main.c mit Leben füllen, z.B. den Beispiel-Code von irmp-main-avr.c ins main.c kopieren. Als nächstes irmpconfig.h anpassen und den Pin eintragen, den Du verwenden willst. An der Stelle: [c]
mich noch interessieren. Wieviele Bytes brauchst Du zum Speichern und damit Wiedererkennen eines einzelnen Frames? [[IRMP]] braucht dafür konstant 5 Bytes - egal wieviele Bits der Frame hat (ich kenne welche mit bis zu 80 Bits/Frame) oder aus wievielen Frames sich ein Tastendruck zusammensetzt. Damit
-
Thread
10bit Wert => 4x 7 Segment
Spaltenbearbeitung im Editor. 0-1023 erst in binär umrechnen lassen und damit habe ich meinen Eingang der CASE Abfrage. Das Ergebnis habe ich mir aus Kontanten zusammen gebaut. [vhdl]c_null : std_logic_vector := "0000001"; -- low active LEDs c_eins : std_logic_vector := "1001111"; c_zwei : std_logic_vector := "0010010"; -- usw. CASE WHEN "0000000000" => s_leds <= c_null & c_null & c_null & c_null; WHEN "0000000001" => s_leds <= c_null & c_null & c_null & c_eins; -- usw. LED0 <= s_leds( 5 DOWNTO 0); LED1 <= s_leds( 6 DOWNTO 11); LED2 <= s_leds(12 DOWNTO
-
Thread
8 zu 3(1) zu 8 Multiplexen
Daten nicht weil sie zu langsam sind. Oder man nimmt etwas, das mit 1 oder 2 Signalen auskommt. I²C. 1-Wire Bus. UART. Oder irgendwas handgestricktes. Sobald man sich hier festgelegt hat, kann man über die Realisierung nachdenken. Aber nachdem wir hier in einem µC-Forum sind, würde wohl ein µC mit
Kabel gibt es zu günstigen Preisen überall zu kaufen. GND ist gemeinsam und jedes Relais wird einzeln über einen Schalter ein- und ausgeschaltet. In der Zwischenzeit etwas über uC lernen ;)
-
Thread
Adresse erkennen vom Slave mit USI
Hallo Für einen I2C Bus mit dem Master ATm1284p und einem Slave mit ATi 2313A mit USI verwende ich den Code von Martin Junghanns. Im Master erfolgt eine Abfrage nach dem Slave. Als Slave Adresse habe ich die 0x52 angegeben
#define sbi(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT))) // Set bit #define cbi(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT)))// Clear bit #define toggle(ADDRESS,BIT) ((ADDRESS) ^= (1<<BIT)) // Toggle bit #define bis(ADDRESS
-
Thread
2 Taster ein Kabel
hier erstmals in die Runde. Ok, das wörtliche PIN hat gefehlt, aber bei einem Port mit mehreren Bits ist die Aufgabe ohne Witz.
merken indem du es mal aufzeichnest und durchspielst. Und warum nicht? Spiel das mal durch. Abfrage Taster 1: GPIO2 als Ausgang auf Low, Pegel GPIO1 lesen Abfrage Taster 2: GPIO1 als Ausgang auf Low, Pegel GPIO2 lesen Das ganze nennt sich dann /Zeitmultiplex/
-
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
[C++] Paralleler Zugriff auf Variable und einige Fragen zu C++ <=> Homepage
Zeitpunkt die > selbe Variable beschreiben möchte? Wenn eine skalare "volatile" Variable maximal 32 Bits gross ist und nicht mit Gewalt misaligned wurde, dann sind einzelne lesende und schreibende Zugriffe des ARM im RasPI atomar. In dem Fall ist es möglich, die Variable ohne Mutex zu lesen. Voraussetzung
völlig unsynchronisiert. Dies würde ich auch gerne so > beibehalten. Wie lange dauert eine Abfrage aller Sensoren? Wenn die Antwort "weniger als 500 Millisekunden" ist, dann kannst Du Dir den ganzen Zinnober mit Multithreading, Synchronisierung etc. sparen. Und warum C++? Machst Du irgendwelche
-
Thread
Taschenrechner Selbstbau: Programmstrukturfrage
was aber kein großer Aufwand ist. Bisher gibt es für die Potenzierung nur die pow-Funktion (wie in C), die Fakultät fehlt ganz. Die Schwierigkeit deines Unterfangens wird aber in der Arithmetik mit der gewünschten Genauigkeit liegen, da beim GCC für den AVR selbst double-Werte nur 32 Bit breit
es für die > Potenzierung nur die pow-Funktion (wie in C), die Fakultät fehlt ganz. > Die Schwierigkeit deines Unterfangens wird aber in der Arithmetik mit > der gewünschten Genauigkeit liegen, da beim GCC für den AVR selbst > double-Werte nur 32 Bit breit
-
Thread
Datum vergleichen in Python
Datum, jetzt möchte ich vergleichen ob das feste Datum in Vergangenheit ist oder in Zukunft. [c] date = "01.04.2016" for j in date: if j <= time.strftime("%d.%m.%Y"): print ("j") if j >= time.strftime("%d.%m.%Y"): print ("n") [/c] Das gibt mir das
du mit "festes Datum"? > Das gibt mir das hier aus Du prüfst jedes Zeichen deines Strings einzeln gegen den kompletten String mit dem aktuellen Datum. Generell kannst du mit einem Stringvergleich das Datum nicht vergleichen - zumindest nicht in diesem Format. > Wie wäre das richtig? So wie
-
Thread
Bits nacheinander aus Maske lesen
den Wald grad nicht... Ich möchte gerne aus einer Bitmaske (0b10011110) - nacheinander die einzelnen Bits lesen und auf einen Pin ausgeben. Da komme ich quasi um eine if Abfrage ja nicht drum herum oder? Da geht es um eine Soft-I2C Anwendung die ich gerne schreiben würde. Da muss ja der SDA Pin
einfacher wenn ich als Grundvorraussetzung den Pegel von SDA immer auf 0 setze und dann je nachdem welcher Bit in der Maske gesetzt ist, den Pegel auf 1 setze oder eben nicht?! Also so: [c] uint8_t Maske = BitMaske; //Damit BitMaske nicht "leer geschoben" wird for( i = 8; i; i--) { SDA_PORT