-
Thread
Bit löschen
zusammen, steh gerade etwas auf dem Schlauch und hoffe mir kann jemand helfen. Wie kann ich ein Bit in einem 16bit word löschen? Also nicht auf "0" setzen sondern löschen damit ich nur noch 15 Bit habe. Benutze einen ATMega und Assembler. Danke schonmal für eure Hilfe.
> Also nicht auf "0" setzen sondern löschen damit ich nur noch 15 Bit > habe. Im Dualsystem gibt es aber nur "0" oder "1". "Nichts" ist da nicht vorgesehen. Eine 16-Bit-Zahl wird immer 16 Bit haben, jedes ihrer Bits wird
-
Thread
AVR Assembler: add adc auf 0 prüfen
auch damit, daß das Statusregister beeinflusst wird. Sonst geht man davon aus, daß ein expliziter Bit-Set bzw. Clear-Befehl nur das Setzen oder Löschen von Bits bewirkt und eben nicht nur ein anderer Name für einen "echten" AND oder OR-Befehl ist.
Marc V. schrieb im Beitrag #5558233: > Wie ein SBR Befehl Z-Flag setzen kann, ist mir schleierhaft. Indem du in einem Register mit Inhalt 0 auch nur 0 Bits setzt. SBR ist identisch mit ORI, mit Maske als Operand. Der einzig wirklich sinnvolle Einsatz von SBR wäre
-
Thread
PIC XC8 Mehrere Registerbits auf einmal setzen
Als AVR Umsteiger bin ich es gewohnt die Bits in den Registern folgendermaßen zu setzen: [c]PORTA=1<<PA1|1<<PA2;[/c] Der Compiler optimiert es dann zur PORTA=6 und alle Bits werden gleichzeitig gesetzt. Wenn ich mir die Tutorials zu PICs
auf folgende Variante: [c]LATAbits.LATA1=1; LATAbits.LATA2=1;[/c] Dies wird zu einem Haufen Bit sets kompiliert, was Ausführungszeit und Platz kostet. Im Moment behelfe ich mir so: [c] #define my_LATA0_BIT 0 #define my_LATA1_BIT 1 #define my_LATA2_BIT 2 LATA=1<<myLATA1bit|1<<myLATA2_
-
Thread
Z Pointer unter AVR GCC setzen
Assemblerdatei und bin dabei sie in AVR GCC einzubinden um die funktionen nutzen zu können. Doch beim setzen des Z-Pointers auf meine "ASCIITABELLE" erhalte ich folgende fehler: Zeile 131: ldi ZL,ASCIITAB<<1 ;set pointer to Ascii table Zeile 132: ldi ZH,ASCIITAB>>7 LCD.S:131: Warning: expression possibly out of 8-bit range LCD.S:132: Warning: expression possibly out of 8-bit range LCD.S:131: Error: invalid section for operation LCD.S:132: Error: invalid section for operation Hat jemand eine idee wo hier der
-
Thread
Hilfe, Interrupt flags lassen sich mit 'typedef union' nicht einzeln löschen
abgelegt … } bit; uint32_t reg; } CAN_IR_Type canIrType; [/c] Auf diese weiße kann man einfach einzelne Bits mit [c]if(canIrType.RF0N == 1){...}[/c] abfragen oder mit [c]canIrType.RF1N = 0;[/c] setzen
A flag is cleared by writing a 1 to the corresponding bit field. Writing a 0 has no effect." Nur bietet C eben keine Möglichkeit das dem Compiler mitzuteilen, weshalb die "normalen" Bit-Setze-Operationen ("reg |= bitmask", bitfield) immer versuchen, die
-
Thread
TWI Interrupt manuell setzen
Puffer, schreibe Länge, Adresse und Daten hinein - übergib den Zeiger auf den Puffer dem Interrupt - setze Startbit Und der Interrupt setzt irgendwann ein Ready-Flag, daß alles erledigt ist. Peter
eins nicht vergessen: Am Ende der Prozedur, die beim TWI-Interrupt aufgerufen wird, MUSS(!!!) das Bit TWINT im Register TWCR immer auf "Eins" gesetzt werden. Andernfalls bleibt der Interrupt inaktiv. Ciao, mare_crisium
-
Thread
ASM-Problem bei Speicher >16 Bit
auslesen und zu einem Controller übertragen will. Wenn ich es richtig verstehe, dann kann ich durch setzen des RAMPZ Bits den Zeiger auf die oberste Adresse setzen und dann mit lpm (oder elpm?) und sbiw nach unten gehen. Muß ich dann bei Erreichen der 64K Grenze das RAMPZ Bit wieder löschen? Gruß Bruno
Hi >Wenn ich es richtig verstehe, dann kann ich durch setzen des RAMPZ Bits >den Zeiger auf die oberste Adresse setzen und dann mit lpm (oder elpm?) >und sbiw nach unten gehen. Ja. Muß ich dann bei Erreichen der 64K Grenze das RAMPZ Bit wieder löschen
-
Thread
Zugriff auf einzelne Bits in einem Register
Hallo, ich möchte in einem Register eines Mikrocontrollers auf einzelne Bits des Registers zugreifen und diese setzen. Ich möchte dabei aber auf unschönes Shiften und Maskieren von Bits verzichten. Ich stelle mir eher z.B. so etwas vor: Register_Name.Bit4 =0xFF; Wie kann
*)0x8002300) Dann bin ich in der Lage mit x.bit_1 = 1 das erste Bit des Registers zu setzen. Ist das richtig ? Wenn ja, wäre das so eine Lösung, die ich suche. Klar funktioniert das auch mit Shiften, aber diese Lösung (vorausgesetz sie funktioniert
-
Thread
Fuse Bits
Hallo, ich habe schon zwei ATtiny26 µC ausversehen mit dem bit LOCK gesperrt! Ich habe jetzt einen ATmega8515, ich will diesen Chip auf keinen fall wie die anderen Sperren! Mit dem Ponyprog2000-Programm unter der Fuse-Einstellungen(Security-bits), wenn ich da
der chip ist trotzdem nicht gesperrt. Ich will nur die anderen Parameter verändern, nicht die Look-bits. Wenn ich das mache, muss ich jetzt alle Look und Bootlokk bit cheken, damit der Chip nicht gesperrt wird? Also: alle Bootlook und Look bits = markieren wird alles nicht gesperrt? Danke schön.
-
Thread
LPC1100, superguenstig, 8-bit? Wird immer unnoetiger
irritiert, hat der Cortex nun Bitbefehle oder nicht? > D.h. wie lange dauert es, einen Portpin zu setzen, 1 Befehl oder 3 > Befehle? Im Thumb mode schätze ich die Codelänge nicht sehr unterschiedlich zu den 8bit MC's ein. Beim RAM Verbrauch ist darauf zu achten, daß der Linker die Adressen von Arrays
konnen "Löcher" in der RAM-Belegung entstehen. Weiters ist bei den Strukturen darauf zu achten, dass 16bit und 32bit variable auf geraden bzw. durch 4 teilbaren Adressen liegen.Geht sich das nicht aus, so entstehen in der Struktur ebenfalls "Löcher". Der ARM Kern scheint generell nicht für das setzen non
-
Thread
C: Pixel auf dem Bildschirm ausgeben
als du. Indem ich mich > z.B. an POSIX halte oder auf etablierte und abstrakte Schnittstellen > setze, läuft meine Software nahezu ohne Änderung auf einer vielzahl von > Plattformen, während du bei jedem Umzug wieder in deine Bitfrickelei > eintauchen musst. Ich frickel lieber an Bits herum, als
Ja genau und das ist der entscheidende Punkt meiner Kritik. Denn bei 32Bit-Truecolor genügt ein einziger MOV-Befehl um ein Pixel zu setzen, während man bei 24Bit-Truecolor mindestens zwei MOV-Befehle benötigt, da es keine 24Bit-Befehle gibt. Dazu lassen sich 32 bittige Adressenangaben
-
Thread
Pausen-Problem
@Mat > Port setzen alleine braucht ja z.b. schon 3 Takte ... > - Port einlesen > - Bit(s) ändern > - Port schreiben zum Glück gibt es ein ASM-Befehl der das Setzen eines Bits direkt übernimmt. Dafür muss nichts
>@Mat >> Port setzen alleine braucht ja z.b. schon 3 Takte ... >> - Port einlesen >> - Bit(s) ändern >> - Port schreiben >zum Glück gibt es ein ASM-Befehl der das Setzen eines Bits direkt >übernimmt. >Dafür muss
-
Thread
verständnisfrage zu bit schieben
mir die ansteuerung bzw. programmierung einleuchtend. nur hänge ich an einigen stellen in bezug auf bits, welche verschoben werden: - hier zum beispiel: [c] LCD_PORT &= ~(0xF0>>(4-LCD_DB)); // Maske löschen LCD_PORT |= (data>>(4-LCD_DB)); // Bits setzen [/c] LCD_PORT wird in der Headerdatei
LCD_PORT &= ~(0xF0>>(4-LCD_DB)); // Maske löschen > LCD_PORT |= (data>>(4-LCD_DB)); // Bits setzen > [/c] > LCD_PORT wird in der Headerdatei mit DDRD ersetzt und LCD_DB mit PD0. > aber was wird in diesen Zeilen jetzt genau gemacht? 0xF0 ist ja das > gleiche wie 0b00001111 Nein >
-
Thread
IVEL bei mega32 lässt sich nicht setzen
f72b79ee5d72 Company: Atmel HelpUrl: Installed Packages: AVRGCC - 3.4.1.95 AVR Toolchain 8 Bit Version: 3.4.1.830 - GCC 4.6.2 Package GUID: a3796ad3-98fe-4e60-bd15-57100d343560 Company: Atmel HelpUrl: AVR Toolchain 32 Bit Version: 3.4.1.348 - GCC 4.4.3 Package GUID: a3796ad3-98fe-
hmmm ... zuerst IVCE und 4 taktzyklen später IVSEL ....oder nicht? setzen will ich IVSEL, muss aber zuerst enablen!?
-
Thread
Wechselrichter Hoymiles HM-xxxx 2,4 GhZ Nordic Protokoll?
Hallo Thomas das setzen des CRC16-Polynom in Zeile 66 kann aber nicht ganz stimmen, das sind mehr als 16 bit. Und wenn ich nur 0x8005 und bei online-CRC16M Rechnern eingebe kriege ich nicht das gewünschte Ergebnis. Vllt
Idealfall unter verschiedenen Betriebsbedingungen. Natürlich muss dem Wechselrichter irgendwo ein Bit gesetzt werden, dass die DTU die Leistungsvorgabe setzen muss (der WR damit ohne Kommunikation abschaltet) und dann muss die DTU die Leistungsanforderung eben regelmäßig in der WR schreiben. Die DTU
-
Thread
HILFE PORTPINS setzen und auslesen in C
Eingang B1 PORTB &= ~(1 << 0); // Löschen Augang B0 else PORTB |= (1 << 0); // Setzen Ausgang B0 } } [/c]
PORTB(8Bit) mit 0b00000001 plus invertierung Ausgang wird HIGH --> LED geht AUS else PORTB |= (1 << 0); // Setzen Ausgang B0 -->ich verknüpfe den PORTB((8Bit) mit 0b00000001 setze Ausgang auf
-
Thread
Atomarer Zugriff von 16 Bit Variable in 8 Bit Controller
. Timer start Nachteil: Timer steht für einige µsec Auch hier gilt wie für alle anderen 16 Bit zugriffe auf einem 8 Bit µC: Prüfen ob IRQ abgeschaltet werden müssen, in diesem Fall empfehlenswert.
Noch ne weitere Anmerkung: auch bei 16bit Controllern bei denen eine 16bit Zahl vom Speicher gelesen wird kann es zu 2Lesezyklen und damit veränderung während des lesens kommen. Sobald im Speichermapping die 16bit Zahl auf einer ungeraden Adresse
-
Thread
flexibles Schalten von bits
Hallo Ich arbeite mit einem gcc-Compiler auf einem ARM7-Controller. Das Setzen und Löschen von Bits funktioniert einwandfrei. Trotzdem frage ich mich, ob es nicht noch eine flexiblere Lösung für das Problem gibt. Aktuell erfolgt das Setzen und Rücksetzen über: #define LED1
noch eine Ergänzung: du könntest dir ein Makro schreiben, um ein Bit zu setzen/löschen und diesem dann per define den Ausgang übergeben (also zb LED definieren auf PORTB bzw. PB0 und das dann dem Makro zum setzen/löschen geben
-
Thread
8Bit Timer/Counter 0
von 8 Bit Timer/Counter0 { PORTC=0; //PCO-> wird zu null->LED sollte angehen }
//ISR von 8 Bit Timer/Counter0 { PORTC=1; //PCO-> wird zu null->LED sollte aus gehen }
-
Thread
8Bit PORT splitten
PORTD = cnt--; } else { PORTD = cnt++; } } [/c] Um nun PORTD 7-2 und PORTB 1-0 als 8Bit Ausgang mit dem jeweiligen Wert von cnt zu nutzen benötige ich immer zwei Operationen pro PORT: 1) Löschen der vorherigen Bits 2) Setzen der neuen Bits [c] // 6Bit on PORTD PORTD &= ~(0xFC
@Karsten K. (karsten42) >Um nun PORTD 7-2 und PORTB 1-0 als 8Bit Ausgang mit dem jeweiligen Wert >von cnt zu nutzen benötige ich immer zwei Operationen pro PORT: >1) Löschen der vorherigen Bits >2) Setzen der neuen Bits Niemand hindert dich, die Berechnung
-
Thread
8 bit, 16 bit mischung in struktur - 8 bit breiten speicher vorgaukeln
die struktur mittels uart-schnittstelle (8-bit) zu versenden. am einfachsten wäre das, wenn ich einen pointer (Uint8*) auf begin der struktur setze und die daten der reihe nach raussende. optimal geht das, wenn ich einen pointer auf struct_status_tx
err; // belegt bit 24..31 }struct_status_tx_8; // sizeof() liefert 4 Bytes, korrekt! typedef struct { Uint8 adr; // belegt bit 0..7 // bit 8..15 frei Uint16 sta; // belegt bit 16..31 Uint8
-
Thread
8-Bit CPU Selbstbau
>O7 Da schaltet einfach ein Multiplexer den gewünschten Pin durch. Auch als Barrel-Shifter um 1 bit, 2 bit und 4 bit kaskadiert.
von Florian T. schrieb: >Tobias wollte aber eine 32bit CPU bauen, ich nicht. Die Grundlagen sind immer die selben, egal ob 4Bit, 8Bit oder 32Bit. Als erstes brauchst du Logig-Schaltstufen, AND, OR, NAND, NOR. Davon tausende. Die kann kann man mit
-
Thread
Hilfe: "ERR bit from an interrupt routine" - setzen?
Hallo, als Anfänger habe ich eine Frage: Wie kann ich das "ERR bit from an interrupt routine" setzen? Ich benötige dies, um bei BASCOM nicht in der GETATKBD()-Funktion hängen zu bleiben. Danke Josch
Josch wrote: > Wie kann ich das "ERR bit from an interrupt routine" setzen? Was soll denn das sein? Der AVR selber hat kein "ERR bit". Peter
-
Thread
AVR – Übers EEPROM und darüber hinaus…
, also alle 8 Bits auf 1 setzen, die Haltbarkeit nicht beeinflusst.
nur für komplette Bytes einen Sinn, auch wenn du die Bits (so du das willst) individuell auf 0 setzen kannst. In deiner Sichtweise kannst du also . Bit 0 auf 0 setzen (und hast damit dafür einen Zyklus „verbraucht“), . Bit 1 auf 0 setzen (dafür ein
-
Thread
32 Bit MCU gesucht
dann doppelt so schnell. Was spricht dagegen? > Ich würde daher gerne langfristig mal auf eine 32 bit Architektur > umsteigen. Diese soll nach möglichkeit mit deutlich mehr als 8MHz > betrieben werden. Dann wäre es auch nicht so tragisch wenn keine FPU > vorhanden ist. 32 Bit µC sind eine ganz
wozu 32bit? dsPIC mit 100MHz (intern) und gut ist
-
Thread
Fuses per Source Code setzen
Atmega2560 Pro Board. Dabei lassen sich die Fuses nicht über die USB-Schnittstelle bzw. den Bootloader setzen. Daher hatte ich versucht, die per Source-Code zu setzen. Gefunden habe ich dazu mehrere Beispiele im Internet, u.a. das hier: https://www.nongnu.org/avr-libc/user-manual/group__avr__fuse.html
werden die mitgesetzt. Aber habe es jetzt verstanden. Dann muss ich die auf dem Board auch über ISP setzen.
-
Thread
Sanfter Umstieg von 8bit auf 32bit Atmel
Abstand 1/20 Zoll oder 1mm und nicht kleiner) und auch sonst noch einfach zu betreiben ist, aber eben 32bit?
> Fire Heart schrieb im Beitrag #6351182: > Sanfter Umstieg von 8bit auf 32bit Atmel Sorry, "Fire Heart". Wenn Du hier Religions-Fragen stellst, solltest Du Dich über Ideologie und blinde Eiferer am Ende nicht beklagen, nur mal vorsichtshalber erwähnt... Wenn
-
Thread
Mehrere Bits gleichzeitig ändern
In Assembler: Bits toggeln geht am einfachsten mit EXOR, sonst Setzen mit OR, Rücksetzen mit AND
In C: Bits toggeln geht am einfachsten mit ^, sonst Setzen mit |, Rücksetzen mit &
-
Thread
8Bit statt 10Bit ADC bei ATTiny13
mit 1 MHz (vermutlich auch noch ein Stück mehr) takten. Das ADLAR-Bit solltest Du dann auch setzen, dann brauchst Du nur ADCH auszulesen.
Oder wie gesagt ADLAR setzen. Dann findest du im High-Byte die oberne 8bit und im Low-Byte die 2 LSB.
-
Thread
Timer auf Null setzen
, DISABLE); } // Timer2_Configuration void TIM2_IRQHandler(void) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update); Timeout = 0; } // void TIM2_IRQHandler void start_timer(void) { Timeout = 1; TIM_Cmd(TIM2, ENABLE); // Timer starten } void stop_timer
sie auch, mehr nicht. Das Timerregister ist direkt zugreifbar, man kann es jederzeit lesen oder setzen, also auch auf 0 setzen.
-
Thread
Timer Interrupt, möglichst nahe an die 32khz bringen mit 8MHz Quarz
HighBit mit null setzen TCNT1L = 0x00; // TCNT LowBit mit null setzen OCR1AH = 0x27; // OCR1AH setzen mit 0x27 OCR1AL = 0x10;
(1<<CS00)); //----- Timer 1 TCNT1H = 0x00; // TCNT HighBit mit null setzen TCNT1L = 0x00; // TCNT LowBit mit null setzen OCR1AH = 0x10; // OCR1AH setzen mit 0x27 OCR1AL = 0x27;
-
Thread
Geschwindigkeit IO-Zugriff
Controller werden immer schneller getaktet - nur was kommt dabei an den IO-Pins davon an? Beispiel: Ein 8bit-AVR braucht 375ns um in einer Schleife einen Pin high und dann wieder low zu setzen. Bei einem Arm-Prozessor (32bit) der angeblich viel schneller sein soll sah ich im Netz ein Bild wo das Setzen/
Matthias W. schrieb im Beitrag #5339416: > Beispiel: Ein 8bit-AVR braucht 375ns um in einer Schleife einen Pin high > und dann wieder low zu setzen. > > Bei einem Arm-Prozessor (32bit) der angeblich viel schneller sein soll > sah ich im Netz ein Bild wo
-
Thread
Data Direction Register per Macro setzen
Hallo, mit diesen Macros kann man komfortabel Ein-und Ausgänge lesen bzw. setzen/rücksetzen: [c] #define SETBIT(ADDRESS, BIT) (ADDRESS |= (1<<BIT)) #define CLEARBIT(ADDRESS, BIT) (ADDRESS &= ~(1<<BIT)) #define FLIPBIT(ADDRESS, BIT) (ADDRESS ^= (1<<BIT)) #define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT)) #define ADDRFROMCOMB(x, y) x #define BITFROMCOMB(x, y) y #define SET(comb) SETBIT(ADDRFROMCOMB(comb), BITFROMCOMB(comb)) #define CLEAR(comb) CLEARBIT(ADDRFROMCOMB(comb
-
Thread
DS1820, DS18B20 in C
if ( temp & DEFmask) temp = (temp-DEFoffset) & ~DEFmask; else // addieren und bit setzen temp = (temp+DEFoffset) | DEFmask; thermoValues[i]=temp; } sprintf( (char*)s, "%3d.%01dC", temp >> 4, (temp << 12) / 6553 ); // 0.1øC lcd_string( (char*)s
cyblord ---- schrieb im Beitrag #2993171: >> Nur halte ich diese Option bei einer 8-Bit-Prüfsumme für keine solche >> :-). > Nur weil du die CRC als einzige Möglichkeit siehst. Der Interrupt könnte > auch ein Flag setzen wenn er auftritt, und die 1Wire Routine könnte > dieses Flag
-
Thread
zwei Bits beeinflussen - ich steh geradeauf dem Schlauch
Ich möchte mit meinem Atmel zwei PORT-Bits gleichzeitig beeinflussen (1 Bit setzen und 1 Bit zurücksetzen) ohne die anderen sechs Bits zu verändern. Ich weiß, dass ich mit &=~ ein Bit rücksetzen kann und mit |= eins setzen kann, aber wie
spess53 schrieb im Beitrag #2731749: >>Ich möchte mit meinem Atmel zwei PORT-Bits gleichzeitig beeinflussen (1 >>Bit setzen und 1 Bit zurücksetzen) ohne die anderen sechs Bits zu >>verändern. > > Das ist bei mir togglen. Ne, es ist nur dann /togglen/, wenn er weiß, dass das
-
Thread
40 Bit Schieberegister verwalten
Naja, da die Schieberegister 8 Bit sind, würde ich vom Gefühl her die Bits als ein Array aus Bytes (uint8_t) verwalten. uint8_t LedData[5]; Dann würde ich mir Makros definieren, um einzelne Bits zu setzen/löschen: #define SET_BIT
08001512 cmp r3, #39 ; 0x27 08001514 bls.n 0x80014cc <Set74HCT595+16> (111) // Datenbit setzen (112) GPIO_WriteBit(HC595_CTRL,HC595_DS, (data >> 63)); __DMB(); // Bit anlegen 080014CC ldrd r3, r4, [r7] 080014D0 lsrs r5, r4, #31 080014D2 movs r6, #0 080014D4 uxtb r3,
-
Thread
xmega: Bit in Ram schreiben [ASM]
www.mikrocontroller.net/articles/Interrupt#Atomarer_Datenzugriff >Weiss jemand, wie und ob ich im Ram ein Bit setzen kann, ohne die >anderen zu beeinflussen? cli blub sei Alternativ kann man speziell beim Xmega die GPIOR0-15 nutzen, dort kann man jedes Bit atomar mit einem Befehl sbi/cbi setzen und
du andi benutzt um ein bit auf 1 zu setzen. Mit dem xmega kenne ich mich nicht aus, aber du kannst das atomare setzen eines bits im speicher im prinzip so realisieren: again: lds R1, mem mov R2, R1 ori R2, 0x01 ldi
-
Thread
16-bit Mikroprozessor
RISC-Prozessor entworfen. Ein paar Daten: - vollständig in VHDL beschrieben - Harvard Architektur - 16-bit Datenbreite (andere mit etwas Aufwand natürlich möglich) - 16-bit Befehle - optimiert für Spartan 3 (ein paar Instanziierungen) - internes Befehls-ROM (max. 2^16 Befehle = 128 kB) - internes und
hinweis zu deiner doku : - die Xilinx Block RAMS haben nur 2kB und nicht 4kB (1 Blockram = 16384 Bits Data + 2048 Bits Parity -> 2kB Daten + 256B Parity ) - es wäre schön wenn du die Block RAMs klarer kennzeichnen würdest (eine Abkürzung in der Zeichung würde schon fast reichen, aber bei dir steht
-
Thread
[C] Bitwert in einer Zustandsmaschine abfragen und setzen/löschen
Hallo, habe folgendes Problem: Programmiere grad an einem Projekt mit einem Tinkerforge µC. Ich habe eine Zustandsmaschine programmiert. Diese bekommt von einer Funktion einen Wert "*bit" mit 1 oder 0. Nun möchte ich mit dem Wert *bit verschiedene Bedingungen durchlaufen. Je nach dem ob er 1 oder 0 ist. Funktioniert auch soweit nur ein Problem taucht auf was ich bis jetzt nicht lösen konnte: In einer If-Schleife soll der Wert 8 mal (für 1 Byte) aufgerufen werden und je nach dem ob 1 oder 0 ist mit 1 oder 0 ausgegeben und abgespeichert werden. Meine bisherige Lösung fragt ja nur einen
-
Thread
AVR-ASM Knobelei : Bitmanipulation am LCD im 4-Bit Mode
sondern setzt mit .EQU Anweisungen welches Datenbit auf welches Portbit geht. Dann werden die bits in der Ausgaberoutine einzeln gesetzt und fertig. Eventuell kann man vorher mit einer Maske die Databits ausblenden, Databits einzeln setzen und dann das Ganze auf einmal zum Port schicken (
$5A ) in r16,pind ;Portzustand kopieren seh ;High-Nibble FLAG setzen (HalfCarryFlag missbraucht) lcdo20:;Bits auf jeweiligen Portpinnen verdrahten bst r18,7 ;Bit7 an... bld r16,2 ;...Portpin 2 bst r18,6 ;Bit6 an...
-
Thread
STM32F4 SPI Problem
disabling the SPI." Wenn man nicht aufpasst, gerät das BSY-Bit da durcheinander ... Und: Diese Spaghetti-Initialisierung ist schon arg hässlich. die Bits nacheinander einzeln zu setzen, erhöht die Übersicht nicht gerade. (Außerdem wird dabei stillschweigend
setze ich meist (nicht immer) das entsprechende Register ohnehin immer gesamt auf Null bevor ich anfange die entsprechenden Bits zu setzen. Hier ist es diversen Löschereien/Umschreibaktionen zum Opfer gefallen
-
Thread
AVR-Mikrocontrollertechnik-Kursus in Assembler besprechung Gesperrt
Eselsbrücke für das H-Flag bei der Subtraktion, da dies einfacher zu erkennen ist, als wann ein Borgen von Bit3 _nicht_ erfolgte. In allen anderen Fällen erfolgte halt das Borgen von Bit3 und somit das setzen des H-Flags. Bernd_Stein
;Alle Bits im GPR R31 ruecksetzen ( loeschen ) ser r31 ;Alle Bits im GPR R31 wieder setzen sts $0020,r16 ;Alle Bits im I/O-Register TWBR setzen in r16,UCSRA
-
Thread
Code wozu dient er?
= 0; und schalte dann die benötigten Bits ein USISR = (1 << 7) | // Interruptflag setzen (1 << 1) | // Parität gerade (1 << 0); // Takt einschalten oder ich lösche die gewünschten Bits danach USISR &= ~(1 << 5
Was für ein Referenzmanual sollte das sein, in dem nur steht "Setze Bit 7 in Register XY"? Da steht natürlich "Setze das Bit ABC in Register XY". Deine Versuche, anderen Leuten C bei- und auch näherzubringen, sind ja im Prinzip durchaus sinnvoll, aber bitte: Schreib
-
Thread
Bit im Register setzten ohne andere Bits zuverändern.
Also hab ich das Richrig verstanden =| zum 1 setzten und &= zum 0 setzen?
. Mit ODER schaltet man bits ein. MIT Exklusiv-ODER invertiert man bits.
-
Thread
Wlan2Serial Modul für 5 euro
auf: > AT > mit > OK > > aber auf > AT+RST > mit > ERROR > > muss ich noch irgendwas setzen? mit folgenden Parameter läufts besser: 115200 baud, 8 data bits, 1 stop bit, flow control: XON/XOFF
Speicherkarte quittiert jeden Befehl, den sie empfängt mit einer Antwort, die 1 Byte lang ist. Bit 7 ist immer Null. Bit 6 Dieses Bit wird gesetzt, wenn auf eine Speicheradresse zugegrifen werden soll, die es nicht gibt. Bit 5 Durch Setzen dieses Bits wird gekennzeichnet, dass die Ausrichtung
-
Thread
Es geht einfachnicht in meinen Kopf rein.
<<PD4) + (1<<PC5) > u.s.w. Ja was willst Du nun, feststellen welche Bits in den genannten Ports gesetzt sind oder willst Du portübergreifend Bits auf einmal setzen ?
r16,PortC ; Inhalt von Port C ins Register 16 sbr r16,192 ; Bit 8 und 7 setzen 128 + 64 sbis PIND,PIND5 ; Überspringe den nächsten Befehl, fals Bit 5 in PIND gesetzt ist cbr r16,128 ; Bit 8 löschen da PD5 0 ist sbis PIND,PIND4 ; Überspringe den nächsten
-
Thread
16Bit Timer Problem (läuft nicht) | ATmega128
out SPL,r16 ldi r16,HIGH(RAMEND) out SPH,r16 ser akku ; Alle Bits in Akku setzen out DDRB,akku ; PORTB als Ausgang (alle Bits 1) ldi msTimer,0x99 out OCR1AL,msTimer ldi templ,0 out OCR1AH,templ ldi templ
/www.mikrocontroller.net/topic/102971#new Ich habe das mal überflogen, kann es sein das ich beim 16bit Timer wirklich TCNT1 bei jedem durchlauf neu auf 0 setzen muss? Beim 8bit Timer läuft das ja von selbst ...
-
Thread
Verständnisprobleme mit FuseBits
erfolgreich. Da es sich aber um einen fabrikneuen ATmega8 (L bzw. -16) handelt, muß ich ja noch die FuseBits setzen, um den externen Quarz mit 3,6864 MHz benutzen zu können. Mit Ponyprog war das ja einfach. Aber mit Avrdude muß ich ja: avrdude -p m8 -P /dev/parport0 -c stk200 -U:lfuse:xx benutzen
Na super ... Und ich habe gedacht, ich wäre zu dämlich die Fuse-Bits zu setzen. Es klappt mit Deinem Programm. Danke. Das Blinkprogramm hatte ich nur geschrieben, um heraus zu bekommen, ob die FuseBits stimmen und ich den Mega16 nicht "zerfused" habe. Die
-
Thread
Pins und Bits verknüpfen
PORTC5); Ausgabe = (PINC5 << 0) | (PINC4 << 1) | (PINC3 << 2) | (PINC2 << 3); //Ich will hier Bit 0-3 entsprechend der PINC's setzen [/code] Mit freundlichem Gruß Dietmar
So wie es Lothar schon beschrieben hat. Du willst damit ja bestimmte Bits eines Registers setzen/löschen. Zum Setzen schiebst du eine '1' an die gewünschte Stelle, z.B. [c]DDRC |= (1 << DDRC3)[/c] setzt das Bit DDRC3 (also Bit 3) im DDRC-Register
-
Thread
Lightweight WS2811/WS2812 Library
Compiler da falsch? Thema 2: Ich verstehe das "Protokoll" nicht so ganz. der Teil mit 1,25µs je Bit ist klar, 24 Bit je Farbe auch, n 24 Bit Werte hintereinander steuern n LEDs an, 50µs low übernimmt die je 24 Bit in die LED und "schaltet" die Farbe. Nicht klar ist mir die Pause zwischen Bits / 24
zielen auf die Nutzung von Flags ab. Du solltest Dir einmal anschauen, welche Befehle welche Flags setzen. Der Code ist teilweise etwas verwirrend, da die Sprungbefehle von Flags abhängen, die von weiter zurück liegenden Befehlen gesetzt werden. Im obigen Fall wird das auszugebende bit von "lsl" ins