-
Thread
Assembler Programm funktioniert im Simulator aber nicht in der Praxis
Programms wieder aus. 2) Du vergleichst immer den kompletten Port-Inhalt, obwohl dich doch nur eine einzelnes Bit interessiert. Ganz allgemein ist für dich jetzt also der Zeitpunkt gekommen, wo du dich ganz dringend damit beschäftigen musst, wie man Aktionen auf nur einzelne Bits beschränkt, sowohl beim
Pullup bleibt nun dauerhaft an. 2.Da bin ich gerade dabei mich einzumummeln, ist mir gelungen, einzelne Bits zu manipulieren aber die direkte Abfrage halt nicht. Deshalb habe ich über die summen der einzelnen Bits gearbeitet. Danke für deine Tipps. Beim kurzen Überfliegen, denke ich werde ich mich
-
Thread
1-Wire Slave auf AVR
SENDEZEIT; TIMSK0 |= (1 << TOIE0); // Timer Interrupt an fb_bit = (transbyte ^ shift_reg) & 0x01; // CRC berechnen shift_reg = shift_reg >> 1; if (fb_bit) shift_reg = shift_reg ^ 0x8c;
und nun geht’s ohne Probleme. Für den Counter muss wohl ein Attiny25 herhalten. CRC16 und die 80 Bit die zur Abfrage getauscht werden müssen... das geht einfach nicht in 1k. Aber ein alternativer Counter der nicht Kompatibel zu Dallas ist geht bestimmt. Vielleicht mit CRC8 und nur 5 Byte bei der
-
Thread
In einem Assembler Programm für Division auf C ausweichen!
dringende Gründe geben, die den Aufwand rechtfertigen, es so herum anzugehen statt erstmal alles in C zu schreiben und dann ggf. einzelne Funktionen mit der Hand in Assembler optimiert ,,nachzulegen''. (Meist ist das aber gar nicht nötig, da das C-Programm allein gut genug ist.)
Stunden (weil du dir die C-Syntax erst mal anschauen musst). Und da ist die Division schon mit drinn. Das Setzen von Funktions-Registern und die Bedeutung dessen, was der AVR beim Setzen von bestimmten Bits in Registern macht
-
Thread
RS485 von ms - immer noch Einschaltprobleme
#5608662: > Ein doppeltes NOP sollte doch reichen,oder? Rechne doch mal aus wie lange ein Byte (8 Bit + Start- und Stoppbit) braucht. Bei 9600 Baud sind das: 1/(9600/10) = ~1,05ms Laeuft dein uC mit 16MHz sind ein NOP aber nur 62,5ns. Heisst: Du brauchst 1,05ms/0,0000625s = 16800 NOPs um eine Bytelaenge
Modbus-Master simulieren kann. Die zu transportierenden Inhalte sind primitiv - entweder ein 16-Bit-Wert oder einzelne Bits. Alles darüber hinausgehende muss man sich auf einer Metaebene darüber zurechtschnitzen, aber das ist nicht wirklich ein Problem; in der realen Welt werden über die einfachen
-
Thread
FT245 Verständnisproblem
Application auseinander zu setzen. Ich habe ursprünglich consolenapplikationen unter MS visual studio net in c++ programmiert... ich hoffe das ich damit klar komme eine stinknormale c++ application zu schreiben, welche mir einfach per mouseklick einige bits setzt, togglt, löscht. Wenn du jemand Referenzen hast
die ApplicationNote zeigt ja, wie man die einzelnen Funktionen verwendet. Über die Qualität der Dokumentation sag ich jetzt mal nix, da wirst du selbst dahinter kommen, wenn du mal versuchst, die SPI/I2C/JTAG-Funktionen des FT2232D zu verwenden :)
-
Thread
Anfängerfrage zu ISR und dem Timertutorial (GCC)
schreibt man direkt hin. Die (1<<n) Schreibweise nimmt man nur für Steuerregister, in denn die einzelnen Bits einzelne Funktionen haben. > TIMSK |= (1<<7); // Compare Match Interrupt aktiviert Ausserdem nimmt man die symbolischen Bitnamen, das erleichtet das Lesen deutlich. Also eher (1 << OCIE2
schreibt man direkt hin. Die (1<<n) > Schreibweise nimmt man nur für Steuerregister, in denn die einzelnen > Bits einzelne Funktionen haben. Hallo Falk, also einfach den hexadezimalen bzw. binären Wert da rein schreiben? Ok werd ich in Zukunft so machen. Falk Brunner schrieb: > Ausserdem nimmt
-
Thread
Flanke erkennen, Signal setzen
std_logic; NE555: in std_logic; BOX: in std_logic; VALID: inout bit; BOXOUT: inout bit; alter_zustand: inout std_logic; RISE_BOX: inout std_logic; FALL_BOX: inout std_logic; START: out bit; CLK_HALBE: out std_logic;
Unsigned casten, oder du änderst QINT direkt auf Unsigned, was sich empfielt, da du dann in IF Abfragen direkt mit Zahlen abfragen kannst, anstatt die Bits anzugeben! Cihan
-
Thread
BLE für Datenübertragung, Bluetooth
Werbung für sich, das IOS Gerät findet es in einem Scan automatisch. Dann kann man die Services abfragen, das sind quasi "Dienste", für diese kannst du nach den Characteristics abfragen. Jeder Service und jede Characteristics können eine beliebige 128-bit ID haben, die kannst du dir selbst erzeugen.
Lass dir den Service als String ausgeben. Die Services sind 128 bit, 16 bit ist nur die Abkürzung für bekannte Services.
-
Thread
ATTINY84A ADC Werte sind gleich
Ansicht nach keine gute Idee. Entweder ADC Interrupt oder ADSC in ADCSRA abfragen, siehe Datenblatt ("ADSC will read as one as long as a conversion is in progress. When the conversion is complete, it returns to zero. Writing zero to this bit has no effect."). Man muss, wie
Wartezeit nutzen will/muss. Interrupt kann man machen, muss man aber oft nicht. Anstatt [c] while( 1 ) { MUX setzen ADSC setzen while( ADSC gleich 1) ; ADC auslesen mach was mit dem gelesenen } [/c] kann man das ja auch modifizieren [c] MUX setzen
-
Thread
Welchen Controller für C++ Programmierung? Gesperrt
zum Thema "Theoretisches Geplänkel": Ich habs extra für die ausprobiert: Meinen One Wire DS18B20 C-Code hab ich in nich mal 1/4 Stunde von PIC24 (16bit CPU) nach PIC18 (8bit CPU) portiert.
ressourcenfressenden Abstraktion-Layern Ressourcenfressenden muss er aber nicht sein, der im oben genannten One Wire C-Code braucht genau 1 ASM Befehl pro IO Zugriff. > Einfach Geht schon, implementier mal eine 32bit Division in ASM. In C dauert das keine 5 Sekunden. > effektiv, flexibel, sparsam In welcher Beziehung
-
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
ATmega644 16bit Timer Compare Interrupt
Vergleichs- Regiser setzen OCR1AH = Byte1; // 16 Bit Compare Register A obere 8 Bits OCR1AL = Byte0; // 16 Bit Compare Register A untere 8 Bits sei(); // alle Interrups wieder freigeben TIMSK1
------------------- Wert = PortD_IN (Schalter1); // Schalter für Timereinstellung abfragen Wert = Wert & 0xF0; // Wert Maskieren Timerwert = Wert >> 4; // Wert um 4Bit Schiften und in "Timerwert" ablegen //----------------------------------------
-
Thread
Cortex M7 zu überzüchtet
Manfred Dillberger schrieb im Beitrag #3955366: > Kann man die noch in C programmieren oder wird hier z.B. Javascript > (Ajax) sinnvoll? ich programmiere sogar 4 x 3GHZ und 16GB Ram mit C(++) Müsse auch nicht das in C eine Begrenzung der CPU Leistung gibt.
einfach nicht genug Information im Datenblatt. Es gibt keine State Diagrams die die Funktion der I2C Hardware komplett genug beschreiben. Es ist ja so dass man zum Beispiel zwischen den einzelnen Ablaufschritten die Status Register lesen muß um einen einwandfreien Ablauf der I2C Statemachine in der
-
Thread
Maxim DG508A
Schön, aber ich kann die Adressen der Sensoren nicht abfragen und drum auch nicht einzeln ansprechen. Also muss ich die einfach nacheinander auf einen Ausgang schalten. Das sollte mit dem Analogschalter gehen. Was also tun mit V- ?
> Schön, aber ich kann die Adressen der Sensoren nicht abfragen und drum > auch nicht einzeln ansprechen. Wie wäre es, wenn du, nachdem du dessen Typennummer kennst, auch mal dessen Datenblatt lesen würdest ? SEARCH ROM.
-
Thread
boolsche Variable
einzelnes Bit verändern.
mehr optimieren kann (IN, OUT, SBI, ...). Besser ist daher [C] #define porta_mirr ((volatile IOPort8Bit_t *)(&PORTA)) #define pina_mirr ((volatile IOPort8Bit_t *)(&PINA)) [/C]
-
Thread
Projekt: SerialComCNC Serielles Frontend für CNC GRBL mit ATMega
nichts weitergesendet wird, bis eben alles abgearbeitet wurde. Dies liese sich mittels '?' sogar abfragen. // Returns the number of active blocks are in the planner buffer. if (bit_istrue(settings.status_report_mask,BITFLAG_RT_STATUS_PLANNER_BUFFER)) { printPgmString(PSTR(",Buf:")); print_uint8_
Schwerwiegender > Verbindungsfehler Programm wird geschlossen" > Was kann das sein? > > OS ist Win10/64Bit Hey, das hatte ich auch, nachdem ich das setup in C/Programme installiert habe läufts
-
Thread
Problem bei Tasterabfrage mit dem 74HC164
eine Variante die paar Striche in < 20kB unterzubringen ;) Zum Problem: am Besten zyklisch ein einzelnes Bit durch die Register schieben und gleich danach (vor dem nächsten schieben) die Rückmeldung abfragen.
hp-freund schrieb im Beitrag #2808785: > Zum Problem: > am Besten zyklisch ein einzelnes Bit durch die Register schieben und > gleich danach (vor dem nächsten schieben) die Rückmeldung abfragen. ganz viele 1 ("einsen") und nur eine "0" durchschieben. Dort, wo die "0" anliegt, kann
-
Thread
Auf einen UNO mehrere I2C Adressen laufen lassen
#6903157: > Der Uno liest drei eigene Sensoren aus (SPI oder ähnliches) und schickt > sie als I2C-Slave an den Master, wenn der ihn abfragt. Warum diese vermischte Funktionsbeschreibung. Bei I2C ist der Master der Herrscher über die Datenübertragung und legt mit seinem Clock fest, wann ein Bit über den Bus geht. Der Slave schickt gar nichts, sondern der Master holt die Daten Bit für Bit ab. Zum Abfragen und Daten schicken/senden bräuchte man halbwegs eigenständige Transceiver.
-
Thread
Auslesen eines Sensors mit I2C / AVR TWI
schau Dir die gesamte Kommunikation auf einem digitalen Oszilloskop oder LogikAnalyzer an. Da I2C (in der Regel) beliebig langsam sein darf, kannst Du es auch mal "zu Fuß" ohne TWI versuchen und die Signale mit LED's anzeigen. So kannst Du jedes Bit einzeln sehen und prüfen.
gibt allerdings auch Slaves, die gar keine Register haben. Die senden und empfangen typischerweise einzelne Bytes oder eine bestimmte Anzahl von Bytes. Z.B. kenne ich einen A/D Wandler, dem man einen Befehl als einzelnes Byte sendet und beim Lesen immer zwei Bytes liefert (16bit Integer). i2c_communication
-
Thread
Hextastatur
Hmm, gefordert war ja ein 4-Bit-Ausgang. Da trifft die Matrixansteuerung natürlich nicht so ganz. Die hat zwar vier Bit Ausgang, benötigt aber auch noch vier Bit Eingang und ein wenig Code zur Abfrage. Echte vier Bit reichen allerdings
und Du kannst den vier-Bit-Port abfragen, welche Taste gedrückt wurde. (klappt auch hervorragen, wenn der µC im Sleep-Mode ist). Gruß, Markus_8051
-
Thread
C - Funktion von Strlen verstehen
bit set (so the byte was less than 0x80). Finally, by ANDing these two sub-expressions the result is the high bits set where the bytes in v were zero, since the high bits set due to a value greater than
++) n++; return n; } [/c]
-
Thread
Motorfader Midi
zu meinem neuen Bauprojekt. > > (1) Ich suche einen Mikrocontroller mit dem ich viele Potis abfragen > kann (viele ADC-Eingänge). Wenn diese Limitierung nicht wäre, welchen µC hättest du denn sonst genommen? Sprich: mit welchem µC (bzw. µC-Familie) kannst du umgehen? > (2) Oder ist es möglich
einfache Sache. Zumal du ja nicht nur Pins für die ADC brauchst, sondern ja auch noch den Motor jedes einzelnen Faders ansteuern können musst, was dann wunderbar in die jeweiligen Satelliten-µC passen würde. Apropos Motor: > (3)Ich habe Motorfader. Mit dem Mikrocontroller möchte ich den fader > abfragen
-
Thread
Wie zerstöre ich Festplatten richtig?
dabei handelte es sich allerdings um einen riesigen Aufwand und die Datenmenge betrug nur einige einzelne Bit's. Ein einmaliges Überschreiben z.B. mit DBAN reicht also auch für sehr heikle Daten völlig aus. Ist man paranoid, dann bohrt man danach noch mit einem stumpfen 10er Bohrer dreimal durch den
eben überall. Wer weiß schon, ob in der Festplatte nicht ein kleiner Sender eingebaut ist, der jedes Bit sendet, welches rein- und rausgeht?
-
Thread
AVR <--> 89C52
Kinderspiel, weil man die Programme einfach im RAM ausführt. Außerdem kann ich mit Hilfe des Monitors einzelne Port-Bits auch mal von Hand modifizieren, um die Reaktionen der externen Schaltung zu sehen.
niemand empfehlen...." Ich schon, besonders, wenn man wie ich, viel mit dem CAN-Bus macht (z.B. T89C51CC01 mit internem CAN). Man hat einfach die größere Auswahl an On-Board-Peripherie, z.B. auch 8-Kanal 24Bit-ADC (Gain 1..128), 16Bit-PWM beim MSC1210. Peter
-
Thread
Arduino Display ohne fertige Funktion ansteuern
es zum Laufen bekommt. Top beispiel! Schau mal auf Seite 34. >Dort werden immer nur die Bits für > die einzelnen Funktionen (Löschen, Cursor bewegen, usw.) und die Bits > für die Zeichen angegeben. ja, die Kommandos auch. Dafúr denkst du dir dann ein System aus, wie du die funktionen
kann, ob da nur 2x 4 Bit oder 1x 8 Bit ankommen. Ansonsten ist eigentlich alles gleich. mompf schrieb im Beitrag #4488363: > digitalWrite (RS, HIGH) Laß doch bloß solches Zeugs bleiben. Du hast einen µC, der µC hat Pins
-
Thread
PWM mit 20 Bit Auflösung
denke darauf bezieht sich auch der Orginal-Poster. Allerdings bist du mit der Auflösung an die 8-Bit des Timers gebunden. Das heißt du erreichst maximal 8 bit Auflösung (OCR1C = 255).
ist das ganze in einer Regelschleife eingebunden. In diesem Thread sollte es eigentlich um einen *C-Code* gehen, wenn der auch auf kleinen µC's wie dem ATtiny25 laufen würde, wär's schön. Erstes Ziel ist es erst mal eine 16-Bit PWM zu erreichen. Später soll es eine 20-Bit PWM sein. Problem ist bei
-
Thread
Addition & Multiplikation mit FPGA
hm, sorry vergiss es einfach. (es sollte ein 2-bit schieberegister sein - mit einzelnen NAND-Gattern). dann muss ich anders fragen (solange meine Posts noch nicht unter Rubrik spam gehen...). Wie sieht ein 8-bit Schieberegister in VHDL aus, das
@ esch (Gast) >hm, sorry vergiss es einfach. (es sollte ein 2-bit schieberegister sein >- mit einzelnen NAND-Gattern). Das macht man nicht, auch nicht zu Übungszwecken. Das ist akademischer Unsinn. >dann muss ich anders fragen (solange meine Posts noch nicht
-
Thread
Zweidimensionales Array im EEPROM eines ATMEGA168A auslagern (nur lesen)
davon in ein einziges byte packen. Am besten schreibst du dir zwei Funktionen, mit denen du die einzelnen Bits komfortabel lesen und schreiben kannst. Stichwort dafür sind Bitoperationen.
Möglichkeit die "0" und "1" Werte platzsparender > als mit uint8_t zu speichern? Guck mal in deinem C-Grundlagen Buch nach "bit field"
-
Thread
Die andere Firmware für AVR-NET IO
verwende das Atmel AVR-Studio auf Windows. Schwierig war, dass makefile nicht zu AVR-Studio passte. Die c-Files hab ich dem makefile entnommen und einzeln in AVR-Studio geladen. Da im Orginal makefile aber noch Variablen wie AVRNETIO stehen und ich nicht weis, wie man die entsprechen ins Sudio- makefile übernimmt, hab ich einfach die entsprechenden (# if defined ..) Abfragen in der ethernet.c u.s.w rausgenommen und jetzt läuft sie nach langem tüfteln und studieren. Aber bei der Sensoranzeige bin ich dann doch erst mal gescheitert. Also danke noch mal für Deine
-
Thread
Probleme mit Aufgabe für Bitoperationen
unsigned char Status = 0; ... [/c] hast du bereits die Speicherfläche für 8 Bit. Die Zuweisung von 0 sorgt einfach nur dafür, dass an dieser Stelle alle 8 Bits gezielt auf 0 sind. Du musst sie nur noch gezielt einzelne Bits auf 1
einiges weitergeholfen. Eine Frage habe ich aber noch: Wenn wir zunächst den Char "Lampen" mit [c]unsigned char lampen=255;[/c] angeben, sollte es sich doch um Byte handeln und nur die Stellen der einzelnen Bits. Sprich die 255 ergeben sich aus 128,64,32,16,8,4,2,1 der einzelnen Bits die addiert
-
Thread
Webserver zur Temperaturmessung
mit deiner Website ist echt komisch, der baut einfach die Sidebar nicht auf die anderen Seite wie c.htm oder t.htm laufen aber. Planst du eigentlich den Softwareumstieg auf den ATmega 644? Die 2 Fuses-Bits muss ich doch in PonyProg setzen (Also Haken dahin machen) oder? Wenn ich die NICHT setze
mit einem Delay dann mit einem Timerinterrupt. Tasten abfragen, ganze Register auslesen und beschreiben, einzelne Bits, auslesen beschreiben. Ich weiß ja nicht ob du überhaupt schon mal programmiert hast, wenn nicht, wirst du dir wohl zuerst ein gutes C Buch
-
Thread
SPI und SCK Problem
vielleicht solltest du es so setzen: [c] DDRB = (1<<PB4); PORTB |= (1 << PB4); [/c]
@holger Recht hast Du. Nur leider ändert das wie mans dreht und wendet nur die Frequenz (Bit 0 ist in SPSR und SPFR für Frequwnz zuständig). Und das mit der Syntax finde ich eigentlich logisch! Die beiden Ausdrücke sind doch equivalent. Ob Du nun die Bits einzeln negierst, oder den Gesamtausdruck
-
Thread
Aquariumsteuerung - LED über ein Taster Ein und Aus
: ; hier wird nun die LED eingeschaltet cbi PORTD,4 ; Ausgang rücksetzen ldi r18,0x00 ; Bit für LEDOFF rücksetzten Ich hätte eine Idee wie man das über einen Taster realisieren könnte. Wenn ich zum Beispiel den Zustand der LEDs abfragen könnte. Dann könnte ich sagen wenn die LED an ist
rjmp pb2islow pb2ishigh: nop ; PB ist high, dann gehts hier weiter [/pre] abfragen.
-
Thread
Warum läuft BCD Schalter Abfrage nicht ? (Atmega8)
Hallo, Ich hoffe ihr könnt mir helfen, ich brauche eine möglichkeit über einen BCD Schalter 10 verschiedene Programme anzusteuern, bisher hab ich es so wie im Anhang gelöst, jedoch funtioniert die lösung nur einmal, dann geht nix mehr hilfe !. $regfile = "m8def.dat" 'Atmega 8 definieren $crystal = 8000000 'Taktfrequenz Config Pind.2 = Input 'PIN C 0 EINGANG Config Pind.3 = Input 'PIN C 1 EINGANG Config Pind.4 = Input 'PIN C 2 EINGANG Config
-
Thread
BASCOM, Imput Port als Byte Variable abfragen
Hallo, ich frage mich grad, ob es möglich ist in Bascom das Input eines gesamten Portes als Byte Variable abzufragen. Habe bisher immer geschrieben IF PINA.0 = 0 AND PINA.1 = 1 AND PINA.2 = 0 AND ..... then Is mir etz zu dumm geworden :D
-
Thread
LPC1100, superguenstig, 8-bit? Wird immer unnoetiger
kaufen, der so ärmlich mit SRAM bestückt ist? Und die Bauform, naja. Eine Innovation wäre ja mal ein 32-Bit-uC als DIP.
Gastino schrieb: > Eine Innovation wäre ja mal ein 32-Bit-uC als DIP. Gibt es doch. Sogar 8 einzelne 32bit Prozessoren auf einem Chip, und mit 32kByte RAM. Das ganze im DIP40 Gehäuse. Kostet auch nur 99 cent ($-cent) pro Prozessor (also knapp 8$ für den
-
Thread
RFID Leser mit PC verbinden, Tag-verwaltung auf dem PC. ggf. mehrere Leser greifen auf gleiche DB zu
den USB-Port einstellen musst und schon kannst du mit den Befehlen (in dieser .PDF beschrieben) abfragen an den mC und somit an den Leser schicken." ...oder sowas... Denn ich weiß ehrlich gesagt nichts von Hyperterminal und weiß nicht was eine Gaub ist (oder sowas ... irgendwas mit 9600 und 8bit und
Programmcode ob der Tag irgendwelche Rechte hat oder sowas, sondern schickt die ID gleich an den mC. Da liegen auch die 2 Bits vom Antennenumschalter an. Diese Daten schickt er (kodiert oder nicht) an den PC, er schaut nach was der Tag darf und was nicht, sendet Daten an den mC der dann bestimmte Relais
-
Thread
AVR-C Anweisungsreihenfolge NICHT dem Compiler überlassen..
stärken von C/C++. > Ist wohl eher das Gegenteil.. C und C++ geben dir scharfe Waffen. Wenn du dafür nicht stark, schlau oder willens genug bist, gibt es genug Alternativen, mit denen du deine Probleme ebenfalls
bestimmten ram, sonder nur den ges. 'memory' clobbern? Und kann ich statt "r15" auch "Das Register dieser C-Variablen" clobbern? >Mit einem Timer-IRQ kannst du in regelmäßigen Abständen eine Leitung >abfragen und darauf reagieren. >Willst du in möglichst wenigen (einstellig) Takten auf ein Ereignis
-
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
Assembler wieder auf dem Weg nach vorn Gesperrt
ankommen, dann würde ich niemals mehr mit 8-Bit uC und Assembler anfangen.
' wo C gegenüber ASM klare Vorteile hat, auch auf 8bit.
-
Thread
Arduino Timerprobleme - suche programmierbaren Oszillator
. Siehste. [c] uint8_t mirrorByte(const uint8_t x) { uint8_t rightBit = x & 0x01; uint8_t mirror = rightBit; uint8_t temp = x; for (uint8_t i = 1; i < 8; i++) { temp = temp >> 1; rightBit = temp & 0x01; mirror = mirror << 1 | rightBit; } return mirror; } [/c] Gut genug?
-
Thread
Protokoll für Kommandos an den MC selber schreiben
(*data); data++; } } [/c]
dann auch das CRC Polynom > erhöhen? > Den Link hab ich mir schon durchgelesen, aber wie ich das in C schreibe > ist mir noch ein Rätsel... Die einfachste Prüfsumme wäre via XOR, lies mal das z.B.: http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/xor.html Und hier für Arduino: http://timzaman.wordpress.com
-
Thread
I²C tolle Alternative
Leute! Ich habe mir gerade den Baustein PCF8574 etwas näher angeschaut. Es handelt sich um einen I²C Baustein, welcher 8 parallele I/Os hat. Mein Frage dazu: Wie schalte ich jetzt einen Output auf einen Input und umgekehrt? Es kann ja auch sein, dass ich 4 Bits als Input haben möchte und 4 Bits als
benutzt werden kann. Der zweite Nachteil besteht darin, dass, wenn man ein Byte hineinschiebt, die einzelnen Bits während des Hineinschiebens schon angezeigt werden. Das heißt, Bit 7 durchläuft alle Bits, bis es endlich an seinem Platz ist. Also während des Hineinschiebens wird es an den entsprechenden
-
Thread
Ereignis innerhalb einer Zeit
das Abfragen des Rückgabewerts klappt aber trotzdem nicht: [c] if ((AnrufAnzahl==2) && (warte_sec()==1)) //wenn Anrufzahl=2 UND die Funktion warte_sec() den Rückgabewert 1 liefert... {
Variablen erfolgen (die dann auch volatile sein muessen) Das wars. Mit diesen Punkten hast du den C-spezifischen Teil der Interrupts erledigt. Der Rest ist Datenblattstudium: Welches Bit in welchem Register muss wie gesetzt werden, damit welcher Interrupt ausgelöst wird.
-
Thread
Projekt: Cypress USB FX2 an FPGA; Timing Analyse für FSM
Hallo zusammen, ich bin gerade dabei einen Cypress CY7C68013A FX2 High Speed USB 2.0 an einen FPGA Spartan 3 anzubinden. Hier der Link zum Technischen Manual: http://download.cypress.com.edgesuite.net/design_resources/datasheets/contents/cy7c68013a_
USB 2.0 High Speed Modul inklusive eines Treibers. Die DLL's sind für unterschiedliche Sprachen wie C++. Die Beschreibung der einzelnen Funktionen sind eingentlich sehr gut http://www.braintechnology.de/braintechnology/usb_fastinterface26.html
-
Thread
GCC: variable may be used unitialized
, bitmap, R.w * R.h, Color.bg, Color.fg); } return EXIT_SUCCESS; } [/c] Der Compiler mahnt in der markierten Zeile an: "warning: 'bits' may be used uninitialized in this function [-Wmaybe-uninitialized]" Meine naive Denkweise wäre: "Mit der Initialisierung bit=0 ist
Performance Ohne if macht das Programm nicht mehr dasselbe: Das if prüft nämlich, ob die unteren drei bits in der Variablen bit gesetzt sind. Die Zuweisung [c] bits = *bitmap++; [/c] wird durchgführt für bit = 0, 1, 2, 3, 4, 5, 6 und NICHT für 7, 15 usw. > 3. Am Schluss der Schleife ein bits =
-
Thread
Sieben-Segment-Anzeige? Sehr einfache Ansteuerung?
Ich könnte auch einen 40 Pin'er nehmen... Oder ein Schieberegister? Dafür brauchst du 2-3 Pins am uC. (ich habs auch schonmal mit 1 geschafft ;-) Man nimmt nicht einen uC und macht das, was der am besten könnte (nämlich Bits drehen und schieben) anschliessend in Hardware. Also, ich zumindest nicht
mehrere in einem IC eingebaut. > Flimmert dass dann nicht wenn ich keinen Enable bzw Speichern - Bit > sende? Es flimmert nur, wenn dein PIC nicht schnell genug zwischen den einzelnen Anzeigen umschaltet. Der der µC aber locker in der Lage ist, in einer Sekunde alle Anzeigen 100 mal durchzugehen
-
Thread
Einige Verständnis Fragen zum TWI (I²C)
wir übertragen Bit für Bit Jain. In dem Sinne überträgt man immer nur Bit für Bit, allerdings sind die meisten I2C Librarys so geschrieben dass man direkt ein Byte an die Sendefunktion übertragen kann. Martin Kathke
der bits falsch verstanden > > | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | > | ADRESSE | R/W | Danke, ja da habe ich falsch herum gedacht aber
-
Thread
Labor Netzteil
sie aber recht schnell sein(min 400kHz)damit man mit HW-SPI die DA/AD's ansprechen kann. Ach ja 16Bit DA/AD kann man natürlich nehmen, ich dachte nur an den Preis, aber das müsste man mal untersuchen. Überlege gerade, eigentlich braucht jeder Einschub seinen eigenen uC um selbstständig arbeiten zu können
ganz so viel zeit, aber noch cniht aufgegeben. Zur Zeit beschäftige ich mich mit dem Display (T6963C) 240 x 64 Pixel und dann werde ich wohl mit dem Digitalteil Anfangen. Wenn ich dann saubere Referenzspannungen habe ist es schon die halbe Miete. Meine Idee dazu: 2 10Bit DACs (MAX504 zB.) fuer den