-
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
-
Thread
Excel Tabelle mit visual Studio C++ auslesen
sogenannter Biff-Records: 1.Record 2. n. | WORD 16bit | WORD 16bit | BYTES variabel | .... | WORD 16bit | Recordnumber | Record Data Length | Record Data | .... | Recordnb. Man liest zuerst das erste WORD und dekodiert den Typ. Falls
festlegen muss bzw wieviele ich habe und diese weiterschicke. Dann muss ich Zeile für Zeile jeden Wert abfragen und an einen Server schicken (der die Werte dann auf einer UI ausgibt). (C++) Ich habe kein großartiges Programmierwissen, also könntet ihr evtl. zu jeder Funktionsgruppe im Code dazuschreiben
-
Thread
Keypad 3x4 with Row + Column LEDs
ElC schrieb im Beitrag #7483113: > Habe ich das korrekt gemacht? Ja. Achte auf die Auswertung seitens des uC. Weil die meisten uC nur pull ups an den Eingängen haben, wird die aktive Taste low durchschalten
wie Dezimal-Decoder. Alles mit SPI oder I2C Eingängen ist nicht erwünscht. Der IC darf nicht abgekündigt sein, wie z.B. der 74C922 / 74C923. Etwas viel Text, aber es ist ja WE. :-) Ob in diesem Forum oder in anderen. Ich finde es suboptimal
-
Thread
I2C - Pull Up Widerstände
dann aber > 0100 0000 = 0x40 Eben, das Control Byte ist 0x40 und setzt sich zusammen aus der I2C Slave Adresse in den ersten 7 Bit (0b0100000) und dem R/W Bit an unterster Stelle, zusammen [c]0x40 = 0x20 << 1 | RW[/c].
Hi >In Fig 1-2 hat die Slave Adresse 7 Bit, wie es der I2C-Spezifikation >(S.15) entsprich und genau den Wert 0x20. Was da an Bits rangepfriemelt >ist, ändert nichts an dem Wert. >http://i2c2p.twibright.com/spec/i2c.pdf Solange sich
-
Thread
4x4 Matrix für 16 Schalter
funktioniert. Ich ersetze mal die T (für Taster) in der Matrix mit Kleinbuchstaben, damit ich einzelne Tasten ansprechen kann: PB4 PB5 PB6 PB7 | | | | | | | | PB0----a-----b-----c-----d--10k--VCC | | | | PB1----e----
BASCOM-Forum >für Dich ergiebiger sein könnte als dieses Forum hier. Hier findest Du >eher die ASM- oder C- Programmierer. Und die meisten davon verzichten >freiwillig auf den Baukasten BASCOM. Ok, überredet ;-) >Nööö... Denn es kommt immer darauf an, wie man die Abfrage programmiert >und unter
-
Thread
3W RGB LED Controller mit AVR mega8
interesse besteht, kann ich den Code mal posten. Bzw. hat jemand von euch PWM-Code (am liebsten natürlich C bzw. ASM mit C-Interface ;) ), der den hohen Anforderungen (3 Kanäle, 12-14 Bit, >500Hz Frequenz) entspricht? Viele Grüße hownottobeseen
Achja, werde mal mit 10bit, 12bit, 14bit oder 16bit PWM und e-funktion testen. Denke aber das ich dann auch mit mehr als 8 Mhz arbeiten muss. mfg Zippi
-
Thread
SDR-Dekoder für TFA KlimaLogg Pro/IT+ Temperatursensoren
LTS" kompilieren und lief auch gleich los! :-) Ich möchte damit meinen Pool-Sensor (30.3199.IT) abfragen. Doch leider lieferte dieser gleich erst mal "BAD 33 RSSI 73 (SANITY)". :-( Schuld ist die Abfrage in tfa1.cpp Zeile 70 [c]&& ((rdata[7]&0x70)==0x60[/c] Wenn ich diesen UND-Teile Auskommentiere
.\n"); return 1;[/c] Wenn alle Abfragen fehlschlagen, kommt es zu der Fehlermeldung: "Warning: Unable to locate configuration directory, default config not loaded." (Zeile 235): [c]}else{ fprintf(stderr,
-
Thread
Tastenabfrage bei Menüführung - Ideenblockade
du musst dich immer fragen: Was ist die Bedeutung dessen was da steht? Was heißt es, wenn da ein 1 Bit oder ein 0 Bit auftaucht? Kann man das in allgemeineren Begriffen als 1-Bit / 0-Bit formulieren? ) > [c] > ct0 = ~( ct0 & i ); // reset or count ct0 > [/c] > ct0 bekommt
// 0->1: key press detect > [/c] > > Das kann ich grad einfach nicht nachvollziehen, was in den ganzen Zeilen > passiert. Ja? Die erste Zeile ist die Abfrage ob der Zähler bei 0b11 angelangt ist. Wenn ja wird in i ein 1 Bit
-
Thread
CD Wechsler Protokoll
Quellcode: Grundsätzlich gebe ich den nicht weiter. Grund: In der Regel ist bei den von mir eingesetzten µC der Code relativ hardwarenah. Daher kann man den eh nicht einfach so "kopieren" und auf dem eigenen System zum Laufen bringen. Viel Sinnvoller ist hier das "Konzept" weiterzugeben, d. h. WIE die einzelnen
: 435-699). Als Controller verwende ich einen DSC von Freescale. Sollte aber mit jedem anderen 16-Bit-µC laufen. Benötige ein paar I/O-Pins, SCI und SPI. Dazu intern einen Timer-Interrupt mir 1ms. Der HEX-File ist jetzt ca. 17kB groß. Habe meine freiluftverdrahtete Schaltung nun ins Auto eingebaut