-
Thread
ISR Aussetzer durch Volatile-Variablen-Polling ?
einer Variable in einer interrupt routine und in main. s.o. > -Spielt es eine Rolle ob es ein 8-Bit oder >8-Bit Variable ist? Ja, der Zugriff muss atomar erfolgen. Dies ist bei AVR8 nur für 8-Bit primitiven DT gegeben. > -Müssen wir an dieser Stelle zwischen den AVR-GCC Versionen > unterscheiden
gelesen oder geschrieben werden kann (atomar gelesen/geschrieben werden kann). Beispiele: Beim AVR 8 Bit, beim ARM Cortex-M3 32 Bit, beim SPARC V8 32 Bit. Auch der Z80 mit 8 Bit :) Zweite Bedingung, die CPU/Compiler macht kein reordering an den relevanten Stellen, was ich bei diesen "einfachen" Maschinen
-
Thread
Setzen einzelner Stellen eines std_logic_vector
Signal und treibt er es dauerhaft auf 0. Deswegen der Konflikt, sobald Prozess b das Signal auf 1 setzen will.
das passiert. Ja, ich wollte den Vektor bei einem Reset oder nach Signalende im Prozess a auf 0 setzen und in Prozess b wieder in den definierten Ausgangszustand bringen. Das auf 0 setzen konnte ich mir mit dem Konstrukt oben nun sparen und (fast) alles läuft wie es soll. Ich dachte, da nur RST
-
Thread
ILI9486 8-Bit Parallel Bus deutlich langsamer als SPI
BitVal) [/c]
baut das Program vernünftig auf dann dauert ein > clear display max 40 mSec. Das mag für das Setzen von Massen von Bits zutreffen. Es hilft leider überhaupt nichts für die kleinen Operationen, da wo man kleine Rechtecke füllen muss. Typisches Beispiel sind Fonts. Dort müsste man für jeden Teilbereich
-
Thread
ATMega 64, ALL AVR, Anfänger Problem
mit 0b1110000 um k auf 0b111+Channel bits von i setze. 4. Ich verknüpfe das ADMUX mit k damit im ADMUX der Channel steht UND die vorher gesetzen Bits (Die 3 MSB) (Um die Ref spannung und das ADLAR nicht zurückzusetzen). grüße
[c] void PWM_T1(void) { TCCR1A = (1 << WGM10)|(1 << COM1A1)|(1 << COM1A0); // Bit WGM10 des Registers TCCR1A High setzen TCCR1B = (1 << CS11) | (1 << CS10); // Bit CS11 und CS10 des Register TCCR1B High setzen } [/c] Ein Beispiel für unnötige / schlechte
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware (Teil5)
Hayo: no it's Windows 7 Starter Edition 32bit. Microprocessor inside the netbook is a N450 64bit but the operating system is only 32bit. Anyway nothing happened except I now enjoy the new firmware. Thanks. So long, 400
Hi guys, I'm sorry but I'm just a bit in hurry due to business reasons. So don't be angry for waiting for some answers. I will try to take some time on weekend to make things a little bit clearer. regards Hayo
-
Thread
Atmega328 SPI SPIF wird nicht gesetzt
> Entscheidend ist wirklich dass das SPE Bit als > Letztes gesetzt wird Das sieht hier anders aus: entscheidend ist der Zustand von SS beim Setzen von SPE; ich kann dieses durchaus als Erstes setzen, wenn nur SS zu diesem Zeitpunkt high ist
Veit D. schrieb im Beitrag #6367424: > Master funktioniert nur und gibt Daten raus wenn das > SPE Bit als Letztes gesetzt wird. Nein, das stimmt nicht. Man kann MSTR setzen, *nachdem* SPE gesetzt wurde. Ich würde trotzdem immer die Bits in einem Rutsch setzen. Bei manchen IO-Registern haben die
-
Thread
Neue MCU APM32F103
FPU Register 1 (Status) 12: f000 0001 and.w r0, r0, #1 verunden mit 1, also das Busy bit angucken 16: 2800 cmp r0, #0 das busy bit mit 0 vergleichen und statusflags setzen 18: d0f9 beq.n e <sc_math_sin+0xe> branch equal, also wenn busybit == 0, dann
while ( (*FPU_CFGR & (1<<27)) == 0 ){}; [/c] Durch das while und auch durch Debug kann ich das setzen der Bits 3 bzw. 27 bestätigen.
-
Thread
ATMega 168PB Interrupt Programmieren
man nicht so. Entweder PIN=(1<<x) oder PORT|=(1<<x) PORTs sind für mich die Eingänge PORT|=1<<x Bit=1; PORT&=~1<<x Bit=0 PINs die Ausgänge PINC0 setze ich einfach auf High um den Interrupt an PORTB2 auszulösen. PINC0 ist mit PORTD2 über ein Kabel verbunden. Ich möchte das einfach nur mal so
88PB-168PB_Datasheet.pdf 15.2.1 Configuring the Pin Each port pin consists of three register bits: DDxn, PORTxn, and PINxn. As shown in ”Register Description” on page 88 , the DDxn bits are accessed at the DDRx I/O address, the PORTxn bits at the PORTx I/O address, and the PINxn bits at
-
Thread
Entprellen (kein AVR) Gesperrt
AVR uint32_t nehmen und 4 Ports per Shift zusammen fassen. Manche ARMs haben ulkiger Weise trotz 32Bit Architektur nur 16Bit Ports und 16Bit Timer. Da kann ich nur sagen, was hat deren Entwickler denn geraucht.
, niemand würde es > vermissen. Es wird aber vom GCC zum Umsortieren von Bits verwendet, was hielt, wenn mehr-Bit-Werte eher nach Layouterfordernissen auf die Ports verteilt sind. Ganz ohne Einsparungen ist das nicht, um so mehr, je "wilder" die Bits verteilt sind. Man kann eben
-
Thread
OPV für Shunt-Messung (100A)
Aufbau im Rauschen und in der Temperaturdrift und dann bleiben von den 16 Bits grade noch 4 übrig. Damit kannst du den Strom in 100A/16 Bit = 6A/Bit Schritten auflösen. Ich lasse dich jetzt mental noch sehr viel Glück haben und nur 3 Bit im Rauschen verlieren, dann kannst du
Lothar M. schrieb im Beitrag #7698842: > 32768 Außerdem hat der 16 Bit.
-
Thread
Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 Heizungsthermostat
jeden Fall super. Fehlen tut mir eigentlich nur noch ne Kindersicherung ;) Ansonsten - Fuse-Bits konnte ich erst nach dem Flashen setzen - ist das normal? Ausserdem konnte ich nur mit den AVRISPmkII die Fuses setzen - der Mysmartusb light verweigert mit dem mitgelieferten Progtool (AVR-Dude
meinen, am Drehrad drehen zu müssen ;-) Andreas K. schrieb im Beitrag #3425596: > Ansonsten - Fuse-Bits konnte ich erst nach dem Flashen setzen - ist das > normal? Nö, normal ist das nicht, aber das liegt daran, dass die originale Firmware alle Lockbits gesetzt hat und somit können die Fuses nicht
-
Thread
LCD funktioniert nich
4 Bit maskieren LCD_PORT &= ~(0xF0>>(4-LCD_DB)); // Maske löschen LCD_PORT |= (data>>(4-LCD_DB)); // Bits setzen lcd_enable(); } void lcd_init( void ) { // verwendete Pins
) { LCD_PORT &= ~(1<<LCD_RS); // RS auf 0 setzen lcd_out( data ); // zuerst die oberen, lcd_out( data<<4 ); // dann die unteren 4 Bit senden _delay_us( LCD_COMMAND_US ); } void lcd_clear( void ) {
-
Thread
Universelle Tastenabfrage
Nach 500ms wird ihr dann eben die 1 an der jeweiligen Position übergeben. Aber nach 500ms wurde das Bit in key_press doch schon längst gelöscht, weil das ja sofort beim Timeroverflow nach dem setzen wieder gelöscht wird. Also müsste get_key_press() dann doch immer eine 0 liefern? Aber sie gibt ja eine
die die Tastatur - Variablen nicht verändern, dürfen ja schadlos laufen ... od'r? Ich lösche / setze daher selektiv nur das Timer - Interrupt Enable Bit des 10ms Timers. Sollte - was sehr unwahrscheinlich, aber immerhin möglich ist - genau während dieser Sperre ein Timer Overflow eintreten, gibt's
-
Thread
ADC-Kanäle sukzessive abfragen
sw2_loop: 'Schleife Datenbits mov r17,r14 ' Bit-Dauer setzen Bitdauer ror r16 SBIS SREG,0 ' 1-Bit oder 0-Bit ausgeben? RJMP _SW2_Zero SBI portb
/w/cpp/language/bit_field.html
-
Thread
Struct gut so?
Holger, was heisst sbi(DDRC,PB1); ?? Setze Bit PortB1 im DDRC?
>Holger, was heisst > >sbi(DDRC,PB1); ?? > >Setze Bit PortB1 im DDRC? Nö, setze in DDRC das Bit das mit der Konstanten PB1 definiert ist. Aufgelöst: DDRC |= 1<<1; oder DDRC |= 2;
-
Thread
Bit Array in C
Mahlzeit, wie Rene H. vorgeschlagen hat, hier als Makros: // Bits in einer Bitspur setzen/rücksetzen/testen #define SETBIT(ByteArr,Bit) ((ByteArr)[Bit/8] |= (1<<(Bit%8))) #define CLRBIT(ByteArr,Bit) ((ByteArr)[Bit/8] &= ~(1<<(Bit%8))) #define TSTBIT(ByteAry,Bit
Bit >> 3] |= (1<<(Bit & 0x07))) [/c]
-
Thread
Unterschiede zwischen ARM und ATmega in der Programmierung
eigentlich immer auf mehrere verschiedene Arten auf Portpins zugreifen. Zumeist mittels W/O-Registern zum Setzen oder Löschen von Portpins. Bei einigen Typen gibt es neben dem traditionellen Zugriff auf die Ports Speicherbereiche, in denen jedes einzelne Portpin als ein 8, 16 oder 32 Bit Boolean ansprechbar
. Beim AVR sinds vermutlich ein paar Zeilen weniger, weil dessen Peripherie halt einfach weniger Bits hat, die man setzen kann. Aber ist das schlimm? Will man das überhaupt in Assembler programmieren? Zugriff auf Peripherie ist in ARM-Assembler immer etwas umständlicher, weil man die langen Adressen
-
Thread
STM32F103 Wann GOIO_ODR,PIOBSRR und BRR?!
> BRRB > um Leds zu toggeln z.B. BRR und BSRR lässt sich nicht lesen, das ist dazu da, atomar Bits zu setzen oder zu löschen. Atomar heisst, dass nichts dazwischenfunken kann. In Wirklichkeit passiert etwas in der Art wenn man BRR schreibt: * ODR wird eingelesen * die Bits die man in BRR in
Bits setzen }[/c] die IO-Pins "hochzählen", bzw. auf einen beliebigen (Variablen) Wert setzen, wenn diese 4Bit z.B. D3..7 eines typischen LCD darstellen sollen.
-
Thread
Scheibe für Drehgeber
Gray-Code-Scheiben-Generator in Postscript (697 bytes): einfach Radius (rad), Strichdicke (inc) und gewünschte Bitanzahl (bit)setzen, und los gehts. Umwandeln in PDF: gswin32 -dBATCH -sDEVICE=pdfwrite -sOutputFile=graycode.pdf graycode.ps Im Anhang ein Beispiel mit 11 Bits.
> Postscript (697 bytes): > einfach Radius (rad), Strichdicke (inc) und gewünschte Bitanzahl > (bit)setzen, und los gehts. > Umwandeln in PDF: > gswin32 -dBATCH -sDEVICE=pdfwrite -sOutputFile=graycode.pdf graycode.ps > > Im Anhang ein Beispiel mit 11 Bits. Hey, absolut genial! Nach 5 min
-
Thread
PIC16F84 heftige Probleme, kein Oscillator schwingt an MPLAB, MPSIM.etc.bin Neuling!
Mike wrote: > Hast Du die Oszillator Selection Bits FOSC0 und FOSC1 richtig gesetzt? Wo kann ich diese Bits denn setzen? Oder wie mache ich das? Doch nicht in der .inc oder? Soll ich die bei der Initialisierung im ASM file setzen? SCHONMAL HERZLICHEN
René Manjavi wrote: > Mike wrote: >> Hast Du die Oszillator Selection Bits FOSC0 und FOSC1 richtig gesetzt? > > Wo kann ich diese Bits denn setzen? Oder wie mache ich das? Doch nicht > in der .inc oder? Soll ich die bei der Initialisierung im ASM file > setzen? in
-
Thread
ADC Channelauswahl
deine Hilfe. Das mit dem nur Kommentar ändern -> Oh gott.... Zum von dir zitierten: Die anderen Bits, für Ref.-Spg., setze ich in meiner adc_init Funktion. Ich dachte diese gesetzten Bits bleiben dann unberührt, wenn ich nur die MUX Bits ändere??? Den Rest probiere ich jetzt mal aus.
Mario schrieb im Beitrag #2678068: > Die anderen Bits, für Ref.-Spg., setze ich in meiner adc_init Funktion. > Ich dachte diese gesetzten Bits bleiben dann unberührt, wenn ich nur die > MUX Bits ändere??? Wenn du einem Register mittels Register
-
Thread
IO Ansteuerung am LPC
anderes, als den vorangesetzten Wert um die zu shiftenden Stellen nach Links zu bewegen. Beispiel (8Bit): |0000|0001| und die 1 wird um 3 geshiftet, dann steht da |0000|1000| Aber da du nur ein einziges Bit setzen willst, schreib einfach (1 << 18)
Matthias Nix wrote: > IOCLR0 &=~(0x1F << 18); // Set all LED Bits to 0 IOCLR0 = 0x1F << 18; // Set all LED Bits to 0 > IOCLR0 |= (ledmask << 18); // Set LED Bits IOSET0 = (ledmask << 18); // Set LED Bits
-
Thread
Gibt es etwas wie "(0 << BIT7)"?
diese Umkehrung macht. Das wiederrum macht das Symbol '~'. Aber. Wenn du sowieso in Assembler nur 1 BIt an einem Port setzen bzw. löschen willst, warum benutzt du dann nicht ganz einfach die Spezialbefehle, die Atmel ihren AVR Prozessoren spendiert hat? Siehe [[AVR-Tutorial]] (0<<PD4) ist soweit
wende ich das "Schieben" einer Null wegen der Lesbarkeit des Codes trotzdem an. Zum Beispiel beim Setzen der Prescaler-Bits im Timer: sbr temp, (0<<CS22)|(0<<CS21)|(1<<CS20) ;Vorteiler So sieht man auf den ersten Blick, welche Bits gesetzt sind und welche nicht. Außerdem lassen sich schnell
-
Thread
Lohnt es sich heute noch PH (Phillips)-Schraubendreher zu kaufen?
Nichts neues im Dokument. Nur Torx-Bits halten auch nicht nicht ewig wenn übermäßig Kraft übertragen wird. Entweder ist dann das Bit kaputt oder der Schraubenkopf ab.
Und prallen dann eben förmlich Welten aufeinander. > Manche Leute nehmen statt normalen Torx-Bits auch spezielle Bits für > Torx-Spax-Schrauben. Weit über 99% der Menschheit, die den Namen Spax für Schrauben/Schraubern/Bits überhaupt kennen, verbinden das automatisch mit PZ Schraubköpfen, was
-
Thread
Per UART empfangenen String weiterverarbeiten
Programmiersprachen nicht. Du brauchst Literatur! PS2: Ist das richtig so, dass du nach jedem Bit-setzen mittels PB2 einen Puls generierst und nach allen 8 Bits noch einen Puls nachschiebst?
gesetzt ist. Ausserdem: Bit setzen und Bit löschen sind prinzipiell unterschiedliche Operationen. > (Ich habe halt in dem einen Beispiel für einen Pic gesehen, dass man da > die Ports so direkt setzen kann) Auch das mündet
-
Thread
Tasten entprellen
betätigt wird, ädert sich die Anzeige. Hier der geäderte Code. MAIN: CLI CBR key_press, 1 ;Bit0 in key_press löschen CBR key_press, 2 ;Bit1 in key_press löschen CBR key_press, 4 ;Bit2 in key_press löschen CBR key_press, 8 ;Bit3 in key_press löschen CBR key_press, 128 ;Bit7 in
so sehen die Unterprogramme aus: ST100_0: ;Ziffer 0 CBI PORTB, PB3 ;A auf 0 setzen CBI PORTB, PB0 ;B auf 0 setzen CBI PORTB, PB1 ;C auf 0 setzen CBI PORTB, PB2 ;D auf 0 setzen RET Wo ist der logische Fehler? Julien
-
Thread
Elektor - nächste Ausgabe mit R8C/13 Platine
Der M16C (und daher auch der R8C) können Bits direkt ansteuern, also einzelne Bits setzen und auch löschen. Wie sagt man das dem Compiler, ohne Assembler nutzen zu müssen ? Wenn man das so macht, wie beim AVR (PORT|=1<<Bit), dann macht der Compiler auch genau das (also Port einlesen, Bit setzen, zurückschreiben). Wenn man ein struct mit den ganzen Bist erstellt, dann geht das, aber das ist umständlich und nicht kompatibel zu anderen Compilern...
-
Thread
Raspberry ADC 0-5V Input
Manfred schrieb im Beitrag #7259603: > Du musst den ADS1115 per Software auf einen Meßbereich setzen, das > können 256mV - 512mv - 1,024V - 2,048V - 4,196V - 6,144V sein. Bei > Deinen 3,3V Versorgung machen 4 und 6 V keinen Sinn, also 2,048V setzen. > Jetzt einen Spannungsteiler rechnen. Ich
wären eine effektive Auflösung von 12 Bit. Aus dem Datenblatt Tab.1 und 2 ergibt sich bezogen auf den Rauschlevel eine effektive Auflösung von 16 Bit. Sofern die Angaben im Datenblatt nicht gelogen sind, gibt es dann möglicherweise noch Luft
-
Thread
Power-down mit Taster
geschaltete LED inkl. Vorwiderstand // zwischen PB1 und Vcc DDRB |= (1 << PB1); // Bit setzen: Pin PB1 als Ausgang PORTB |= (1 << PB1); // Bit setzen: Ausgabe HIGH: LED aus (active-low) // Hardware: Im Ruhezustand offener Taster zwischen PB2 und GND DDRB &= ~(1 << PB2); /
1) { if(!(PINB & (1 << PINB2)) // gedrückt? { // ja => Bit löschen: Ausgabe LOW: LED an (active-low) PORTB &= ~(1 << PB1); } else { // nein => Bit setzen: Ausgabe HIGH: LED aus (active-low) PORTB |= (1 << PB1); }
-
Thread
Bus per MISO MOSI
Fall muss das letzte Modul angesprochen werden. Das Datenpaket besteht nun z.B. aus: - 4x Start-Bit - 6x Bit für vertikale Adresse - 8x Bit für horizontale Adresse - 4x Bit für Prüfsumme - 4x Stop-Bit __________ 26 Bit (also 26 Takte je Datenpaket). Ich rechne nun mit 40 Takte, um Zeit für das
Fall muss das letzte Modul angesprochen werden. > Das Datenpaket besteht nun z.B. aus: > - 4x Start-Bit > - 6x Bit für vertikale Adresse > - 8x Bit für horizontale Adresse > - 4x Bit für Prüfsumme > - 4x Stop-Bit Besser: Alles in Bytes (je 1 Byte für Command, Zeile, Spalte, Wert, Checksum). Das
-
Thread
AVR Studio - Simulator - Statusregister automatisch setzen
man nicht dem Sim sagen, er soll diese Zeile einfach überspringen? Oder er soll doch gleich das SPIF-Bit selbst setzen... Wie macht man das, damit der Sim auch durchlaufen kann? Ich möchte nicht hunderte Male ein Bit setzen, nur um zu sehen, obs läuft.... :) Gruss Mario
Bekannte_Probleme >Wie macht man das, damit der Sim auch durchlaufen kann? Ich möchte nicht >hunderte Male ein Bit setzen, nur um zu sehen, obs läuft.... :) Breakpoint setzen? MFG Falk
-
Thread
PIC ICD 2 selbstgebaut
Hallo Sind die Config-Bits für den Oszillator richtig gesetzt? Programmieren geht, aber debuggen nicht ohne.
GND liegt eine Spannung von ca. 11.5 V Ich hab keine Ahnung wo C3 ist. > Was sind "config bits"? Stark vereinfacht sind das ein paar Bits um den Controller einzustellen. Zum Beispiel kann man damit zwischen Internem Oszillator und Quarz wählen.
-
Thread
Platine bauen
sfr at 0xF8 Piic; // Piic = Port 5 > #define SDA 0 // Piic bit 0 = SDA > #define SCL 1 // Piic bit 1 = SCL > unsigned char adr_lcd = 0x74; // Adr. LCD[/c] > > Hast du schon eine Led zum blinken gebracht? ja habe. es blinkt
weil ich im datenblatt gelesen habe ,dass wenn ich mein display mit iic ansprechen möchte, dann setze Pin 11 auf GND.
-
Thread
Umwandlung Wert in 4 Byte Gleitkommazahl (KNX)
= KNX_VORZEICHEN_MINUS; // Merker setzen } else ucVorzeichen = KNX_VORZEICHEN_PLUS; // Merker setzen if(ucVorzeichen == KNX_VORZEICHEN_MINUS) // Vorzeichen negativ? uiReturnvalue = 0b1000000000000000; // Negativ-Bit setzen else uiReturnvalue = 0b0000000000000000; // Negativ-Bit löschen uiReturnvalue = uiReturnvalue | (uiExponent << 11); // Exponent-Bits setzen uiReturnvalue = uiReturnvalue +iMantisse;
-
Thread
Tester gesucht für FPGA-Projekt
Zum Setzen der Blockmarken siehe http://www.mikrocontroller.net/topic/297603#3276101
Beitrag #3276354: > PS: Vergiss nicht vor Rückkehr in die Seite C > den Cursor an den Textanfang zu setzen. Jetzt geht alles etwas durcheinander, deshalb nochmal: Vor =MPRO den Cursor an den Textanfang setzen, Vor =ENDM den Cursor unter den Quelltext setzen.
-
Thread
Servo mit 8bit Timer
da ich den Timer 1 meines Atmega für die input capture Funktion brauche, möchte ich nun mit dem 8bit Timer mein Servo ansteuern. Meine grundlegenden Überlegungen dazu waren, dass ich alle 0,004ms einen Interrupt auslöse und dabei eine Zählvariable hochzähle mit der ich den 1-2ms Impuls erzeuge und
: ich dachte, ich hätte das so im Artikel gemacht. Statt dessen ist da ein CTC Modus mit OCR neu setzen)
-
Thread
LM75 mit MSP430F1611
keinen Sinn. Teilweise kommen auch nur Hieroglyphen. nach dem Datenblatt von dem LM75 wird eine 9 Bit breite Zahl ausgegeben. Teilt der LM75 diese automatisch in zwei 8 Bit Signale auf und schickt die? Dann müsste das eine Bit (high) ja immer Null anzeigen solange ich einen positiven Temperaturwert
Markus S. schrieb im Beitrag #1961244: > nach dem Datenblatt von dem LM75 wird eine 9 Bit breite Zahl ausgegeben. > Teilt der LM75 diese automatisch in zwei 8 Bit Signale auf und schickt > die? Ja > Dann müsste das eine Bit (high) ja immer Null anzeigen solange ich > einen positiven
-
Thread
Msys2 make und g++ nicht gefunden unter windows10
Alternativ kann die DLL in das zur ausführbaren Datei passende System-Verzeichnis kopiert werden. Bei 32-Bit-Binaries unter 64-Bit-Windows ist das %sysroot%\syswow64, bei 32-Bit-Binaries unter 32-Bit-Windows und bei 64-Bit-Binaries unter 64-Bit-Windows ist das %sysroot%\system32. Was ist eigentlich das
eingefallen das bestimmte Punkte mit Häkchen >> selektiert werden sollten. Aber ich habe keine Häkchen setzen können. ich glaube du verwechselst MSYS2 ständig mit den älteren 32bit Cygwin, Mingw Toolchains - die sind "einstellunglastiger" - bei MSYS2 gibt es gar keine Häkchen wenn du nicht unbedingt alles
-
Thread
Reinitialisieren von Registern beim ATtiny841
welches zuerst gesetzt werden muß, um dann die Änderung für 4 CPU-Zyklen freizuschalten. Und manche Bits müsen mit 1 beschrieben werden, um sie auf 0 zu setzen.
dafür gibt es ein Statusbit, um es zu erkennen. Gerne gemachter SW-Fehler, erst das SPI als Master setzen und danach /SS als Ausgang.
-
Thread
Alternative zu PORTB.0
eigentlich kennen...) EDIT: Sehe grad, dass Du offensichtlich doch was anderes meinst. Einzelne Bits werden mit & bzw. | (UND mit dem Komplement der Bitmaske zum löschen, ODER mit der Bitmaske zum setzen) verändert. Siehe dazu auch [[Bitmanipulation]]. Sehr empfehlenswerter Artikel. [[AVR-GCC-Tutorial
>> Sehe grad, dass Du offensichtlich doch was anderes meinst. Einzelne Bits werden mit & bzw. | (UND mit dem Komplement der Bitmaske zum löschen, ODER mit der Bitmaske zum setzen) verändert. Siehe dazu auch Bitmanipulation. Sehr empfehlenswerter Artikel. AVR-GCC-Tutorial
-
Thread
Bit als Ausgang definieren
PortA_DDR=1x00; Wenn ich das richtig verstehe, will er in diesem Beispiel PortA.0 auf Ausgang setzen und PortA.1 auf Eingang. Wenn ich das so eingebe, kommen bei mir Fehlermeldungen. <siehe Bild>
nein bei c-control muss man Port_DataDirBit(Bit,I/O) eingeben. das is doch der gleiche befehl wie in basic prog. kompletter schwachsinn oder?
-
Thread
Bit value _BV ??????? AVR-libc
wenn ich es richtig verstanden habe, steht in der AVR-libc, das man mit diesem macro "_BV" einzelne Bits in besonderen Registern setzen kann, z.B. für USART : UCRSB = _BV(Bit-name);. Wird Bit dann logisch high? Die Frage hört sich zwar blöd an (setzt Bits = logisch high), aber dann lese ich weiter
); // bit setzen register &= ~( 1 << Bitnummer ); // bit löschen ob man das jetzt so schreibt, oder ob man es so schreibt register |= _BV( Bitnummer ); register &= ~ _BV( Bitnummer ); schenkt
-
Thread
HD44780+PIC18F25k22 Rise Time Probleme?
Nibble gelesen werden, sonst bist Du aus dem Takt. Das BF ist im ersten Nibble (Seite 22, Figure 9 4-Bit Transfer Example). Und mitten drin im LCD_WRITE geht schonmal gar nicht, sondern nur danach. Der Busy-Test geht frühestens auf den ersten Befehl nach dem Setzen des 4Bit-Mode. D.h. bis einschließlich
habe ich meine LCD-Lib so geschrieben, daß sie nur Bitbefehle benutzt. Viele MCs können einzelne Bits atomar setzen, d.h. ohne Seitenefekte auf andere Bits des selben Ports.
-
Thread
Attiny85: Brown-Out-Detection via Software ausschalten
Zeitverhalten beachten! [c]if (MCUCR & (1<<BODS)) { // ok MCUCR.BODS = 1 kann man setzen. } else { // fehler }[/c] *MCUCR – MCU Control Register* The MCU Control Register contains control bits for power management. • Bit 7 – BODS: BOD Sleep BOD disable functionality is available
Tobi X. schrieb im Beitrag #5249631: > auch wenn ich zuvor das Bit auf 1 gesetzt habe. Innerhalb von 3 Cycles nach dem Setzen des Bits wird es sowieso von alleine gelöscht. Wenn man es also lesen will, muss man das direkt nach der 'Enable BOD' Prozedur machen.
-
Thread
Taschenrechner: ATmega1284p - 15x 7-Segmentdisplay
Vergleich spart. Außerdem ist nach dem Shift Remainder.0 immer 0, d.h. man kann die Addition durch Setzen von Bit 0 ersetzen. Und SetBit(0) kann man sich auch sparen, da Quotient mit 0 initialisiert ist: [c] Remainder.Zero(); for (int i = 0; i < 96; ++i) { if (!Remainder.IsZero(
9,9999999950E-10 Genauigkeit float64 AVRational_32 ln(1,000001) -> 34 bit 48 bit ln(1,0000001) -> 31 bit 51 bit ln(1,00000001) -> 27 bit 49 bit ln(1,000000001) -> 24 bit 52 bit[/code]
-
Thread
Bitfeld zuweisen: Warum optimiert der Compiler nicht?
Dann nimm doch spaßeshalber Mal die höchste. Und uint16_t als Datentyp. Und fang damit an, alle Bits in einer Dummy-Funktion auf 1 zu setzen.
Bit damit verbraucht werden. So - und nun will der TO die einzelnen Bits einer 16 Bit Variablen je nach 16 verschiedenen boolean-Variablen setzen. So wie ich das sehe, macht es der Compiler bereits
-
Thread
Hygrosens HYT221 an Atmega8 macht nichts
ich die Wartezeit nach dem TWI-Write auf 50ms setze, dann ist bei einem TWI-Read das Bit 14 gesetzt (die Wandlung war noch nicht vollständig). > Aus dem Grunde muß das erste byte auch mit 0x3F bzw. die beiden > Feuchtebytes (wenn sie schon zusammengesetzt
. > Wenn ich die Wartezeit nach dem TWI-Write auf 50ms setze, dann ist bei > einem TWI-Read das Bit 14 gesetzt (die Wandlung war noch nicht > vollständig). Zitat Datenblatt: "Erst nachdem der Messzyklus komplett abgearbeitet wurde ist das 'ready' Status Bit
-
Thread
Timmer Interrupt zu langsam.
setzen INTCON2 = 0b00000000; // Interruptregister setzen //Timer 0 Konfiguration + Starten T0CON = 0b11000000; return 0; // Rückgabewert (void
= 0x00; // PORT C auf Null setzen LATC = 0x00; // PORT C Latchregister auf Null setzen // TIMER-INTERRUPT konfigurieren INTCON = 0b11100000; // Interruptregister setzen
-
Thread
Akku Spannung für 40W LED Lampe Kontrollieren
--------------------------- zu ADLAR: Wenn du ADLAR setzt und nur ADCH ausliest nutzt du nur 8 bit des Ergebnisses und dein höchster ADC-Wert ist 255. Wenn du 10 Bit (0..1023) willst setze ADLAR auf 0 und lese "ADCW" aus. //--------------------------------------------------------- void adc_setup
----------------------- >>zu ADLAR: >>Wenn du ADLAR setzt und nur ADCH ausliest nutzt du nur 8 bit des >>Ergebnisses und dein höchster ADC-Wert ist 255. >>Wenn du 10 Bit (0..1023) willst setze ADLAR auf 0 und lese "ADCW" aus. habe mir das mal durchgelesen, da steht ja so gesehen das man linksbündig
-
Thread
ARM-Cortex als Anfänger?
dsPICs, warum sind die weniger beliebt als ARM? Zu sehr eigenes Süppchen. Außerdem sind es 16-bit-Controller, das war bei Markteinführung wohl schon kein großer Wurf mehr angesichts der aufkommenden ARM-Welle. Aber selbst bei 32 bit musste Microchip dann unbedingt noch auf MIPS setzen, wenn
sagen, haben wir nicht benutzt. Wir haben alles „zu Fuß“ gemacht. Viele Abhandlungen im Netz setzen nur auf irgendwelchen Layern oberhalb der Hardware auf, die wirklichen Hardware-Bits werden zuweilen nicht so detailliert erklärt. Das ist aber bei Atmel nicht anders, da bestehen die „Appnotes