-
Thread
Hilfe bei PIC Programmierung
ergeben, das funktioniert bei mir leider nicht, ich weis nicht was ich da falsch mache? Auch wenn ich Bit 0 und 1 setze ( interne/externe Tacktung ) komme ich nicht auf diesen Wert !?
Ich schätze, es ist allemal sicherer, in das Manual zum betreffenden PIC zu schauen und danach die Bits zu setzen, als herumzuorakeln, ob ein gesetztes Häkchen in einem Menü nun Bit low oder high zu bedeuten hat. W.S.
-
Thread
Atmega328p in Sleep und mit Watchdog wecken
Datenblatt zum Atmega328p muss man, um den Prescaler wechseln zu können, doch zunächst das WDCE und WDE Bit setzen. Das vermisse ich irgendwie bei dir.
beschrieben, was da passiert. Und auch, was nicht passiert. Nämlich, daß der Timer-Counter beim Setzen des WDIE-Bits nicht zurückgesetzt wird. Vom manuellen Löschen war zumindest bei mir nie die Rede.
-
Thread
Assembler PIC "KOTZ" Gesperrt
löschen anfang btfsc PORTA,0 ;testen ob porta,0 gleich 1 ist bsf messwert,0 ;wenn ja bit 0 im messwert auf 1 setzen sonst überspringen rrf messwert,1 ;messwert nach rechts rotieren bcf messwert,0 ;bit 0 im messwert löschen da bei rrf das
ein Register (SFR) ist, ist egal. -> Sprut -> Befehlscode -> Befehle (Das suchst du ja) -> 3. Setzen und Löschen einzelner Bits, Bitverschiebungen, Bitvertauschungen (BSF, BCF, RLF, RRF, SWAPF)
-
Thread
ATTiny 13 Soil Moisture Sensor ADC Lese Problem
wo es dann wohl funktionierte. Deshalb war mein Vorschlag die Refernz beim T13 auch auf Vcc zu setzen: clear REFS0 bit Um in der Routine nun den richtigen channel zu setzen müssen die MUX0:1 0 sein um den Wert channel richtig zu odern. Und wenn man nur die beiden MUX-Bits setzen will, dann geht
wo es dann wohl funktionierte. Deshalb war mein > Vorschlag die Refernz beim T13 auch auf Vcc zu setzen: clear REFS0 bit > > Um in der Routine nun den richtigen channel zu setzen müssen > die MUX0:1 0 sein um den Wert channel richtig zu odern. > Und wenn man nur die beiden MUX-Bits setzen will,
-
Thread
Assembler Schleifen Tricks
Trick aus der Praxis: Zu einer unsigned Variablen 128 dazuaddieren: Einfach das hoechstwertige Bit (im 8 Bit Register) setzen. Natuerlich nur sinnvoll auf Architekturen mit schnellen und kurzen Bitbefehlen.
Trick aus der Praxis: > Zu einer unsigned Variablen 128 dazuaddieren: > Einfach das hoechstwertige Bit (im 8 Bit Register) setzen. > Natuerlich nur sinnvoll auf Architekturen mit schnellen und > kurzen Bitbefehlen. Unsignd8: 127 | (1<<7) -> 255 128 | (1<<7) -> 128
-
Thread
Z180-Stamp Modul
Z180 dann den Taktverdoppler? Die Software, die auf dem Z180 gestartet wird, muß das entsprechende Bit im 'Clock Mutiplier Register' (CMR) setzen. Den BIOS-Sourcecode hast Du ja. > - Was kommt den aus ACLK0 raus? Immer 9,x Mhz? Siehe Anhang. > Warum also die Aussage, bei Basis-board-Betrieb
Andererseits scheint auch das ldrbios.180 nach erfolgreicher Initialisierung das Flag in INIDONE nicht zu setzen...das ist wohl ne angefangene Baustelle (wie der Name -dirthy auch suggeriert). Ich schlage vor nicht 7 Bit einsparen zu wollen und ein Flag wie 55h, 0aah, oder 5ah, 0a5h zu setzen, das macht eine
-
Thread
LCD DEM240160 mit UC1698 wie Bildspeicher auslesen
Hi Diesen Satz "For 8-bit / 16-bit interface, the first 1 byte / 2 bytes of read, respectively, is a dummy read. Please ignore the data read out." (vor (3) GET STATUS &PM) hast du gelesen? MfG Spess
Tom schrieb im Beitrag #5405956: > Üblicherweise ist R4 das MSB und R0 das LSB. Du kannst mit 5 Bit 32 > 'Rotstufen' machen. Für grün gibt es meistens ein Bit mehr, das Auge ist > da empfindlicher und bei 5 Bit pro Frabe würde eins übrigbleiben. Das mit der Farbmischung hatte ich mir schon gedacht
-
Thread
I2C Display einfache Frage
Den Versuch mit dem Setzen der Portpins einmalig auf 0 und umschalten nur über DDR habe ich gemacht und funktioniert: [code] #define i2c_setpins_low() { i2c_port &= ~(1<<sda_bit); i2c_port &= ~(1<<scl_bit); } #define
hat denselben Inhalt wie das Display selbst. Hier mußt du Funktionen schreiben, die ein einzelnes Bit im Byte eines Array setzen bzw. löschen. Wenn du das Bild in diesem Array aufgebaut hast, schickst du dieses über I2C komplett an das Display. ------------------------------------------- By the
-
Thread
auf Einzelbit von 16/32bit word zugreifen.
Shift ? Eher nicht. Bit 12 Setzen : myword OR= 0x10; Bit 12 Loeschen : myword AND= 0xEF; Bit 12 Lesen : if (myword and 0x10) { } // implizit != 0
Sorry, byte vergessen. > Bit 12 Setzen : myword OR= 0x1000; > Bit 12 Loeschen : myword AND= 0xEFFF; Dass das niemand so gemerkt hat..
-
Thread
STM32 - GPIO-Pin lässt sich nicht setzen
Guten Abend zusammen! Ich habe ein Problem mit einem selbstentwickelten GPS-Empfänger, in dem ich einen STM32-µc (STM32F103RET6) verbaut habe. Leider bin ich weder mit Google noch im Datenblatt des Controllers fündig geworden, deshalb hoffe ich, dass Ihr mir weiterhelfen könnt. Also, nun zu meinem Anliegen: Ich möchte den Eingang eines p-MOSFETs schalten. Das Gate habe ich über einen hochohmigen Pull-Up auf 3.3V gezogen, damit der Transistor standardmässig sperrt (siehe Schaltbild). Am Controller habe ich den Pin PA12 auf Ausgang mit Open-Drain programmiert, um bei Bedarf das Gate auf 0 Volt
-
Thread
Bit verschieben VHDL
Achja und was ist der unterschied zwischen bit_vector und STD_LOGIC_VECTOR? Mit dem bit_vector kann ich nicht bit_vector <= bit_vector + 1 rechnen und mit dem STD_LOGIC_VECTOR kann ich nicht STD_LOGIC_VECTOR <= STD_LOGIC_VECTOR rol 1 machen. Wieso
standard_logic kann man tristate verhalten erlangen. du kannst den ausgang damit auf 1, 0 oder hochohmig setzen. bit_vector ist nur 0 oder 1 zum programmieren von solchen countern braucht vhdl aus irgendeinem grund auch std_logic. wieso das so ist, das kann ich dir jedoch nicht erklären. hier mal dein
-
Thread
Wozu übertrieben schnelle Microcontroller?
> warum überhaupt noch Mikroprozessoren mit weniger als 64 bit eingesetzt > werden Und demnächst sind es 256-Bit-Registerbreite, weil das besser ist um 4 LEDs blinken zu lassen.
gibt es kein PORTC Register. *portpin_set_output(PORT_C, 8);* Würde entweder PTC8 auf Output setzen oder PTC0, wenn Port C nur 8 Bits breit ist. Da die Pin-Nummer ja eine Variable ist, kann die ja im Programm parktisch den ganzen Bereich von 0 bis 255 einnehmen: [c] for(i=0;i<8;i++) portpin_set_output
-
Thread
BMP180 I2C Problem?
Bosch-Code beruht heftig darauf, dass die Ergebnisse in 32 Bbit darstellbar sind. Multiplizierst du aber 16 Bit mit 16 Bit, dann kriegst du auch nur ein 16 Bit Ergebnis und keines mit 32 Bit. Du hast die Werte, setz sie in deinen Code ein, lass dir die Zwischenergebnisse ausgeben und sieh dir an, wo du Abweichungen
beruht heftig darauf, dass die Ergebnisse in 32 Bbit > darstellbar sind. Multiplizierst du aber 16 Bit mit 16 Bit, dann kriegst > du auch nur ein 16 Bit Ergebnis und keines mit 32 Bit. > > Du hast die Werte, setz sie in deinen Code ein, lass dir die > Zwischenergebnisse ausgeben und sieh dir an,
-
Thread
Programmierbare Relaiskarte - Konfigurationsdaten Lesen/Speichern/Übertragen
nur 6 Bit. Zusammen mit den 2 BIt von der Geräteadresse macht das wieder 8 Bit und das wäre dann perfekt um in einem einzelnen uint8_t zusammengefasst zu werden. Konzeptionell maximal 4 Geräte mit jeweils 64
GET_CONFIG:END;[/code] L:<DatensatzNr>:<IR-Taste>:<Options>:<Port>; Die Definition des gesetzten Bit bedeutet '-' = alter Zustand bleibt, '0' = off und '1' = on. Solange ich die Ports nicht setze läuft es alles reibungslos. Bei der gesetzten Konfiguration laufen Taste 2 und 3 ohne Probleme. Drücke
-
Thread
Bitlogik - Bitmasken - universelle Zuweisung
asdf wMask | ? | ? | asdf wValue | ? | ? | Ergebnis |2.Bit im |2.Bit im | |Bitbereich |Bitbereich | |setzen,Bit1 |setzen,Bit4| Beim Ergebnis ist es ja in beiden Aufrufen ein anderes Bit. Aufruf 1 ist Bit 1 zu setzen. Aufruf
in die Tabelle einfuegen: Ergebnis |2.Bit im |2.Bit im | |Bitbereich |Bitbereich | |setzen,Bit1 |setzen,Bit4| | 0x02 | 0x10 | >3. Wert 0x01 (0. Bit soll 1 sein) >Ergebnis
-
Thread
rechnet der preprocessor in C gcc (AVR) multiplikation aus?
In C kann man sich auch Markos definieren, die das Setzen von Bits leichter lesbar machen. Mein Favorit: [code] #define LED_ON PORTB |= 4 #define LED_OFF PORTB &= ~4; void main() { LED_ON; _delay_ms(1000); LED_OFF; } [/code] Dem
Dies ist sprachlich natürlich korrekt, aber u.U. nicht das was man will, nämlich effizient mehrere Bits auf einmal setzen.
-
Thread
ASCII-Zeichen selber entwickeln um im (VGA)Screen Modus 8 nutzen.
> Ich verstehe die Tabellen oben nicht so, das ich da eine Lösung finde > welchen Port ich wie setzen muss. Du musst einzelne Bits in den Registern setzen oder löschen. Wie das geht, hängt von der Programmiersprache ab. Für C müsste es im Forum auch ein Tutorial geben. Edit: da ist es ja:
ich, damit ich die Strichlinie weg bekomme. --------------------------------- Du musst einzelne Bits in den Registern setzen oder löschen. ---------------------------------
-
Thread
STM32L073RZ läuft auf HSE nur halb so schnell wie erwartet
. Habe ich doch, mit Cube MX generiert. Damit tritt der gleiche Fehler auf, wenn ich das HSEBYP Bit falsch (nicht) setze. Und mit Arduino ebenso. Und auch ohne Framework. > hatte noch nie Probleme. Dito. Deswegen hat es mich ja überrascht. Bis vor kurzem dachte ich, dass Bit sei optional und
Die einzige Frage, die man hier noch sinnvoll weiter diskutieren kann, > ist: .... ob man beim Setzen eines Registers die Tokens der einzelnen Bits addiert oder ver-odert. Ich sage: nein, addieren von Bits tut man nicht tuten, denn es könnten mal ein paar Bits übereinander liegen und das ergibt
-
Thread
mysteriöse NoName 2 TB SSD mit sehr komischen Verhalten
Käuferkonto löschen, und weitere Lieferungen an deine Empfängeradresse auf eine Exklusionsliste setzen.
Wirtschaftsmathematik". Soso, ergo ein Mathematiker, na denn prost- Viel Spaß mit Deinen Mega-TINY BITS wünsch ich Dir!
-
Thread
Zeiten bei den AVRs - großes Problem
Bug vorliegt. Ich habe mir das vor ein paar Jahren mal näher angeschaut, damals konnte Bascom mit 16Bit-Dauer umgehen, aber FastAVR (anderer Basiccompiler) nicht. Letzerer hat dann einfach die unteren 8Bit genommen.
zurückgeschrieben wird. Für Quarze in dem genannten Bereich müsstest Du die Häkchen bei allen CKSEL-Bits entfernen ('unprogrammed', also '1') und bei CKOPT ein Häkchen machen ('programmed', also '0'). Die SUT-Bits setze ich auch meistens '1' (kein Häkchen). Damit müsste es eigentlich zunächst funktionieren
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware
übertragende Datenmenge reduziert sich auf ein Viertel, da nun pro Pixel (bei 16 Planes) statt bisher 16 Bits (1 pro Plane) nur noch vier Bits (2^4 == 16 Planes) übertragen werden müssen. RLE funktioniert hier natürlich immer noch, da man ja statt einzelner Bits auch 4-Bit Sequenzen zusammenfassen kann. Auch
bewerten zu können. Wie ihr selbst sehen könnt ist dieser so überhaupt nicht bestimmbar. Große Hoffnung setze ich nun in das neue FPGA-Design. Ich werd mal schauen, dass ich die Version finde, wo zumindest die Signaldarstellung funktioniert hat und die ADC-Werte als Bit pro Pixel angezeigt worden. Vielleicht
-
Thread
Frequenzzähler 1Hz - 40MHz
fx = --------- Nx Nref Nref [/c] Wir betrachten nun noch die 64-Bit Arithmetik: "fref * Nx": 32-Bit * 32-Bit liefert ein 64-Bit Ergebnis. "fref" ist ~F_CPU "Nx" setzt sich nun aus einen 16-Bit Software Zähler in Timer0 und den 9-Bits aus HC590 und dem einen Bit HC7474 zusammen. "Nref" setzt sich nun aus einen 16-Bit Software Zähler in Timer1 und aus 16-Bit des Timer1 zusammen. Die nachfolgende Division einer 64-Bit Zahl "fref * Nx" durch eine 32-Bit
-
Thread
Fehlersuche Displaysteuerung
Bit (MSB) ist immer das linke. Um nun einen Pixel zu setzen mußt Du später, wenn Du soweit bist, mittels X- und Y-Koordinate die Byte- und Bit-Adresse berechnen. Beispiel: X = 51 (Horizontal von links
ordentlich :-) Das eigentlich verbleibene was wichtig ist: Aber wenn ich jetzt eine Adresse mit 16Bit setze, dann muss ich ja zwei Byte übertragen. Welches enthlält Bit 15 und welches Bit 0? Das erste ist doch das, welches Bit 8-15 enthält, oder?
-
Thread
OSD programm mit einem ATmega32u4
// Teilergrundwert durch zwei teilen um nächstes Bit anzusprechen } PORTB &= ~(1 << PB2); // SDIN auf Null setzen um das Ende des Datenwortes zu definieren PORTB &= ~(1 << PB1); // Setzt das Taktsignal auf Null keine falschen
// Teilergrundwert durch zwei teilen um nächstes Bit anzusprechen } PORTB &= ~(1 << PB2); // SDIN auf Null setzen um das Ende des Datenwortes zu definieren // Ende der seriellen Datenübertragung PORTB |= (1 << PB0); _delay_ms
-
Thread
ATMega128: Reset nach setzen von PORT_E3
Hi, aus irgendeinem Grund resettet sich mein ATMega128 wenn ich Bit3 vom PortE als Ausgang auf high setze. Das hängt sicher mit einer alternativen Port-Funktion zusammen. Aber welche kann das sein? Aktiviert habe ich nichts, nur UART und Interrupts. MfG Andy
Also, im MCUCSR-Register steht nach dem Reset eine 1. Hat keiner ne Idee? Wenn ich bit2 verwende passiert ganau das gleiche. Bei Bit4 funktioniert alles so wie gewollt. DDR ist richtig gesetzt.
-
Thread
ATtiny Watchdog
gehört ein |= hin, ansonsten überschreibt man das Register komplett, und setzt nicht nur das eine Bit, was man setzen möchte. Ebenso sind die Klammern in Zeile 2 ohne Funktion. Das Tutorial ist doof.
gehört ein |= hin, ansonsten überschreibt man das > Register komplett, und setzt nicht nur das eine Bit, was man setzen > möchte. Ist in dem Fall aber völlig egal. WDCE muss lediglich gesetzt sein, wenn man die WDPx-Bits setzen muss und das ist da der Fall. Dass man dann zeitgleich WDCE löscht ist
-
Thread
16 bit Variable in 8 bit und 2 bit aufteilen
Annahme der Bitreihenfolge ist verkehrt: in H gehört das 0b00000011 in L gehören die rechten 8 Bits..... evtl. so: uint16_t pwm = 0b0000001111111111; CCPR1H = pwm<<8; CCPR1L = pwm; Sind da in CCPR1H evtl noch andere Bits drin deren Wert nicht verändert werden darf ? Gruß T.
PIC16F1936 und ich glaube ich sollte lieber das HI-TECH C struct CCP1CONbits.DC1B verwenden, welches 2bit verwaltet. Ehrlich gesagt bin ich mir bei dem CCPR1H nämlich überhaupt nicht sicher. CCPR1L verwaltet definitiv 8bit. Zitat 19.5.2: "The CCPRxL contains the eight MSbs and the DCxB<1:0> bits of
-
Thread
Fuses setzen: ATmega32A mit externen Quarz (8Mhz)
weiteren Angaben sind mir unklar: LOW/MED/HIGH? Startup-Time Muss ich daneben noch andere Fuse-Bits setzen? Viele Grüße Markus
rein (z.B. 'SUT -> 10', 'CKSEL 1110', ..) oder Du bastelst Dir die Fuses von Hand zusammen. Welches Bit wo steht findet sich im selben Datenblatt im Kapitel '26.2 Fuse Bits' (Table 26-4. Fuse Low Byte, CKOPT ist in der hfuse). Es eribt sich dann sowas wie 'lfuse = 0xEE', was Du direkt fusen kannst. Beim
-
Thread
Wieso spricht man bei den 8 Bit-AVRs von RISC?
genauso wie reiner CISC schlecht ist. (ein reiner RISC ist ja zu blöd, 'draussen' im Speicher ein Bit zu setzen)
M32C - R32C, sind alles aufsteigende Serien. (keine dieser Serien ist zu blöd 'drausen' atomic ein Bit zu setzen oder 32 Bits auf ungerade Speicher-Adressen zu verteilen oder INT-Ebenen zu haben) Der R32C stellt den 68k in den Schatten! Beim RX (neuer) ist man da z.T wieder zurück gerudert; der
-
Thread
STM32: SPI (9bit/16bit)
habe (jedoch noch ungetestet): Chip Select Low //Schreiben SPI deaktivieren SPI Framelänge auf 8bit setzen SPI aktivieren ersten 8bit übertragen SPI deaktivieren 9.bit "manuell" reintakten //Lesen SPI Framelänge auf 16bit setzen SPI aktivieren 16bit Datenwort lesen Chip Select High Ich
Da die SPI-Schnittstelle ja ein Schieberegister ist, muss man sowieso 16-Bit reinschieben um 16-Bit zu erhalten. Eventuell sind noch "Dummy-Bits" einzufügen. Gruß Stefan
-
Thread
Bitmanipulation, verschieben von Bits, optimierung
Wenn's mehrere Bits zum umsortieren sind: [c] uint8_t vermischt=__builtin_avr_insert_bits (0x04217563, abc, 0); [/c] http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built_002din-Functions.html
Für nur 2 Bits braucht es doch keine Wumme wie __builtin_avr_insert_bits...
-
Thread
Einzelne Pixel auf SED1330/5 GLCD setzen
zwar fehlerfrei, aber alle 8 Pixel gibt es unregelmäßige Spitzen nach unten... Um einen Pixel zu setzen, lese ich ein Byte vom LCD, setze ein Bit und schreibe es zurück. Im Datenblatt des SED1335 findet sich bei der Beschreibung des MREAD Befehls (Daten vom LCD lesen) folgender Satz: If the cursor
In der Pixelsetzroutine habe ich jetzt mal nur den Wert gelesen und wieder ausgegeben, ohne ein Bit zu setzen. Ergebnis: siehe Bild Wenn ich die Bits setzte kommt zusätzlich noch die fehlerfreie Linie hinzu
-
Thread
Nokia 6100 Ansteuerung in C
ich in der V0.5 ein bischen rumgespielt: void n6100SendCommand(uint8_t cmd) { // CS auf Low setzen PORTB &= ~(0x01 << CS); // 1. Bit (Command/Data) per Software erzeugen PORTB &= ~(0x01 << SCLK); PORTB &= ~(0x01 << SDATA); // logisch 0 für Command //asm volatile ("nop");
0x01<<CPOL)|(0x01<<CPHA); SPDR = cmd; // Auf Übertragung warten und CS wieder auf High setzen while(!(SPSR & (0x01 << SPIF))); PORTB |= 0x01 << CS; // CS wieder auf 1 SPCR = 0x00; // SPI wieder disablen } erstmal hab ich das CPHA bit gesetzt. dann kamm ein bild mit der
-
Thread
Atmega8 und 16-Bit Timmer
der Initialisierung des Timers. Da 1min doch eine etwas längere Zeit zu messen ist hab ich den 16-Bit Timer in Verwendung bei größtem Prescaler = 1024. Meine CPU Frequenz ist 8MHz. 8MHz/1024 = 7812,5kHz D.h. mein 16-Bit Register wird 7812 mal in der Sekunde inkrementiert, richtig? Wenn ja
unsigned short int usiMinute=0; //Funktionsdeklaration (Prototypen) //ADC Init. void vinitADU_8Bit(unsigned short int); //Timer Init. void vinitTimer_16Bit(); int igetADU_8Bit(unsigned short int); //******************************************************************************************
-
Thread
Tastenentprellen während externen Interrupt - ATmega16
werden. Also einfach mal den Pseudocode nachvollziehen IO-Interrupt: Signal kommt, Zeit und Bit setzen Zyklus: Zeit = 0 dann kein Ereignis und weiter Zeit -1 -> Zeit = 0, dann Status Bit übernehmen oder Timer-Interrupt: Zeit = 0 dann kein Ereignis und weiter Zeit -1 -> Zeit = 0,
: > Also einfach mal den Pseudocode nachvollziehen > > IO-Interrupt: > Signal kommt, Zeit und Bit setzen > > Zyklus: > Zeit = 0 dann kein Ereignis und weiter > Zeit -1 -> Zeit = 0, dann Status Bit übernehmen > > oder Timer-Interrupt: > Zeit = 0 dann kein Ereignis und weiter > Zeit -1
-
Thread
Junkers CAN-Bus Protokoll
Sampling: "); Serial.println(settings.mTripleSampling ? "yes" : "no"); Serial.print("Actual bit rate: "); Serial.print(settings.actualBitRate()); Serial.println(" bit/s"); Serial.print("Exact bit rate ? "); Serial.println(settings.exactBitRate() ? "yes" : "no"); Serial.print
:24.739 -> Actual bit rate: 10000 bit/s 11:01:24.739 -> Exact bit rate ? yes 11:01:24.739 -> Sample point: 64% Sender: Configure ACAN2515 Bit Rate prescaler: 16 Propagation Segment: 8 Phase segment 1: 8 Phase segment
-
Thread
Timer zählt nicht atmega32
. was mich schon zur ersten Frage bringt^^ ich bin ja kein freund von irgendwelchen namenlosen bits setzen. allerdings funktioniert diese schreibweise für z.b den prescaler nicht: ; ldi TCCR1B, (1<<CS12) |(0<<CS12)| (1<<CS10) das hauptproblem ist aber dass der timer nicht zählt. ich
funktioniert das nicht. TCCR1B muss mit einem out beschrieben werden und nicht mit einem ldi Erst die Bits in einem Register setzen, dann das Register mit einem out ausgeben. Dann funktioniert das auch. > ich hab aus dem tutorial nicht herausbekommen was genau den timer nun > veranlasst die zählung zu
-
Thread
AVR 32-bit. Externes OLED Display verwenden.
MOSI müssen so konfiguriert werden, dass sie vom SPI-Modul kontrolliert werden; SPI-Mode auf 0 setzen (CPHA=0, CPOL=0) SPI-Frequenz vorerst auf 1MHz oder darunter einstellen; 8 bits pro Transfer (pro SPI-Datenwort) einstellen; Delays zwischen den einzelnen Transfers (Bytes bzw. SPI-Datenwörtern)
du einen Befehl sck_off definieren, der den sck-pin auf 0 setzt. #define sck_off Port_WriteBit( ???, PORT_OFF) etc. Voraussetzung ist aber, dass du zumindest weißt, wie Portpins zu setzen und zu löschen sind.
-
Thread
GNUBLIN www.gnublin.org
das Parsen im Modul, andererseits das Erzeugen des Strings im Anwenderprogramm. Jetzt kommt ein 16bit-Hex-Wert rein, in der README.txt die Auflistung der Bits für die config. Beispiele: echo "0900" > /dev/lpc3131_adc # setze ADC auf 10bit, CH0, 75 messungen cat /dev/lpc3131_adc Das 0x als Prefix
setzen der Auflösung klappt noch nicht, kommen immer 10bit bei raus.
-
Thread
Universelles Eingabegerät mit Drehencodern
elektrischer Sicht in einer Reihe arbeiten und wieviele in einer Spalte. Z.B. könnte man jeweils 8 Bit parallel über ein Byte schreiben und damit in nur 8 Takten alle LEDs setzen, was insbesondere für langsame Controller günstiger wäre. Die Encoder möchte ich eigentlich direkt von hinten anschliessen
für die Phasen für 0 und 1 - in manchen Datenblättern auch 1/4 zu 3/4. Rausgeschoben werden alle Bits seriell für alle LEDs in der Kette ohne Pause. Es sind jeweils 8 Bit für die 3 Farben in der Reihenfolge R.G.B. mit jeweils MSB first. Also die ersten 24 Bit für die erste LED, die zweiten 24 Bit für
-
Thread
[S] 8 Bit ISA Graphikkarte
Moin Suche so'n Ding, muss zwingend 8 Bit sein, nicht 16 Bit. Ebay gibt im Moment nix her.
aktuellen Monitor dran und CGA+EGA allenfalls noch an einen Fernseher. Monitore der letzten ~15 Jahre setzen üblicherweise mindestens die Zeilenfrequenz von VGA voraus, Es ist zwar nicht stilecht, aber wenn dem 2. Stecker nichts mechanisch im Weg steht lassen sich manche 16bit ISA Karten auch in einem
-
Thread
Bit-Shift auffüllen mit Einsen/Nullen
shift right" macht fast was du willst: der berücksichtigt nämlich das Vorzeichen. Wenn das höchste Bit 1 ist, wird mit 1 aufgefüllt, sonst mit 0 allerdings müsstest du den ersten Shift "normal" ausführen und dann das höchste Bit "zu Fuß" auf 1 setzen. arithmetic shift sollte vom Compiler automatisch
befehl hat, dürfte > das sogar recht effizient sein. Das Problem sind nicht die einlaufenden Bits, sondern der Shift. Ein 32-Bit Shift wird bei AVRs recht gern zur Schleife, weshalb das Setzen des obersten Bits auch nicht viel an der Sache ändert. Optimal übersetzt sind das bei unbekanntem n in
-
Thread
avr: setzen von UCSZ beieinflusst baudrate register
hi, habe grade im simulator festgestellt, dass UCSR0C |= (3<<UCSZ00); //Asynchron 8N1 UBRR0H auf 0x06 setzt. warum das? wenn man jetzt die baudrate setzt bevor man UCSZ setzt, hat man ein problem...!? btw ist UCSR0C |= (3<<UCSZ00); ja initial, man könnte sich das also sparen und UBRR wird nicht gesetzt.
-
Thread
DOGM162 Display funktioniert nur sporadisch
togglen hier soll kann ich dir auch nicht sagen, bei SPI wird die Übertragung nach den 8 übertragenen Bits abgeschlossen bzw. mit CS=H > void Disp_Command(int Data) > { > PORT_CSB &= ~(1 << PIN_CSB); > _delay_us(50); // warte auf Display > > // Command Mode vorbeireiten; setze RS low
durcheinander kommen könnte, wird da ein Bit verschluckt ist alles danach nur noch Bit-Brei.
-
Thread
16-Bit Zahl auf LCD
Hallo, kann jemand den oberen Code einmal in C für einen Mega8 umschreiben ? Die 16Bit Zahl soll aus dem Zählregister des Timer1 gelesen werden und dann auf einem LCD-Display mit einer 4-Bit-Ansteuerung angezeigt werden. Das wäre sehr nett. Gruß D.
Sonst genau so wie B. Das schwierige war nun, einen geeigneten Zähler zu programmieren. Der einfache 8Bit-Timer0 zählt ja nur bis 255. Da hätte man dann bei jedem Überlauf Variabeln setzen müssen und Gleichungen bearbeiten, damit der Gesamtzählwert angezeigt wird. Also dachte ich mir, nehme ich den Timer1
-
Thread
Int bit auslesen
Hallo, wie kann ich in C die Bits eines Int wertes auslesen? So kann ich sie schon setzen: [c] test |= 1<<1; // bit 1 setzen test &= ~(1<<2); // bit 2 löschen [/c] aber wie kann ich diese auslese? So funktioniert es *nicht* : [c] if(test == 1<<3){ printf("Bit 3 ist eine 1"); } [/c] Kann mir jemand helfen? mfg alex
-
Thread
1602 LCD mit ATmega8535 und Bascom läuft nicht
nicht. Es kann z.B. schon im 4Bit Mode sein und auf das 2. Nibble warten. Daher muß man es erstmal in einen definierten Mode setzen, um es dann zuverlässig auf 4Bit setzen zu können. Man kann es mal durchspielen. Erst nach dem 3. Befehl
Peter D. schrieb im Beitrag #6991057: > Der Grund für das 3-malige Setzen in den 8Bit-Mode ist folgender: > Der AVR kann ja ein Reset nicht nur bei Power-On ausführen, sondern z.B. > über eine Resettaste vom Benutzer. Hi, das Problem ergibt sich immer, wenn LCD und
-
Thread
Eine Kinderfrage bzg. Struct
das schreibe ohne daß Compiler schimpft. Was möchte ich genau: ich habe z.B. eine Variable, 16bit oder 32 oder 64 bit. Ich möchte für ein Bit dieser Variablen Name geben und darüber dieses Bit setzen, löschen oder prüfen. Ich möchte das wie ober gezeigt machen, MYBITVAR0 = 1; MYBITVAR0 = 0; if(MYBITVAR0
und dann das Bit an entsprechender Stelle setzen oder löschen. Wie es beliebt.
-
Thread
Bits ansprechen
ausgeklammert Ich nutze den MicroC Compiler Es klaat nicht mit GPIOD_ODR |= 1 << GPIOD_ODR.B3; z.B. Bit 3 zu setzen :-( [code] GPIOD_ODR = 0x00000055; Delay_ms(500); GPIOD_ODR |= 1 << GPIOD_ODR.B3; //GPIOD_ODR.B5 = 1; // DDRB = (1 << DDB0) | (1 << DDB1) | (1 << DDB2) | (1 << DDB3
-
Thread
Der totale Anfänger - auf der Suche nach einem Mikrokontroller
Lass die digitalWrite Funktion weg und setz die IOs über das PORTx Register.
Beitrag #3762217: > Max H. schrieb im Beitrag #3762212: >> Lass die digitalWrite Funktion weg und setz die IOs über das PORTx >> Register. > > Danke für den Rat, nur war das keine Antwort auf meine Frage .. Doch, das war es: alle acht bit von PORTx stehen für acht io-pins, damit können also mehrere