-
Thread
AVR Register setzen
Hallo, ich verwende einen ATmega16U4 und möchte die ADC`s benutzen. Nun ist es so das in dem Register ADMUX Bit 0 ... 4 geändert wird und in dem Register ADCSRB NUR Bit 5. Die anderen Bit´s müssen unberührt bleiben. Um das ganze zu vereinfachen wollte ich nun ein #define machen. aber wie kann ich die beiden Register in einer zeile zusammenfassen?? #define ADMUX &= 0b00010000 | ADCSRB &= 0b00100000 Vielen Dank für alles hilfreiche
-
Thread
AVR Fuse Bits im Programm setzen
Hallo, ist es möglich die Fuse Bits der AVRs im Programm zu setzen so wie man es z.B. bei den PICs machen kann, anstatt ein Programm zu Nutzen?
-
Thread
einzelnes Bit in PortX setzen??
Hi ich möchte in meinem Fall an portB3 eine LED an und ausschalten lassen. SBR und SBI gehen nicht, da wohl falsche Registerart. Geht es überhaupt?
-
Thread
GLCD - Einzelnes Pixel setzen
nur ganze Segmente schreiben können. Bei meinem eingesetzten ist das so. Ich kann immer nur ganze 8-Bit schreiben. Möchte ich jetzt nur ein Bit davon setzen überschreibe ich zwangsläufig die alten Bits mit Nullen.
dem ST7565R keine einzelnen Bits mit SPI setzen UND weil ich nicht den kompletten Framebuffer im Speicher des uC halten wollte. Oliver
-
Thread
Lockbits per Software setzen
Programmstart eines Atmegas die Lockbits überprüfen und falls die nciht dem entsprechen, was ich brauche, setzen. [c] void check_lockbits() { #ifdef CHECK_LOCK_BITS if(boot_lock_fuse_bits_get(GET_LOCK_BITS) != 0xC0) { boot_lock_bits_set(0xC0); } #endif } [/c] Die Abfrage funktioniert
Hi • Bit 3 – BLBSET: Boot Lock Bit Set If this bit is written to one at the same time as SPMEN, the next SPM instruction within four clock cycles sets Boot Lock Bits, according to the data in R0. The data in
-
Thread
portts in asm setzen
Shift-Taste offensichtlich kaputt. Zweitens ist die erste Methode nur dann sinnvoll, wenn mehrere Bits gesetzt werden sollen bzw. in diesem Fall, wenn alle anderen Bits in DDRD gelöscht werden sollen. sbi setzt in DDRD nur das betreffende Bit, während alle anderen Bits unverändert bleiben.
ist die grenze bei den einzelnen befehlen die ich benutze um den pin 5 vom portd als ausgang zu setzen?
-
Thread
ATTiny85 maximalen internen Clock setzen?
PLL clock mit internen Takt verwenden willst, geht das nicht (nur) über die Fuses. Du mußt das PLLE Bit setzen.
clock mit internen Takt verwenden willst, > geht das nicht (nur) über die Fuses. Du mußt das PLLE Bit setzen. Das PLLE-Bit wird automatisch gesetzt bei entsprechendem Fuse-Low-Byte: "If PLL is selected as a system clock source the value for this bit is always 1"
-
Thread
AVR-Bootloader mit Verschlüsselung
hatte vorher ne andere, die nicht funktioniert hat. >Man darf beim ersten Schreiben nicht die WDP-Bits anders setzen, dann >wirds ignoriert. Steht aber nirgends im Datenblatt. Hm das es ignoriert werden soll wusste ich auch nicht. In irgendeinem der Datenblätter steht aber das man die WDP Bits erst setzen sollte wenn man vorher das WDCE Bit einmalig gesetzt hat da ansonsten der WatchDog Prescaler beim Verkürzen der Zeitspanne schon vorzeitig auslössen könnte. >Den Rest des Codes habe ich noch nicht
-
Thread
einzelne bits lesen / setzen
abfragen mit einem Byte erschlagen. mein Problem ist nun, dass ich nicht wirklich weiss, wie ich ein Bit abfragen kann ohne grosse Rechenoperation und ohne die Bits zu schieben. Bits von null auf 1 unabhaengig von den anderen zu switchen funktioniert mit Byte^=0x0001, Byte^=0x0002, Byte^=0x0003 usw,
Danke fuer die Info hab die Bits manipuluiert! Setzen wie gehabt: "switch^=0x0008;" Lesen: "if ((switch & 0x0008) == 8 bzw 0)" nuja...doch einen ganzen KB hats in der HEX Datei erspart aber die Übersicht ist floeten gegangen
-
Thread
Turbo Pascal bits lesen/setzen
Hi ich versuche einzele bits auszulesen, bzw zu setzen. Was ich vorhabe: byte1:=byte1/8 byte2:=byte2/8 byte3:=byte3/64 ergebnissbyte.0:=byte1.0 ergebnissbyte.1:=byte1.1 ergebnissbyte.2:=byte1.2 ergebnissbyte.3:=byte1.0
DOOOOOOOCCCCCCHHHHHH! Ist doch kein Problem, kannst ja Funktionen erstellen: Procedure BitSet(var i: integer; b:integer); Begin i := i Or (1 Shl b); End; Procedure BitClear(VAR i:Integer; b:Integer); Begin i := i And (Not(1 Shl b)); End; (getestet, aber ohne Gewähr...)
-
Thread
Fuse Bits f. internen Quarz setzen?
Wie kann ich mit Bascom die Fuse Bits auf den internen Quarz umstellen? Habe das Gefühl, das der controller nicht läuft, weil der Quarz nicht schwingt. Testprogramm (Portpin High => Low => High im Sekundentakt) läuft auch nicht, auf dem LCD keine Ausgabe. Hardware habe ich jetzt mehrfach überprüft, da ist kein Fehler zu finden, habe aber leider auch kein Oszi hier um das mit dem Quarz zu prüfen, Prozessor ist ab i.O., lässt sich auf dem myAVR-Board problemlos programmieren!! Hätte gerne 4MHz internen Quarz, wie stelle ich das an? Habe in der Bascom-Hilfe leider nix gefunden, bei der Suche
-
Thread
bit_is_clear bit_is_set
Diese Makros sind aber nicht C-spezifisch und existieren soweit ich weiß in der avr-libc. Für setzen und löschen gibt es afaik keine Makros in der avr-libc. Da müsste man sich selber was schreiben: [c] #define set_bit(byte, bit) byte = byte | (1 << bit) #define clr_bit(byte, bit) byte = byte
#2843455: > ich wollte halt verstehen, warum bei clear (lösche) etwas auf AN geht > und bei set (setze) auf aus. The bit is clear. Zu deutsch: Das Bit ist gelöscht. The bit is set. Von to set, set, set. Das Bit ist gesetzt. Das mal zum Sprachverständnis. Warum ist das Bit Clear und die Lampe geht
-
Thread
Transistortester AVR
Im HV Mode natuerlich das Selbe. Man muss erst den Inhalt loeschen, erst danach kann man das lock bit zurueck setzen. Waere ja auch Sinnlos wenn das so einfach waere :) Interessant waere vielleicht mal zu suchen, nach welcher Speicherstelle das lock bit 0xFC genau sucht.
, also keine Werte eintragen und keinen Haken setzen!!! Es gibt zur Info noch den Button Bit Details... Danach deaktivierst du wieder die beiden Haken und spielst dann die hex u. eep auf den Chip. Als Future kann der Button Configure AVR-Clock benutzt
-
Thread
UART UBRR setzen ATMEGA
Hallo zusammen, ich hab mal wieder ne Frage. Da ich mich gerade mit UART beschäftige, habe ich mir das Tutorial "Der UART angesehen. Dabei ist mir ein Codeschnipsel aufgefallen den ich nicht kappiere. [c]UBRRH = UBRR_VAL >> 8; UBRRL = UBRR_VAL & 0xFF;[/c] Wenn ich das richtig verstanden habe und richtig gerechnet habe, müsste ein UBRR = 26 rauskommen. Die erste Zeile dieses Codes verstehe ich überhaupt nicht. In der zweiten Zeile werden alle Bits auf 1 gesetz, aber warum. Ich bin noch ein Anfänger in Sachen Mikrocontroller.
-
Thread
AVR32UC3A Port setzen
? In einem anderen Quellcodebeispiel habe ich folgendes gefunden: > AVR32_GPIO.port[0].pmr0c = Bit(8) | Bit(7); //Function > AVR32_GPIO.port[0].pmr1c = Bit(8) | Bit(7); //0 = PWM. Im Datenblatt zum Eval-Board steht an Pin 19: PB19/PWM_PWM[0]/PM_GCLK[0]/EIM_SCAN[4]... allerdings passiert an
verodern. Beim start sind die meisten Register auf 0 gesetzt, und so musst du eigentlich nur die 1 setzen welche du brauchst. Wenn du doch ein Register hast welches du auf 0 setzen willst kannst du es mit einer oder und Invertierung machen. In dem Beispiel wird das 8bit auf 0 gesetzt. >AVR32_PWM.channel
-
Thread
Suche ADC mit mindestens 24bit Auflösung (besser 32bit)
suchen soll? Gehe zum Distributor deines Vertrauens (z.B. Digikey) Lass dir alle ADCs anzeigen setze die Filtermaske "Anzahl der Bits" auf einen Wert von 24 bis 32 setze die Filtermaske "Datenschnittstelle" auf etwas, was SPI oder I2C beinhaltet. Wende die Filtermaske an. Bei mir werden dann
> Ich setze z.B. einen 24 Bit-ADC in einem > FMCW-Radar ein und erspare mir bzw. dem Kunden damit Aufwand für > Messbereichsumschaltungen. Die Genauigkeit ist dabei völlig irrelevant. Verwendest du die
-
Thread
unterschiede beim setzen von registerinhalten
beispiel 1: c-quelltextausschnitt: DDRA = 0xff; //port a als ausgang PORTA = 0x04; //ein bit in port a auf 1 setzen beispiel 2: c-quelltextausschnitt: DDRA = 0xff; //port a als ausgang PORTA |0 (1 << 2); //ein bit in port a auf 1 setzen was ist der unterschied zwischen den
pille1990 wrote: > DDRA = 0xff; //port a als ausgang > PORTA = 0x04; //ein bit in port a auf 1 setzen Setzt PORTA.2=1 und alle anderen Bits von PORTA auf 0 > beispiel 2: > > DDRA = 0xff; //port a als ausgang > PORTA |= (1 << 2); //ein bit in port a auf 1 setzen
-
Thread
8051 UART 8bit und 9bit gleichzeitig
'high' setzen. dann koennte ich im sende interrupt den pin auf high setzen und mit einer nop schleife mind. fuer die laenge eines bits warten. somit haette ich dann also ein neuntes bit = stopbit. moeglicherweise
um das Senden von DMX und gleichzeitige empfangen von Midi Daten. Wenn ich den Uart jetzt in den 9bit Modus setze und dann was nach Sbuf schicke, so sendet der korrekt. Allerdings könnte ich ihn erst am Ende der Übertragung des Bytes wieder in 8bit zurück setzen, dort wird dann aber schon das nächste
-
Thread
PIC32 TRIS Register setzen
Das Datenblatt weiss, wie nicht herausgefuehrte Bits zu setzen sind. Zu faul da mal nachzusehen?
derneue schrieb im Beitrag #5362100: > TRISA = 0b11111011111011 Ich würd die Bits, immer da wo sie gebraucht werden, einzeln setzen. Das macht das ganze besser lesbar. TRISAbits.TRISA0 = 1; Da bekommt man auch gleich einen Fehler, wenn bei dem Chip den man nutzt, das Bit nicht
-
Thread
While(1) wird nach setzen des Timer-Interrupts nicht mehr aufgerufen
Hallo an alle! Ich besitze ein ATmega64A Board (Takt auf internen 8MHz RC-Oszillator gestellt), an dem ich ein paar Bus-Systeme auspobieren möchte. Gestern habe ich es das erste Mal in Betrieb genommen und jetzt ist ein äußerst merkwürdiger Fehler aufgetreten, vlt. findet ja eine von euch den Fehler... Ich habe folgenden code programmiert, der einen Timer-Interrupt auslöst (sicherheitshalber sind nicht verwendete Bits auf 0 gestetzt) und zugleich blinkt eine LED im 1s-Takt in der While(1)-Schleife: [c] #define F_CPU 8000000UL // define system clock with 8MHz #include <avr/io.h>
-
Thread
CTC mit flag setzen, ohne interrupt
N'abend community, ich habe Atmel studio 7, arduino uno r3 board, atmega 328p mit 16mhz. Ich möchte ein 38khz signal mithilfe eines timers erstellen. Leider hat es nach vielem lesen und probieren geklappt. Nun verstehe ich die programmierung nicht. :D ich will durch das hochzählen bis 211 eine halbwelle erzeugen, pin toggeln und anschließend mit ausgeschaltetem pin hochzählen. Soweit klappt es. Nur verstehe ich nicht, warum die frequenz sich so stark ändert. Wenn ich ocr0a=210 eingebe, erhalte ich 18,94khz. bei 209 - garnichts. 208 - 7,692khz. 207 - 15,6khz 206 - 9,615khz Egal
-
Thread
AVR für wenig Geld im LAN
gelesen haben, soll die Software von U.Radig mur 3 Ausgänge bereit stellen ...richtig ?? Welche Fuse-Bits muß ich setzen ? Gruß Andreas
Fehler beim Compilieren. Im source finde ich bei cmd.c PORTC = PORTC & ~(1<<variable[0]); zu setzen eines Bits auf 0 Wie muß ich variable setzen, um nur einzele Ports zurückzusetzen? Grüße Kay1971
-
Thread
STM32 9.Bit in der UART setzen
Bit setzen für das erste zu sendende Byte und wie lese ich es wieder aus. Wie ich gelesen habe, ersetzt das 9te Bit dann das Parity Bit und ich kann entweder nur Parity oder nur das 9te Bit übertragen.
Seite 769 [code] Bits 8:0 DR[8:0]: Data value ... When transmitting with the parity enabled (PCE bit set to 1 in the USART_CR1 register), the value written in the MSB (bit 7 or bit 8 depending on the data length)
-
Thread
8-Bit Controller noch zeitgemäß?
Wir setzen je nach Projekt-Anforderungen 8-Bit 8051 z.B. EFM8 oder 32-Bit ARM z.B. LPC ein. Grade bei integriertem ADC DAC sind die 8051 noch immer besser wegen der robusteren Fertigung. Bei AVR gibt es aber
bit, 8 Data bits, n Stop bit 1: 1 Start bit, 9 Data bits, n Stop bit Note: The M bit must not be modified during a data transfer (both transmission and reception) [/code]
-
Thread
CP/M auf ATmega88
verwenden? (Bekannte, gute Alternativen > setzen Z80 voraus) Ich denke diese Variante ist die flexibleste Lösung. > Hat überhaupt schon jemand die 8-Bit-Ram Variante nachgebaut, > und kann damit die RAM-Disk mal testen? Ich weiß noch nicht
der Uhr das 1Hz-Signal am Interupt-Ausgang (Pin 7) abgeschaltet (In der Routine "rtc_set", durch Setzen des "alarm enable" bits. Nach Powerup kann man das Signal aber auf jeden Fall messen (Pullup notwendig).
-
Thread
globale variable durch interrupt routine setzen geht nicht
Tag, ich habe das Problem, dass ich wenn ich eine globale Variable durch eine Interrupt Routine setze dies nicht in einer if-Anweisung prüfen kann. Mein Programm läuft wie folgt ab: ich starte eine Funktion -start_measurement(); in dieser Funktion starte ich den ADC -ADCON1bits.ADON=1; der
So habs ausprobiert indem ich eine weitere globale Variable hinzugefügt hab. ADC_ended Diese setze ich in der ADC-ISR auf eins an den stellen wo ich auch measurement_done auf 0 oder 1 setze. in start_measurement() setze ich sie zu beginn auf 0 und überprüfe in der while-Schleife: while(ADCON1bits.ADON
-
Thread
PORTA setzen und wieder zurücksetzten
Hallo zusammen, Ich habs jetzt hingekriegt des ich den µC (atmel Atmega128) programmieren kann . Jetzt wollt ich einfach mal zum test eine LED blinken lassen dafür hab ich einfach den PORTA = 0x01 gesetzt ne for Schleife reingemacht und wieder zurückgesetzt die LED blinkt zwar aber immer im gleichen Rythmus egal wie lang ich die for Schleife mach kann mir jemand sagen woran des liegt wäre super ! Vielen Dank schonmal ! Gruß Carsten
-
Thread
4 Bit Addierer
Schon gesehen? https://answersexpress.com/how-build-your-own-discrete-4-bit-alu-43179
https://www.mikrocontroller.net/topic/63425?goto=new#504566 mein erster DDS mit vier 4-Bit-Volladdierern
-
Thread
ein Bit ansprechen
definieren, wenn zwei tasten gedrueckt sind alle LEDs an ;) Ach was is ASM schoen einfach, wenn es ums Bit schubsen geht ;) Gruss
den Taster dranne, der nach Masse geht ldi r16, 1 ;wenn Taster gedrückt, Temp.Reg auf 1 setzen out PortB, r16 ;auf LED-Port ausgeben rjmp Loop ;alles auf Anfang Wenn Du jetzt an PortD, Bit 0 den Taster drückst, müßte an PortB, Bit 0 die LED an bzw. aus gehen. Wenn Du den Taster
-
Thread
FUSE BITS ATMEGA richti setzen
Hallo Leute. Ich habe gerade einen Klemmer was das Setzen und Löschen der FUSE Bits in den ATMEGA's angeht. Wenn im Datenblatt steht z.B.: CKSEL3:0 1111 (1=unprogrammed, 0=programmed) muss ich dann im PONY PROG den Hacken setzen
articles/Pony-Prog_Tutorial : "Wo im Datenblatt eine 0 steht muss man in Ponyprog ein Häkchen setzen, bei einer 1 im Datenblatt das Häkchen löschen."
-
Thread
Bit in Vektor setzen / schieben
kann ich eine 1 an die Stelle n in einem Vektor schieben? Anders ausgedrückt: Ich will das n-te Bit in einem Vektor setzen. Ich wollte es mit sll machen, zweifle aber daran, dass das so klappt. Eine ander Möglichkeit wäre ein case, aber der ist hier doch furchtbar hässlch. MfG Mr.Green
Weil ich den Vektor vor lauter Bits nicht gesehen habe. Danke!
-
Thread
AVR JTD setzen
Im Datenblatt des ATmeag324P auf Seite 274 steht. Das wenn ich das JTD Bit im MCUCR Register setzten will ich folgendes tuen. "The application software must write this bit to the desired value twice within four cycles to change its value." Nun versuch ich folgendes Optimierung ist natürlich ausgeschaltet. (Das JTD Bit ist Bit Nummer 7 im MCUSR Register deshalb 0x80) u8 temp; temp=MCUSR; temp=temp|0x80; MCUSR=temp; MCUSR=temp; MCUSR=temp; MCUSR=temp; Ich will damit erreichen dass ich die JTAG
-
Thread
Port, Pin auf 1 oder null setzen
bezeichnet hingegen einen einzelnen Portpin. Auf diesen kannst du nicht direkt zugreifen. Um ein Bit auf dem Port zu setzen kannst du z.B. folgende Anweisung verwenden: PORTA |= (1 << PA0); Dabei bleiben die restlichen Pins unberührt. Um ein Bit zu löschen nimmst du entsprechend PORTA &= ~(1 <<
ausschreiben, aber ich finde, daß es die Lesbarkeit etwas verbessert, vor allem wenn man mehr als ein Bit setzen will.)
-
Thread
STM32 CMSIS Register setzen problem
Markus M. schrieb im Beitrag #6570383: > #define SET_BIT(REG, BIT) ((REG) |= (BIT)) Da lauert für mich der Fehler, daß ich unter BIT eine Bit-Nummer verstehe, hier aber eine Bit-Maske erwartet wird. Für Setzen/Löschen eines Portpins eignet sich dieser
m.n. schrieb im Beitrag #6570507: > Markus M. schrieb im Beitrag #6570383: >> #define SET_BIT(REG, BIT) ((REG) |= (BIT)) > > Da lauert für mich der Fehler, daß ich unter BIT eine Bit-Nummer > verstehe, hier aber eine Bit-Maske erwartet wird. Für Setzen/Löschen > eines Portpins eignet
-
Thread
ZigBit ZigBee Meshnetics
hi thomas, schau mal: ZigBit_OEM_Module_Product_Datasheet.pdf (DOC.M-251~01v1.9) S. 9 gruß alex
setzen, um über UART Snitstelle mit den ganzem Modul zu sprechen.
-
Thread
Welche Programmiersprache auf µC
unsigned int, unsigned int) [/c] wobei das natürlich nicht die Version der libstdc++ ist. Also für 8-Bit: 220-Bytes und für 16-Bit 294 Bytes.
Template-Variante für 8-Bit *und* 16-Bit schon 514 Byte braucht. Noch 32-Bit dazu, bist du vermutlich bei 2 KB. Weil du dann schon *drei* Quicksorts in deinem Code hast. Die C-Version kommt mit genau einem aus (plus drei trivialen
-
Thread
Beispielprogramm für RFM12 433MHz Funk-Module
wieder in r16/17 cbi PORT_SPI,SEL ;Chip Select ldi r18,16 ;Schleifenzähler für die einzelnen Bits STloop: cbi PORT_SPI,SCK ;Clock LO clc ;carry löschen sbic PIN_SPI,SDI ;Bit am SPI Eingang =0? sec ;dann carry setzen, an sonsten gelöscht lassen rol r16 ;Carry-Bit
nicht abschaltet, habe ich herausgefunden (glaube ich): Ich schalte den Sender mit 0x8200 aus, vorher setze ich aber dien SEL-Leitung kurz auf High und die CLK -Leitung und auf LOW bsf SEL ;setze Bit für Selekt-Leitung bcf SCK ;lösche Bit für Clock -Leitung call warten2 ; warte bcf SEL
-
Thread
Setzen der Fuse-Bits für den ATmega8535
Hallo, über das Setzen von Fuses ist hier und an anderer Stelle schon viel berichtet und diskutiert worden, dennoch finde ich mein Problem nicht gelöst: * mein ATMega8535 lässt sich problemlos mittels ISP über Ponyprog
die gewünschte 16 MHz-Frequenz, am XTAL1 anliegend. Da - wenn ich es richtig versteht - das Setzen der Fuse-Bits noch unter dem default eingestellten internen Oszillatortakt erfolgt, sollte der erst im Anschuß zu konnektierende Quarzoszillator ja eigentlich nicht das Problem darstellen, da Ponyprog
-
Thread
Bit in einem Byte setzen/rücksetzen (schnell und möglichst direkt) in c
[c] // Bit setzen: byte |= (1 << bit); // Bit löschen: byte &= ~(1 << bit); [/c]
danke für die Rückmeldung. Ich habe einen Grafikspeicher: uint8_t RAM[8]; nun möchte ich ein Bit darin setzen. void grafik_setze_pixel (uint8_t x, uint8_t y) { RAM[y&0x7]|=0x01<<(x&0x07); } Nun ist das ein variabler shift. Er wird doch jedes Mal in eine Schleife umgesetzt....oder?
-
Thread
Datenbreite eines Signals aus einer Generic setzen (VHDL)
red/softcore/mais2/rtl/device/i2c_master/I2C_master.vhd". clk_freq = 80000000 Found 1-bit register for signal <start_A_d1>. Found 3-bit register for signal <tickcounter>. Found 1-bit register for signal <tick_event>. Found 1-bit register for signal <SCL_falling>. Found 8-bit register for signal <SCL_counter>. Found 4-bit register for signal <bit_counter>. 80E6/10E6=8 0...7 Zählerwerte braucht 3 Signalleitungen Und die ISE kapiert es auch. Der Code sieht auch
-
Thread
TOV0 in TIFR setzen...wie ?
Mal ein Beispiel: ldi ist 16 bit breit. 8 Bit davon werden schon mal für den zu ladenden Wert benötigt. Bei 32 Registern würde man für die Registernummer nochmals 5 Bit brauchen. Dann wären für den eigentlichen Befehl selbst nur noch 3 Bit übrig. Damit würde ldi aus dem gesamten "Befehlsraum" (16 bit = 65536 verschiedene mögliche Werte) alleine ein Achtel belegen. Und es gibt ja noch einige weitere Befehle mit Immediate (adi, subi, sbci
-
Thread
PWM mit 20 Bit Auflösung
Code? Vielleicht so in der art... [code] for (i=0; i<16; i++) { h=heizwert >> 4; // 16 bit msb abschneiden if (i > (heizwert & 15)) then setze_pwm(h+1) else setze_pwm(h); } [/code]
also besser etwa so: init(); { Rest = 8; } ReglerAusgabe(); { h=heizwert >> 4; // 16 bit msb abschneiden Rest = Rest + (heizwert & 15); if ((Rest >= 16) && (h<0xFFFF)) then { setze_pwm(h+1) Rest = Rest & 0x0F; // 16 abziehen } else setze_pwm(h); } bei h = 8
-
Thread
Port variabel setzen/löschen
Lösung um in AVR-Assembler folgendes zu machen: ldi r16,5 ;kann zwischen 0 und 7 sein (Port bit) ... sbi PORTB,r16 Mir ist schon klar, dass ich so etwas machen könnte: ldi r16,5 ;kann zwischen 0 und 7 sein (Port bit) ... cpi r16,5 brne weiter sbi PORTB,5 weiter: cpi r16,6
Hallo, ich glaube Manfred will ein einzelnes Bit setzen. Das zu setzende Bit steht in einer Variablen. ldi r16,0 ldi r17,5 sec Schleife: rol r16 dec r17 brne Schleife in r17, PORTB or r17. r16 out PORTB, r17 Gruss
-
Thread
The Siemens S65 132x176, 65536 color display with AVR
gearbeitet (ist etwas laufzeitintensiver, dafür kann ich die Schrift aber auch z.B. auf ein bild setzen), keine komprimierten Fonts (unfertig) - Beliebigen Text aus Buchstaben ausgeben (unfertig) - 16-Bit-Bitmaps ausgeben (unfertig) Das Ganze dann halt für den "quer"-modus des Displays...Kreise
oder übernächsten Woche für die die's interessiert :) Befehle die zZ unterstütz werden: Pixel setzen, Linie zeichnen, Box zeichnen, Quadrat zeichnen, 5x8px Text, 3x5px Text, Hintergrund- und Vordergrund-Farbe setzen (interne 24bit->16bit Umrechnung), Baudrate ändern. Was noch geplant ist: Zugriff
-
Thread
STM32 Beste/Schönste Methode um Bits in Register zu setzen
Art nicht. Nehmen wir als einfaches Beispiel das USART Register CR1. Wenn ich nun das Bit 27 also das EOBIE Bit setzen will. Wie mache ich das am besten/leserlichsten? So? [c] USART1->CR1 = USART_CR1_EOBIE; [/c] Oder gibt es noch eine schönere Methode? Und was ist wenn ich ziemlich
Mir scheint, beim STM32 ist Bit-band mapping oder bit banding ziemlich uninteressant. * Für die GPIO-Ports ist das GPIOx_BSRR (bit set/reset Register) viel praktischer: man kann mit einem Befehl mehrere Bits setzen und löschen.
-
Thread
fuse bist setzen?
hallo leute Ich habe eine Frage betreffend den fuse Bits, kann ich die erst beim Programm auf den mcu brennen einstellen oder kann ich die im C-Code aufrufen und setzen? Wenn ja wie ist der Befehl um die fuse Bits zu setzen? danke
Moin! Wenn es um AVRs geht, dann kannst du die Fuses nicht aus dem Programm heraus setzen. Das geht nur über den angesteckten Programmer. Aber ob du die Fuses setzt bevor oder nachdem du das Programm in das Flash geschrieben hast ist eigentlich egal. MfG
-
Thread
Flashplatzbedarf 32Bit zu 8Bit Microcontroller
shr oder shl Ketten im Listing. Arbeitet man mit parallelen I/Os deren Bits möglichst synchron umgeschaltet werden müssen, haben moderne Cortex M SOCs extrem elegante Features, da sie über masken-Register in gleichen Zugriff IOs setzen, löschen oder unverändert lassen können. Bei STM32Fxxx kann man zudem über die Bitbending Option alle Bits im RAM und der Peripherie setzen, löschen, abfragen. > Nun ist es so, dass man bei einem 32Bitter großzugig > ausgestatte Modelle auswählen kann und auch nicht gleich den kleinsten > nehmen sollte
-
Thread
ISR Code schneller machen?
für heute. Generiere ein Servosignal rein in Hardware per OCR1A Pin ohne ISR etc, dazu die COMA1x Bits passend setzen. Damit kann man den Jitter des RC-Oszillators sicher messen.
@ Veit Devil (devil-elec) >TXB80 Bit gemacht. Ich hatte übersehen das ich das auch von Hand setzen >soll. OMG! > Ich dachte die uart soll das setzen und löschen und hatte mich die >ganze Zeit gewundert wie das funktionieren soll
-
Thread
Verschiedene Bits effizient auslesen
Wert zu 0 PORT_FARBE |= 0 << PIN_ROT; // neue Bits setzen PORT_FARBE &= ~(0b11 << PIN_GRUEN); // alten Wert zu 0 PORT_FARBE |= 2 << PIN_GRUEN; // neue Bits setzen PORT_FARBE &= ~(0b11 << PIN_BLAU); // alten Wert zu 0 PORT_FARBE |= 3 << PIN_BLAU; // neue Bits setzen [/c] Das Gefummel mit &= und |= macht man nur, wenn man es so gewohnt ist. Elegant ist es wohl kaum. In letzterem Beispiel findet man ja kaum noch die Werte 0, 2 und 3, die man setzen
-
Thread
C Makro, Bits aus verschiedenen Registern setzen
Transistoren die an 26 Pins eines AtMega2560 (Arduino Mega2560) angeschlossen sind. Jeweils einer ist fürs setzen und einer fürs Rücksetzen. Leider sind die Pins nicht schön der Reihe nach und auch über mehrere Ports verstreut. [c] /* [Arduino Pins connected to row transistors] SET ROW 0 = PA0 = 22
den passenden Port und das entsprechende Bit nimmt und setzt. Kann man sowas über ein PreProzessor Makro machen? Danke schon mal für eure Hilfe! Bouni