-
Thread
RFID Weitbereichsleser RS485 Arduino
Abfrage bekomme ich allerdings nur Quatsch und irgendwelche Zeichen aus dem erweiterten ASCII Code. ... das kann schon sein, es wird beim Empfang eben die 40 Bit jeweils als 5 Byte dargestellt, das können
Also verstehe ich es richtig, dass der Arduino selbst Start und Stop Bit erkennen müsste, sodass ich nur noch die fünf einzelnen Bytes voneinander trennen muss? Sprich ich selbst muss in der Software nicht mehr nach Start und Stopbit suchen? Aber dann stellt sich
-
Thread
AT28C64B Fragen zur Beschaltung und zum Timing
meinen Gedanken werde da dann nochmal ne Schleife reinmachen. Deswegen wurden warscheinlich auch einzelne Bytes nicht gebrannt. Warte eh nich auf ein paar Pulldown-Wiederstandsreihen von Reichelt und werds dann wieder in Angriff nehmen. Ich nehme kein 24C weil ich mir da mit dem Code schwerer tuhe
Naja, ich schreib halt bislang nur immer einzelne Bytes (Datenlogger), da ist das mit dem Warten relativ Bockwurst. Für schnelle Sachen ist das Polling sicher besser geeignet. Wie´s funzt, steht im Datenblatt des 28C64B, mit Timingtabellen!
-
Thread
C# - Datei stellenweise auslesen --> Wie realisiert man das ordentlich ?
man aber ein Multiarray nicht mit verschiedenen Typen kombinieren. Beispiel wäre dann z.B. [c] int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} }; [/c] Das wäre es ja schon fast, bläht aber den Speicher unnötig auf (wegen dem int64 (Position)). Zudem gibts keine Benennung der Variable
bzgl. der Verwendung der Daten nicht verstanden. Im Grunde genommen möchte ich nachher nur die einzelnen _fileData abfragen, also der Binärwert (in int) der an der entsprechenden Position im File stand. Das dann natürlich in einer Schleife. Mit Deinem Beispiel geht das ja genau so, wie ich mir das
-
Thread
UART Frage betreffs startbit stopbit etc.
"hex abfragen" geht natürlich beim AVR - die Frage ist, ob Du das Zeichen senden kannst. Anders ist die Anzahl der Stoppbits: ; Set frame format: 8data, 2stop bit ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
Assembler-Code und das daraufhin gezeigte Verständnis so ansehe, wäre vielleicht eine Programmierung in C nicht das schlechteste.
-
Thread
Macros in C?
Gibts sowas? Ich muss im Timerinterrupt (500µs) rel. viele Eingänge (10) abfragen und die Impulse zählen (32bit), dazu kann zur Laufzeit per Dipschalter die Entprellzeit für jeden einzelnen Eingang umgeschaltet werden. Erschwerend kommt hinzu, dass die Eingänge wild über verschiedene Ports verteilt sind, also hab ich mich für ein lineares Programm (also ohne Schleife) entschieden, Prozessorzeit ist knapp, Speicher hab ich genug. Funktioniert auch prima, Änderungen sind allerdings recht fehleranfällig (muss dann immer in 10 einzelnen Programmteilen gemacht werden). #define in7 PINC.1 #define
-
Thread
Welcher µC für meine Anforderung
ausreichen. Welche Aufgabe hat der PC dann eigentlich? Alles, was Du aufgezählt hast, kann der uC allein / über einen fünften uC kannst Du noch Platzierung usw. machen..
Hallo, hmm, wenn ich pro Slot einen eigenen µC nutze müsste ich alle 4/5 über die Schnittstellen abfragen. Ich weiß nicht ob das so ohne weiteres möglich ist. Mein Laptop hat z.B. gar keine serielle und nur 3 USB Ports. Zur PC Software: Die macht
-
Thread
Projet um die Kapazität von Akkus zu messen
doch recht langen Programms nimmt halt enorm viel Zeit in Anspruch (allein schon das Auffinden der einzelnen Routinen-wo steht was-). Für meine vereinfachte Version habe ich mal die Programme fat.c, fat.h, dos.c dos.h, dosdefs.h, dir.c, logger.c, logger.h, mmc-spi.c, mmc-spi.h entfernt, um ein bisschen
Fast PWM 10bit TCCR1A |= ((1 << WGM11) | (1<<WGM10)); weil das WGM12 Bit im TCCR1B sitzt und nicht im TCCR1A. Tut mir leid für meine Fragen aber Dein Programm ist ja eine richtige Lehrstunde in C-Programmierung
-
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-ASM Knobelei : Bitmanipulation am LCD im 4-Bit Mode
hatte, müßte ich Port einlesen, AND Steuerleitungen, OR Dataleitungen - am Ende war es mit einzelnen bits viel übersichtlicher.
Johann L. schrieb im Beitrag #3853104: > P = __builtin_avr_insert_bits (0xff4567ff, D, P); Mit welchem Compiler soll das denn gehen? [pre] D:\AVR-C\Test1/main.c:12: undefined reference to `__builtin_avr_insert_bits' [/pre]
-
Thread
LCD Initialisierung
Hast du geprüft ob alle Verbindungen zwischen uC - LCD in Ordnung sind? Mal alle einzeln wackeln lassen und schauen. MfG Falk
;Register wieder herstellen pop temp1 ret ;Rücksprung ; 5.3 LCD -> Enable-Bit setzen lcd_enable: push r18 ;Register sichern ser r18 out DDRC, r18 ;PortC als Ausgang sbi PORTC, 0 ;Enable-Bit setzen nop ;warten nop ;warten
-
Thread
Text in Variable??
funktioniert das ganze dann mit einer einzelnen zahl? also ich mein ich hab in ner variable eine zahl z.b. 5. ist ja weniger als 8 bit! kann ich die so verarbeiten wie ich oben schon gedacht hab?
, denn das Vorzeichen ist immer im Highbyte das höchstwertige Bit, es reicht also eine Abfrage mit dem HighByte aus temp3)
-
Thread
AVR: Zustand eines Tasters einlesen nicht möglich
Hallo... Ich habe folgendes Problem: Ich möchte mit einem Atmega8 den Zustand eines Bits einlesen. Dafür hab ich den Code [c]DDRB&=~(1<<PB1); PORTB|=(1<<PB1); DDRB|=(1<<PB0);[/c] verwendet, um die Datenrichtung zu bestimmen und die Pull-Up-Widerstände zu aktivieren, dann [c]if(PINB
geht um die beiden if. Das zweite if fragt genau die gegenteilige Situation vom ersten if ab. Ein einzelnes Bit kann aber nur 0 oder 1 sein. Es gibt keine 3. Möglichkeit. D.h. du weißt aus dem Ausgang der ersten Abfrage bereits, wie die zweite Abfrage ausgehen MUSS! Es gibt keine andere Möglichkeit. Und
-
Thread
Ich brauche Hilfe beim Optimieren eines Codeabschnittes
du den neuen Port Wert mit dem alten kompletten Port-Wert ver-xoderst, so bleiben dir genau dort 1 Bits stehen, wo es eine Änderung gab. Dadurch werden dann in weiterer Folge die Abfragen auf die Änderungen einfacher. [C] unsigned char uchPortIn = PINA ^ uchBitMaskeXorA; // uchBitMaskeXorA dient dazu, einzelne Signale zur Laufzeit zu invertieren unsigned char changedBits = uchPortIn ^ uchPortAalt; if( changedBits & DEF_PIN_SIGNAL_1 ) behandle Änderung an PIN 1 if( changedBits & DEF_PIN_SIGNAL
-
Thread
c# AlphaBeta Suchalgorithmus
in der Liste hij = Figurentyp k = Farbe Zuerst ein Bit das angibt ob die folgende Angabe, ein Feld angibt oder den Figurentyp. Der figurentyp wird dann einfach als zahl angegeben. Als Feld braucht man 6bit = 64 Felder. Dazu noch 1bit ob ein Wechsel
Berechnung des Hashcodes für jede Kombination aus Farbe, Figur und Position ein zufällig generiertes 64-Bit-Muster. Der Hashcode einer Stellung ist die XOR-Verknüpfung der Bitmuster der einzelnen Figuren. Damit kann der Hashcode einer Stellung beim Ausführen eines Zugs sehr schnell aktualisiert werden
-
Thread
while(1) in main wird nicht mehr ausgeführt
ISR´s mit cli() die interrupts ausschalten und am ende wieder mit sei einschalten? also z.B. [c] ISR(INT1_vect){ // Interrupt für IR_Empfänger cli(); DISABLE_BUTTONS; _delay_us(320); x.HalfBit = 0; x.SendEmpf = 0; //Timer 1 auf Empfangen schalten ENABLE_BIT_TIMER; bitcounter = 14; IR_Folge1 = 0; IR_FolgeBuild=0; sei(); } [/c]
-
Thread
Mega32 im C64
sämtliche andere Aufgaben wie IEC Bus und SD Card Bus ansteuern. Das ist definitiv nicht mit einem einzelnen ATMega möglich. In den 70ern wurden die Konstrukteure von solchen Dingen als Pioniere und Genies vergöttert, heute bekommen Menschen die eine komplette CPU per Bit und Byte und Assembler, ein
Jahre alte Stücke bei eBay und sonst wo. Klar) Die Intention dahinter ist, einen fast kompletten C64 mit 8 Bit AVR Controllern zu realisieren, ohne 32 Bit ARM CPUs und sonstiges dafür einzusetzen. Denn dann , lädt man sich einfach aufs Smartphone eine APP runter und spielt damit. Hier geht es um
-
Thread
define Ausdruck mit shift in 2 Richtungen
es geht darum dass ich für mein LCD alle pins einzeln frei konfigurierbar gemacht habe und jetzt ein Makro mit einem 8-Bit Port erstelle. Das Dipslay ist im 8 Bit Modus betrieben. #define LCD_P_D0 7 #define LCD_R_D0_OUT PORTD
#define SBIT_(port,pin) ((*(volatile struct bits*)&port).b##pin) #define SBIT(x,y) SBIT_(x,y) #endif [/c] Man kann schreiben: [c]SBIT(PORTA,1) = 0; SBIT(PORTA,2) = 1;[/c] und [c]if ( SBIT(PINA,0) == 0 ) { /* test */ } uint8_t j
-
Thread
CAN funktioniert , aber nicht im vollen Umfang
irgendeiner Botschaft wird benutzt. Lukas D. schrieb im Beitrag #5135792: > Wie ist j mit den einzelnen Byte verknüpft? Also woher weiß der µC, dass > er von einem Byte zum nächsten gehen soll? Das CANMSG Register besteht eigentlich aus acht Registern hintereinander weg, welches Byte man davon
jenige wo gerade eine neue Nachricht ankommt > und kann weiterwursteln. Keine Schleifen sondern Abfragen, aber ja. Zur Sicherheit teste ich da auch jedes Bit das auslösen könnte: [code] ISR (CAN_INT_vect) { uint8_t canpage; canpage = CANPAGE; // save canpage if(CANSIT2 & (1<<SIT1
-
Thread
STK500 Testprog funzt in C funzt nicht?
KEYPORT natürlich KEYPIN einlesen. Sonst funktioniert gar nichts. Eine andere Sache ist, dass das C-Programm etwas anderes macht als das Assembler-Programm. Im Assembler-Programm werden die Bits vom Port einzeln abgefragt, während das C-Programm den gesamten Port auf einen bestimmten Zustand hin abfragt. [avrasm] sbis PIND, 0x00 [/avrasm] fragt ab, ob das Bit Nr. 0 im Portregister gesetzt ist, während die Zustände aller anderen Bits im Portregister ignoriert werden. [c] if(PINx == 0b11111110){} [/c] allerdings fragt ab, ob das Bit Nr. 0 "0" ist und alle
-
Thread
Waveshare 1.3 Inch OLED HAT im I2C Modus
> 0x78 kann nicht die Adresse lt. I2C-Spezifikation sein, weil für die > Adresse nur 7 Bit zur Verfügung stehen. Das wissen aber nur Leute die irgendeine beliebige eine Doku ueber I2C gelesen haben. Mittlerweile besteht die Kompetenz
Also bei mir ist bei 7 Bit die höchste Adresse 127 oder 0x7F. Und das ist größer als 0x78, oder? Bei diesem Display ist die Adresse aber 0x3C und das I2C Adressbyte dann 0x78.
-
Thread
GPIOR0-2 richtig nutzen
IN R16, GPIORx Register R16 manipulieren und dann ggf.: OUT GPIORx, R16 oder die direkte Abfrage eines einzelnen Bits mit SBIS GPIORx, y ; Skip if Bit.y in I/O Register is set SBIC GPIORx, y ; Skip if Bit.y in I/O Register is cleared (mit der Einschränkung, dass dies nur mit I/O Adresse
O-Register "volatile" sind, und daher nicht auf CPU-Register optimiert werden. Bei Operationen wie "Bit setzen" und "Bit abfragen" stört das nicht. Bei anderen hingegen schon.
-
Thread
Auswahl des richtigen µc
nicht wirklich aus der Praxis. Gefühlt würde ich aber das oben Gesagte hier ansetzen. Ein echter 32Bit uC ist billiger. IMO kommt ein FPGA meist in Verbindung mit einem uC voll zur Geltung. Der FPGA macht die zeitkritischen Sachen, Bitklimpern, Daten schaufeln etc. Der uC die Verwaltung, komplexen
(SCL or SDA) 2. clrBit(dito) 3. getBit(dito) Also in Keil-C einfach neucompiliert und probehalber laufenlassen... Hm, i2c EEPROM hat nicht geanwortet. Dabei wollte ich doch nur noch die Delay-Routine passend ändern. Scope
-
Thread
EMS > Adapter > NetIO > Raspi
0x13 ... [/code] Abfrage von 0x0C Bytes -> Antwort erfolgt //Niffko
wert!!! Daran lags. Problem ist: Bei mir läuft der AVR mit 20 MHz. Das hat in der Berechnung von BIT_TIME in ems_uart.c zu einem berechneten Wert von 260 geführt - ist natürlich zu viel für 8 Bit. Drum war bei mir der Break dann auch so kurz. Als Quick-und Dirty-Hack habe ich BIT_TIME halbiert
-
Thread
UART Bootloader ATtiny13 - ATmega644
@Peter D Hier ist einer source im TurboC , für 9bit kommunikation. mfg Bingo
in meinen atmega8 gebrannt. Ich habe keine Pins verändert oder Baudraten oder oder oder... - FUSE bits gesetzt wie oben beschrieben. - FBOOT.EXE liegt in C:\temp\ - 1.hex (die mit FBOOT zuladende hex) liegt in C:\temp\ - mit Befehl fboot 1.hex sollte doch eigentlich alles i.O. sein. ABER
-
Thread
2x 4bit auf einen Port ausgeben
ausgegeben. All das funktioniert auch super. Jedoch schaffe ich es nicht, beide Stellen, also Zehner (4bit) und Einer (4bit) an einem einzelnen Port auszugeben. Ich gebe im Moment die Zehner bei P3 und die Einer bei P1 raus. P3 benötige ich allerdings für etwas anderes. Wie bekomme ich beide Zahlen auf
if( haveError ) P3 = 0x0E; else P3 = 0x00; ... [/c] hat es eigentlich einen speziellen Grund, dass du laufend auf immer wieder noch blödere Formatierungen verfällst, wie du die { - } bzw. einzelne Statements anordnen kannst? Gewöhn es dir an [
-
Thread
USB galvanisch trennen über ATTINY/USART
LCD-Enable auf Low ziehen, die Datenleitungen nacheinander auf High und dann über die Button-Leitung die einzelnen Taster abfragen. Allerdings war das nur als Notlösung gedacht weil ursprünglich ein Mega8 in die Schaltung sollte...Theoretisch könnte ich jetzt aber auch die Taster normal abfragen, das wurde nur
auf Low ziehen, die Datenleitungen nacheinander auf > High und dann über die Button-Leitung die einzelnen Taster abfragen. > Allerdings war das nur als Notlösung gedacht weil ursprünglich ein Mega8 > in die Schaltung sollte...Theoretisch könnte ich jetzt aber auch die > Taster normal abfragen, das
-
Thread
Einfache Sensortaste
Burst, durchschnittlich gesehen kalibriere ich aber auf ca. 64 bis 128 Bursts. Das mache ich um die einzelnen Sensortasten aneinander anzugleichen. Bei 64 Zyklen im Burst a 2 Mhz brauchen wir pro Taste also nur 32µs zur Abfrage. Die Kalibrierung und das Ermitteln des Sensortastenstatus so aus: [code]
ich werde mal suchen. Aber was spricht gegen deine "Erfindung"? So müssten die Störungen über 10 Bits in der halbwegs richtigen Zeit und Reihenfolge erzeugen um eine Fehlauslösung zu bewirken. Das ist ja schon wie Lotto spielen. Mein Problem ist ja nur die fehlende C-Kentniss. Es stellt sich nur die
-
Thread
Kompletten *Buffer++ auslesen
immer etwas hinzu. char* Buffer; if (booler.gpsstart == 1 && StringLen < 5) { *Buffer++ = c; StringLen++; setData(c); } jetzt wuerde ich gerne abfragen ob die ersten 5 zeichen des Buffers GPGGA heiszen. so z.B. if (Buffer == "GPGGA") { } Es geht mir dabei darum, folgende
> > char* Buffer; Ich hoffe mal, dass das nicht alles ist :-) > jetzt wuerde ich gerne abfragen ob die ersten 5 zeichen des Buffers > GPGGA heiszen. > > so z.B. > if (Buffer == "GPGGA") { > > } [C] if( strncmp( Buffer, "GPGGA", 5 ) == 0 ) [/C > Es geht mir dabei darum, folgende
-
Thread
Elektronik Lager und die vielen Kisten (Verwaltung)
in der Detail-Ansicht eingeben werden. Denn, in der Hauptübersicht wird das Bauteil angelegt, z.B. C 1uF. Im Detail sind dann alle Varianten/Gehäuse zu sehen. Die einzelnen Varianten können dann in unterschiedlichen Boxen liegen. Oder man hat von einem Bauteil so viele, dass die nicht mehr in eine Box
32 - bit unter Linux 64 - bit (ubuntu) wget -c http://mirrors.kernel.org/ubuntu/pool/universe/m/mysql-dfsg-5.0/libmysqlclient15off_5.1.30really5.0.83-0ubuntu3_i386.deb mkdir mysql32 dpkg --extract libmysqlclient
-
Thread
Halben Port in "switch" auslesen
unzufrieden. Denn der springende Punkt ist: Du kannst einen Port immer nur als ganzes auslesen. Alle 8 Bit. Das ist so, weil in C die kleinste Einheit nun mal ein Byte ist. Aber: Es steht dir natürlich frei, von diesen 8 Bit diejenigen Bits, die du nicht benötigst, gezielt auf 0 zu setzen. Genau das machst
PORT hab ich nun auch raus... Mit PORT lese ich nur den Zustand des Pullups aus. Alles klar, also Abfrage auf PINB. Und zum dritten Punkt: Achso, ich verändere mit der Maske also nicht den Bereich den ich auslese, sondern ich verunde dann jedes einzelne Bit des Ports mit meiner "Maske"!
-
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
Tipps zu: 600+ Schrittmotoren ansteuern
Theoretisch könnte man für 16 Motoren einen µC verwenden, der die 64 Endstufen jeweis einzeln per Pin Toggeln im Timer macht. Diese viele µC sind mit FD-CAN miteinander verbunden. Damit wären 38 Stück davon nötig. Wenn man jedem Motor 256
- Synchronisation und Timing: Die gleichzeitige, präzise Steuerung vieler Motoren ist mit einem einzelnen Pi schwierig, da das Betriebssystem nicht für Echtzeitaufgaben ausgelegt ist. Lösungsansätze 1. I2C GPIO-Port-Expander - Mit I2C-Port-Expandern wie dem MCP23017 lassen sich pro Expander 16
-
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
Funktioniert diese Atmega328 Schaltung?
erfolgreich in Betrieb genommen. Nur die Widerstände sollten halt 1% sein. Ich habe dann jeden Kanal einzeln abgeglichen. Gruss Chregu
Schaltung. Der Taster in Reset bringt dir nur was, wenn der µC hängt oder du einen Bootloader hast. (Der m328 besitzt ab Werk keinen!) Auch ob du Reset über C23 rausfüren musst, hängt von deiner konkreten Umgebung ab und gehört nicht zur "Standardbeschaltung". Um
-
Thread
Programmablaufplan Drehgeber
Code besteht darin, wie sich einzelne Bits des Drehgebers beim Drehen verändern und wie diese mit logischen Operationen so miteinander verknüpft werden, dass am Ende das Richtige rauskommt. Da hilft dir ein Ablaufplan auch nicht viel
LEDS = val; // r18 countTimer2=0; }// Ende count Abfrage }// Ende for schleife }// Ende main [/c]
-
Thread
Transistortester AVR
std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT lcd_hw_4_bit.o -MF dep/lcd_hw_4_bit.o.d -c ../lcd_hw_4_bit.S avr-gcc -Wall -DWITH_SELFTEST -DAUTO_CAL -DWITH_AUTO_REF -DREF_C_KORR=12 -DREF_L_KORR=50 -DC_H_KORR=0 -DWITH_UART -DCAP_EMPTY_LEVEL=4 -DAUTOSCALE_ADC
Beitrag #3043125: > Bringen die > handoptimierten Assemblerfiles so viel oder könnte man auch die > C-Version > davon nutzen? Es werden drei Assembler-Files benutzt: lcd_hw_4_bit, swuart und wait1000ms. Davon gibt es keine C-Version. Die wait1000ms Funktion ist nach meiner Meinung auch nicht in C
-
Thread
DAB+ Modul KeyStone 8650
die Größe des Headers die für mich von Interesse sind. Die 7 Bytes teilen sich wie folgt auf: [c] 28 bits 13 bits 6 bits 9 bits body size header size content type content subtype b55 b28 b27 b15 b14 b9 b8 b0 [/c] Zuerst habe ich versucht die *body size
weiteren Parametern weiter. Hinter dem Parameter b001100 -> ContentName geht's weiter mit D0 0A [c] 11 <- 7 or 15 bits DataFieldLengt Indicator 010000 <- ParamId: "MimeType"(Tabelle 2 - Seite 34) 0 <- Ext 0 = 7 bits DataFieldLengt Indicator 0001010 <- 10 Bytes DataField [/c] -
-
Thread
schneller I/O zugriff auf x86-PC
Beitrag #5881647: > gibt es am PC irgendwo I/O-Pins Klar, indem du einen PasPi oder auch einen 8 Bit µC dranhängst und über RS232 oder USB steuerst. Der Kleine macht die präzisen IOs samt Timing der Dicke (PC verarbeitet die Daten und gibt die Kommandos. Schliesslich fährt auch ein 300m Containerriese
Martin L. schrieb im Beitrag #5881675: > Ich möchte unter anderem die Geschwindigkeit von C++-Befehlen messen > (z.B. Auslesen der Systemzeit, Das heißt, du misst die Zeit für System Calls (Uhrzeit abfragen, wobei das dank VDSO nicht immer einer ist), über... System Calls (Zugriff auf
-
Thread
Atmega8, ADC verständnis, Sprache C,
nachher aussieht. Ich habe schonmal versucht das herauszufinden indem ich einfach gesagt habe: [c] if (result < 100) { PORTB = (1<<PB1); } if (result > 100) { PORTB = (1<<PB5); } [/c] Das habe ich mit verschiedenen Werten wie result < 1000 und result >
Tach Lars, in Sachen deinem C-Code : mit deiner IF Abfrage zum Schalten der LEDs wirst du die LEDs zwar alle der Reihe nach einschalten, aber du hast das Ausschalten vergessen. Gruß, dasrotemopped.
-
Thread
State machine in Assembler
Möglichkeiten: T1 --------- nach D bleib in A nach B T2 --------- nach A bleib in B nach C T3 --------- nach B bleib in C nach D T4 --------- nach C bleib in D nach A Habe ich das richtig verstanden?
angeprangert, die externe Interrupts verwenden. Da wird auch (zu recht) darauf hingewiesen, dass die Abfrage zyklisch (in gleichen Abständen, also mit fester Frequenz) erfolgen soll. Da wird auch auf einige C-Beispiele verlinkt und ein VHDL-Beispiel gezeigt. Aber ich kann keinerlei Lösung in AVR-ASM entdecken
-
Thread
Deckel FP2NC - Dialog 3 - Fehler 20 - Eprom Fehler auf NPP53 / NEP51
Display NPP54, glaub für Kontour/Regelschleifen Achspositionen NRP Karte für Sollwert X/Y/Z oder C+2Achs mit einem 12bit DAC, der über 3/4 Servos gemultiplext wird.
> > NPP54, glaub für Kontour/Regelschleifen Achspositionen > NRP Karte für Sollwert X/Y/Z oder C+2Achs mit einem 12bit DAC, der über > 3/4 Servos gemultiplext wird. Das ist richtig. Meine ist aber Dialog 3 - NPP53, NPP52 und NRP53, NRP90 im Schrank. Und ich will nur die NPP's wegschmeissen
-
Thread
Codemanipulation an AVR erkennen
Beitrag #3970796: > so dass es für einen Angreifer nicht so leicht > ist an den original Code des µC zu kommen was soll daran schwierig sein? µC auslesen und disasemblieren, fertig
Auch wenn die Lock Bits und ähnliches nicht perfekt sind, sollte man sie auch nutzen. Je nach µC sind die auch nicht so einfach zu knacken. Wenn der Speicher im µC gelesen werden kann, ist die Verschlüsselung bei der Übertragung
-
Thread
default Werte, when others =>
Und jetzt kommt der Witz: das gilt auch für eine FSM, die 6 Zustände hat, aber binär codiert in 3 Bits abgelegt werden. Und es gilt auch für diese 6-Bit FSM, wenn die als One-Hot umgesetzt wird, aber dann einen undefinierten Zustand mit 2 gesetzten Flipflops einnimmt. Es wird schlicht trotz des "when
is (idle, count, eval, send, cleanup, z5, z6, z7); [/vhdl] Dieser tstate braucht binär codiert 3 Bits. Und weil alle Zustaände definiert sind, kann ich nach der Abfrage auf idle...cleanup eben auch ein "when others" hinschreiben. Und dann wird auch Hardware dafür erzeugt. Wenn ich aber nur 5 Zustände
-
Thread
Musikalisches Diskettenlaufwerk
schlimm ist, Bitmasken und Nummern gemeinsam zu verwenden? Die Bitmasken brauche ich doch für die if-abfrage, ich prüfe doch einfach darauf ob das Bit gesetzt oder nicht, und wenn es gesetzt ist gibt das einen Wert/Bitmaske auf den ich prüfen kann. Die Bitnummern brauche ich aber um die Pins anzusteuern?
abgewinnen. Aber >das lag glaub ich am Aufbau selbiger. Was zum Geier willst du mit einem 32 Bit ARM, wenn du nicht mal die Grundlagen von C beherrschst? Kauf dir eines der Standardbücher von C und arbeite es KOMPLETT durch! Das kann dir kein Tutorial, Forum, STM32 oder die Mutti abnehmen!
-
Thread
Erstes Programm in C (PIC18F2550)
steuert nur ein einzelnes Bit an richtig? *while (1)* Die 1 in der Klammer was für eine Bedingung stellt diese dar? Läuft der jetzt immer durch die While Schleife durch?
Hallo, du hast nen 10bit Analog Wert. Warum addierst du High/Lowbyte??? So sieht es bei mir aus: [c] void Setup_ADC(void) { ADCON0bits.ADON=0; TRISAbits.TRISA0=1; ADCON2=0x3C; ADCON2bits.ADFM = 1; ADCON0bits.ADON
-
Thread
Datenlogger Pendeluhr
Ports Auf dem Arduino Nano Board wird der ATmega328 verwendet. Wenn du in das Datenblatt dieses µC guckst, siehst du, dass der genau *drei* Ports besitzt, bezeichnet als "Port B" (8 Bit), "Port C" (7 Bit) und "Port D" (8 Bit). Beim Arduino Nano sind einige der Port-Pins fest belegt, z.B. für ext
> Auf dem Arduino Nano Board wird der ATmega328 verwendet. Wenn du in das > Datenblatt dieses µC guckst, siehst du, dass der genau drei Ports > besitzt, bezeichnet als "Port B" (8 Bit), "Port C" (7 Bit) und "Port D" > (8 Bit). > Beim Arduino Nano sind einige der Port-Pins fest belegt, z.B.
-
Thread
Schon mal jemand das CY8CKIT-049 4200 in der Hand gehabt?
Versuche mit 41xx und drei verschiedenen LCD- Anzeigen scheiterten vermutlich an einem kaputten PSoC4- Chip. Für den Drehgeber nehme ich mal den TCPWM. Es soll ein Sinusgenerator werden, wahlweise 1 Ton mit 9 Bit oder 2 Töne mit 8 bzw. 7 Bit (mehr geht leider nicht bei PSoC4).
bit0 = QuadDec_STATUS_DOWN bit1 = QuadDec_STATUS_RUNNING direction is _STATUS_DOWN see TRM PSoC 4200 S. 176 */ myEncoder.direction = QuadDec_ReadStatus() & 1; [/c] myEncoder ist
-
Thread
AVR: 2 ADC einlesen
ausl. sbi ADCSRA,6 ;Starte nächste Konvertierung asr r27 ;Schiebe Bit 0 ins C-Flag ror r26 ;Schiebe alle Bit´s nach rechts asr r27 ;Schiebe nächstes Bit ins C-Flag ror r26 ;Schiebe alle Bit´s nach rechts out
ausl. sbi ADCSRA,6 ;Starte nächste Konvertierung asr r27 ;Schiebe Bit 0 ins C-Flag ror r26 ;Schiebe alle Bit´s nach rechts asr r27 ;Schiebe nächstes Bit ins C-Flag ror r26 ;Schiebe alle Bit´s nach rechts out
-
Thread
10 Taster an einem Interrupt
Hallo, nimm einen 16-bit I/O expander für I2C (PCF8575) oder etwas ähnliches. 16 Eingänge für deine Tasten, I2C oder SPI zur Kommunikation und eine /INT Leitung um deinen Prozessor scharf zu machen. Heute ist Freitag, da
> Entprellhardware braucht. Und was würde gegen so eine Entprellung in Software sprechen? [c] unsigned long time; void myInterrupt(){ if(millis()-time < 200){ time = millis(); // Rest, alle Tasten abfragen } } [/c]
-
Thread
Seriell Schnittstelle Steuerleitungen
Hi, ich muss die Steuerleitungen der seriellen Schnittstelle recht zeitkritisch abfragen. Da ich das nicht unbedingt per Polling machen will, die Frage: Gibt es für C unter Linux da eine Interrupt-gesteuerte Möglichkeit? LG traffic
/tty_ioctl.4.html [code] TIOCMIWAIT int arg Wait for any of the 4 modem bits (DCD, RI, DSR, CTS) to change. The bits of interest are specified as a bit mask in arg, by ORing together any of the bit values, TIOCM_RNG, TIOCM_DSR, TIOCM_CD