-
Thread
reihenfolge der bits in einem byte umdrehen
ror outreg bnc loop (bnc = branch if carry not set) fertig setze das 8 Bit im Ausgangsregister alle anderen löschen nach 8 Schiebevorgängen wandert dieses Bit in Carry Ende !!!!
7 mit 2 Tausche Bit 6 mit 3 Tausche Bit 5 mit 4 Kürzer gänge es dann nicht mehr
-
Thread
LED Leiste ansteuern
, Bit 2 TCK, JTAG Test Clock: JTAG operation is synchronous to TCK. When the JTAG interface is enabled, this pin can not be used as an I/O pin. Ich konnte aber nicht finden welche Fuse-Bits ich setzen
@ Michael Justinger (juston) >Ich konnte aber nicht finden welche Fuse-Bits ich setzen muss damit ich >auch diese vier Ausgänge auf 0 setzen kann. ??? Wie wäre es mit JTAGEN im Fuse High Byte? MFG Falk
-
Thread
MSP430 GPS-Daten von UART0 Probleme
, wie passe ich denn die Register nun am besten an? Soll ich zuerst mittels P3SEL alles auf 0x00 setzen und dann gleich wie oben vorgehen oder muss ich da jedes einzelne Bit auswerten? Was würdest Du machen? Ich weiss, es ist eigentlich ein Murks den Port als UART und SPI zu verwenden, aber geht halt
Also was ich inzwischen gemacht habe: Beim SPI die Bits mittels |= setzen --> funktioniert Die Zeilen wo ich diese ominösen Flags lösche entfernt. --> funktioniert Fazit: SPI und UART1 laufen, UART0 weiterhin nicht. Er spring nie in den Interrupt,
-
Thread
Problem bei Einlesen der Analogwerte
Ausserdem setzt [c]ADCSRA |= (1<<ADSC); [/c] das Bit einmalig high, und da bleibt es dann auch. Ich nehme an, du solltest es irgendwo auch wieder auf low setzen (nach der Wandlung?)
Hi >...dass Bit 2 von ADSC nicht sofort nach "ADCSRA |= (1<<ADSC);" auf high >geht. ADSC *ist* Bit6 von ADCSRA. >Ausserdem setzt >ADCSRA |= (1<<ADSC); >das Bit einmalig high, und da bleibt es dann auch.
-
Thread
Programm bleibt in ISR hängen
TCCR1B = 0x09; //Bit7=0 (ICNC1), Bit6=0 (ICES1) -> noise canceller inactive //Bit5=0 (-) reserviert //Bit4=0 (WGM13), Bit3=1 (WGM12) -> Fast PWM 8 bit //Bit2=0 (CS12), Bit1=0 (CS11), Bit0=1 (CS10) -> Prescaler 1 TIMSK |= 0x04; //Bit0=1 (TOIE0), Bit1=0, //Bit2=1 (TOIE1) Interrupt wird aktiviert //Bit3=0 (OCIE1B), Bit4=0 (OCIE1A), Bit5=0 (TICIE1), Bit6=0 (TOIE2), Bit7=0 (OCIE2) sei(); //Freigabe aller Interrupts }
-
Thread
RE bit beim KS0073
RE ist kein Pin am Display, sondern ein Bit das man mit dem Function Set Befehl setzen oder löschen kann.
holger wrote: > RE ist kein Pin am Display, sondern ein Bit das man > mit dem Function Set Befehl setzen oder löschen kann. Das sehe ich jetzt auch... Hab grad mal das Datenblatt durchgeblättert.
-
Thread
EleLa - Elektronik Lagerverwaltung Entwicklung V3.0
Setzen Sie in dem Stamm von Laufwerk C -Works.
LibraryLocation" ist schon seit ein paar Jahren in EleLa drin, der sollte dann gehen. Wichtig: Die 64 Bit EXE braucht auch die 64 Bit DLL/SO Datei, und kann mit einer 32 Bit DLL/SO nichts anfangen (so auch die 32 Bit EXE umgekehrt)
-
Thread
Kleine Frage zu TWI bzw. I²C Ansteuerung
beschreiben (bzw. ein Segment von der jeweiligen Page). Ich lese etwas von "Data/Command Section Bit" und "Continuation Bit". Natürlich sagt der Name bereits alles, aber wie und in welcher Reihenfolge setze ich das "Data/Command Bit"? (In dem Diagramm vom Hersteller ist das nicht ganz ersichtlich
int 21h schrieb im Beitrag #5694376: > Kann ich das SA0 Bit also auf Low setzen? Wirst du vermutlich sogar müssen, denn diese Displays haben normalerweise eine Device Adresse von 0x78 (linksbündig).
-
Thread
Shift Register richtig auf Null setzen
Hi, ich möchte 20 MOSFETs über 3 74HC595 Shift Register schalten und mache mir gerade Gedanken über eine "saubere" Initialisierung. Bisher habe ich noch nicht viel mit den Teilen gemacht und wollte sichergehen, dass die mir später nicht willkürlich schalten. Bisher sind mir zwei mögliche Lösungen eingefallen: 1) Shift und Storage Clock gleichzeitig OUTPUT_ENABLE (OE) durch einen 10k Pullup deaktivieren. D.h. erst wenn durch den µc die Line auf LOW gesetzt wird, schalten die Shift Register durch. Davor sind die Ausgänge hochohmig. Problem ist nur, dass OE (soweit ich das gesehen habe) nur
-
Thread
Pollin 16080 Touch mit ATMEGA32 und BASCOM
im Bereich von den 160x80 irgendwo ein Pixel zu treffen ! Klär mal auf. Um ein Pixel zu setzen/löschen, muss man ja erst mal die Cursorposition (=RAM-Adresse) setzen, dann entsprechend setzen/löschen mit Befehl 12/13 (&He, &Hf) die Pixelposition übergeben, das wars dann schon. Wenn man das
> dann läuft das Display im Grafikmodus. Aufgeteilt in 23 Zeichen pro > Zeile mit 7 verwendeten Bit pro Byte. Genauer, es sind 22 Zeichen mit 7 > Bit-Breite und und das letzte mit 6 Bit-Breite (7*22 + 6 = 160 Pixel) je > Zeile. was soll denn der Mist - im Grafikmodus nicht die volle Bytebreite
-
Thread
Altes EPROM auslesen Intersil 6654A (2xCE) mit Arduino
anschaulich sieht, ja. Also die Zahl einfach nacheinander mit allen zweierpotenzen verunden, bei treffer, Bit setzen, wenn nicht, portbit nicht setzen. Auch blöd erklärt. Aber: erklärt.und man kann die Arduino-Nummerierung verwenden und muss sich um das interene Mapping nicht scheren. Zeit genug ist ja für
Armin schrieb im Beitrag #7397655: > Da die CPU aber 12 bit ist, müssen die opcodes passen. Nö, die CPU bastelt sich erst intern die 12 Bit zusammen. Entweder aus 2 Bytes und schmeißt je 4 Bit weg. Oder je 2 Befehle aus 3 Bytes. Welche CPU ist das denn
-
Thread
Einfache CPU, einfacher Rechner, nur zum Lernen, Erfahrung?
/code] (B: 5-bit Befehlscode, i: Bit für indirekte Addressierung, A: 12-bit Adresse) D.h.: Wir haben immer (inklusive dem "i-bit") 6 bits Befehlscode und eine 12-bit Addresse. Typischerweise gibt es nur einen Adressierungsmodus
mit der Oder-Logik. Man muss dann zwar TTL-Logik-Bausteine setzen. (Ohne Speicher) Für das Programm INPUT, anschließend in ein Buffer legen lassen, so dass es sich der Prozessor zur rechten Zeit nehmen kann. Wenn das klappt, - dann später auch, mit 8 Bit (und
-
Thread
AVR asm - Befehl nur jedes 2. mal ausführen
gesetzt, dann Flags löschen und zurück zum Mainloop ldi r17,1 ; Statusflag "jedes zweite Mal" setzen ldi r18,1 ;Ausrechnen set ; T-Bit setzen; wird für folgende Anweisung gebraucht bld r25,7 ; die oberen 2 Bits werden nicht gebraucht, bld r25,6 ; müssen aber im nächsten
gesetzt, dann Flags löschen und zurück zum Mainloop ldi r17,1 ; Statusflag "jedes zweite Mal" setzen ldi r18,1 ;Ausrechnen set ; T-Bit setzen; wird für folgende Anweisung gebraucht bld r25,7 ; die oberen 2 Bits werden nicht gebraucht, bld r25,6 ; müssen aber im nächsten Schritt
-
Thread
Byte auf verteilten Ausgängen ordnen
t außen drauf, wenn du nicht immer jedes Bit einzeln setzen/löschen willst.
Zeno schrieb im Beitrag #5808560: > Setze erst mal alle Ports auf 0 dann fällt schon mal der else Zweig weg Sicher. Auch wenn sich ein bestimmtes bit in Testbyte *nicht* ändert, bzw. dauernd 1 ist, wird am entsprechendem PortPin munter
-
Thread
welcher Debugger für 8bit Controller (AVR etc.) ?
zeitkritische Abschnitte "hinwegspringen" und Breakpoints auf fehlerhafte Codeabschnitte danach setzen. Auch innerhalb zeitkritischer Abschnitte kann man einen Breakpoint setzen, den Zustand analysieren, den alten Breakpoint löschen, einen neuen Breakpoint auf später setzen und neu starten. So kann
Transistor abrauchen lassen. Ich habe daher Funktionen, die in der Mainloop Werte ausgeben oder setzen können, ohne daß die Applikation nennenswert ausgebremst wird.
-
Thread
PORT-Zustand abfrgen und zurück schreiben
allermeisten ARMs haben dafür explizite > Register, womit man einzelne oder mehrere IOs atomar setzen, löschen > oder umschalten kann, Nicht nur das, auch gibt auch noch für jedes Bit n eigenes Register --> Bit-Banding
allermeisten ARMs haben dafür explizite >> Register, womit man einzelne oder mehrere IOs atomar setzen, löschen >> oder umschalten kann, >Nicht nur das, auch gibt auch noch für jedes Bit n eigenes Register --> >Bit-Banding Die 32 Bit Dekadenz ;-) Naja, mit einzelnen Set/Clear/Toggle Register
-
Thread
AT90CAN128 lock bits richtig setzen
Beitrag #3034503: > Wie realisiert man diese Anmerkung aus dem Datenblatt?Notes: 1. Program the Fuse bits and Boot Lock bits before programming the LB1 and LB2. Gans einfach: "Program" steht für das setzen eines Bits auf 0. Du sollst also, bevor Du die Bits LB1 oder LB2 auf 0 setzt, die anderen Bits
Wenn ich die Lock bits in zwei Schritten programmiere, was muss ich im zweiten Schritt setze? Nur die LB1 und LB2 oder auch die anderen? Ich vermute so: 1. Schritt: set "lock=0b00000111" 2. Schritt: set "lock=0b00000100
-
Thread
EA DIP204-4 Datenblatt verständnis
invertiert schalten. Das geht mit dem Befehl extended Function Set 0 0 0 0 1 FW BW NW wo du das BW-Bit auf 1 setzen musst. Nun funtioniert dieser Befehl aber nur bei gesetztem RE-Bit. Du musst also vorher mit dem Befehl Function Set 0 0 1 DL N RE DH REV das RE Bit erst auf 1 setzen. Danach kannst du das BW-Bit setzen und dann solltest du das RE-Bit wieder zurück schalten, damit die anderen Befehle wieder richtig klappen. Hab damals auch eine Weile gebraucht, vor allem da ich ein 4-zeiliges Display benutzte
-
Thread
24 Einzelne Bits zu 3 Byte zusammen fügen in c++?
geschrieben "value|=(0<<32); geht ja leider nicht" Frage gibt es eine Verknüpfung die sowohl ein Bit als 0 aus 1 setzen kann?
> gibt es eine Verknüpfung die sowohl > ein Bit als 0 aus 1 setzen kann? Nochmal auf deutsch bitte.
-
Thread
Nokia LCD 3510
Bit auf 0 -> Kommando rjmp send_byte send_data: cbi CS_PORT, CS_PIN ; CS auf LOW setzen cbi SCL_PORT, SCL_PIN ; SCL auf LOW setzen sbi SIO_PORT, SIO_PIN ; D/C Bit auf 1 -> Daten send_byte
anlegen no_zero: nop ; Pause (länger/kürzer???) sbi SCL_PORT, SCL_PIN ; SCL auf HIGH setzen nop ; Pause (länger/kürzer???) dec temp brne send_bits ; 8 mal durchlaufen sbi CS_PORT, CS_PIN ; CS auf HIGH setzen sbi SCL_PORT, SCL_PIN ; SCL auf HIGH setzen ret
-
Thread
Fusebits setzen mit AVRDUDE Linux
Solange du nicht gerade Bit 7 in der high fuse auf 0 setzt (RSTDISBL), ist die Gefahr des „Verfusens“ gering. Alles andere bekommst du zur Not noch durch Einspeisen eines externen Taktes wieder hin. Hinweis: ggf. willst du EESAVE noch setzen, damit der EEPROM-Inhalt beim /chip erase/ erhalten bleibt? Dann wäre hfuse = 0xd1. Deine lfuse würde den /low power crystal oscillator/ auswählen. Bist du dir sicher, dass du das willst?
-
Thread
ATmega162: kein Interrupt beim setzen von Bit TXC
Interrupt für die komplette Übertragung (TXCIE1 in UCSR1B) sind freigegeben, d. h. das entsprechende Bit ist gesetzt. Wenn ich nun mit folgender Anweisung das Bit für die komplette Übertragung (TXC1 in UCSR1A) gesetzt wird, wird kein Interrupt ausgelöst. sbi UCSR1A,TXC1 In VMLab wird das Bit
Interrupt Flags kann man nicht von Hand setzen! Schau Dir im Datenblatt bitte mal die entsprechenden Abschnitte an (steht in der Beschreibung des jeweiligen Registers bzw. Flags). Das Schreiben einer 1 in ein Interrupt-Flag /löscht/ das Flag
-
Thread
Problem mit Clock Configuration beim STM32G031
ja verstehen, wie man die Clock einstellt. Dann schau dir den Clock Tree im Datenblatt an und setz die paar Bits in den Registern direkt.
Cyblord -. schrieb im Beitrag #7200129: > Dann schau dir den Clock Tree im Datenblatt an und setz die paar Bits in > den Registern direkt. Das hat er doch gemacht.
-
Thread
Lock bits vs. Clock source auf 8-Bit AVRs
Ich meine die AVR 8-Bit RISCs, also z.B. ATMEGA. (Nix 8051 oder so).
machst du ein Chiperase, setzt die Fusebits, flashst die Software rein und setzt wieder die Lock Bits.
-
Thread
UART-Fehler :(
Enable TXEN Transmitter Enable UCSZ2 Character Size (Number of Databits RXB8 Receive Data Bit 8 TXB8 Transmit Data Bit 8 */ //Frameformat setzen: 8 Datenbits, 1 Stopbits UCSR0C = 0x86; /* ---- No Funktion UMSEL USART Mode Select (Synch / ASynch) UMP1 Parity Mode UMP2
//Baudrate einstellen UBRRL = 25; //UCSRA |= (1<<U2X); //UCSRA: Bit "U2x" setzen BRAUCHE ICH DAS?????? while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */ { } UDR = 'x'; //x zum senden ins Datenregister while
-
Thread
Welcher Cortex-M0 Controller wird der 8-Bit Killer?
Massenprodukte raus. Dazu kommt die große Masse an konservativen Ingenieuren, die noch lange Zeit auf 8 Bit setzen (das spiegelt sich in diesem Forum ja wider). Trotzdem wird in 5 Jahren 8 Bit wohl nur noch ein Thema für Nischen- und Altprodukte sein.
Antimedial schrieb im Beitrag #3482114: > Ingenieuren, die noch lange Zeit auf 8 Bit setzen (das spiegelt sich in > diesem Forum ja wider) Nee, da spiegelt sich wider was in vielen konkreten Projekten tatsächlich Sinn macht.
-
Thread
MCP3201 mit Atmega 8 in BASCOM
'3 Leertakte lt. Datenblatt Clk = 1 'Clk auf High setzen waitus 2 Clk = 0 'Clk auf Low setzen Next For I = 1 To 12 'bis 12 Bits einlesen Clk = 1 'Clk auf High setzen Shift Wert , Left 'Wert nach links schieben Wert = Wert + Dout 'Bit an Wert addieren Clk = 0 'Clk auf Low setzen Next Cs = 1 'Cs auf High setzen Clk = 1 'Clk auf High setzen
-
Thread
LCD Probleme mit ST7036
; // rote LED aus Bit setzen PORTB |= (1 << PB2); // gelbe LED aus Bit setzen PORTB &= ~(1 << PB3); // grüne LED an Bit löschen break; case 5 : LCD_Print(2,0,"Oil Temperatur"); PORTB |= (1 << PB0); // rote LED aus Bit setzen PORTB |= (1 << PB2); // gelbe LED aus Bit setzen PORTB &= ~(1 << PB3); // grüne LED an Bit löschen break; //case 7 : //LCD_Print(2,0,"AUX 1 EMK"); //PORTB &
-
Thread
Letzter Hilferuf AT91SAM7S - PWM oder PCK
Mal noch was ganz anderes: Beim Setzen der High-Low Zustände auf den Pins: es gibt doch 2 Möglichkeiten: CODR + SODR: da lösche ich doch erst mal die Bits mit CODR, die ich nicht mag und mit SODR setze ich die, die ich mag
diesen Ton ganz Leise. Im Vordergrund entsteht ein kontinuierlicher Ton durch die Störgeräusche beim Setzen der Leitungen am SID... Momentan sieht der Code so aus: [c] #include "Board.h" #include "AT91SAM7S256.h" #define LED1 BIT17 #define LED2 BIT18 #define BUTTON1 BIT19 #define
-
Thread
ATmega8: Das Buch
völlig anderen Berufsumfeldern kommen, dann gibt es NICHTS, was sie wissen SOLLTEN. >Aber bei Bit >und Byte anzufangen ist in diesem Fall nicht notwendig. Natürlich. >Auch Grundverknüpfungen wie UND und ODER u.s.w. sollten nicht erklärt >werden. Die vor allen Dingen. Gerade beim Setzen/
Hersteller, wenn er vom Nutzer invertierte Logik >erlangt. Jeder gelöschte Flash-Speicher ist mit H-Bits gefüllt und wird mit L-Bits beschrieben. Also eher logisch. MfG Spess
-
Thread
made from scratch Firmware für Wittig/Welec Oszilloskop W20xxA
nötig ist irgendwelche Benachrichtigungen durch die Gegend zu schicken, sondern lieber irgendwo ein Bit zu setzen und einzelnen Routinen schauen dann im Pollinverfahren noch ob etwas interessantes für sie vorliegt. Wie oft dann eine Routine nachsieht könnte man dann noch mittels Zähler beeinflussen.
für Kanal 2 verändern, weil der User am Knopf gedreht hat. Es wird deshalb die Modellfunktion zum Setzen aufgerufen, sinngemäß: [code]ModelValueSet(eChannelAttenuation, 2, eChAtt50mV)[/code] Die Wertübergabe geschieht mit einem Universaltyp, ich habe ihn mal variant_t genannt, der eine 32bit-Union aus
-
Thread
AVR: "sleep disable" unnötig?
nicht weniger. Wenn ihr das nicht braucht, dann nutzt es halt nicht. Es steht euch frei das SEN-Bit direkt in der Init zu setzen, obwohl ihr gar kein SLEEP verwendet. Falls ihr auf hängende Programme steht, die doch irgendwo verborgen ein SLEEP ausführen.
Beitrag #7481742: > Wenn ihr das nicht braucht, dann nutzt es halt nicht. Es steht euch frei > das SEN-Bit direkt in der Init zu setzen, obwohl ihr gar kein SLEEP > verwendet. Abgesehen vom letzten Teil mache ich das genauso. Wenn das Programm SLEEP verwenden soll, wird das SLEEP ENABLE Bit im Rahmen
-
Thread
ATmega8 Timer1+Timer2 PWM
Non-Inverted PWM ASSR=0x00; TCCR2=0x6F; TCNT2=0x3C; OCR2=0x50;[/c] TCCR2=0b01111111 heißt: - Bit 7: FOC2 aus - Bit 6 und 3: Fast PWM Mode - Bit 5 und 4: OC2 setzen bei Compare Match, OC2 bei Top löschen (die Einstellung irritiert mich etwas, da ich mit dem Overflow Interrupt arbeiten möchte)
ist ja nicht auszuhalten. Um den CTC Modus im Timer1 zu aktivieren, müssen, laut Datenblatt die Bits WGM12 und CS10 (für einen Vorteiler von 1) gesetzt werden. Also schreiben wir das auch so: TCCR1B = ( 1 << WGM12 ) | ( 1 << CS10 ); Welche Bedeutung das setzen der einzelnen Bits hat, muss
-
Thread
Ausgang auf "1" schalten, wenn Eingang auf "0" ist
{ if(!(PINC & (1<<PINC6))) { PORTB |= (1 << PB0); //PB0 im PORTB setzen PORTB |= (1 << PB1); //PB0 im PORTB setzen } else { PORTB |= (0 << PB0); //PB0 im PORTB setzen PORTB |= (0 << PB1); //PB0 im PORTB setzen
if(!(PORTC &= ~(1<<PINC6))) { PORTB |= (1 << PB0); //PB0 im PORTB setzen PORTB |= (1 << PB1); //PB0 im PORTB setzen } else { PORTB |= (0 << PB0); //PB0 im PORTB setzen PORTB |= (0 << PB1); //PB0 im PORTB setzen
-
Thread
INT2 beide Flanken nutzen (ATmega8515 PE0)
; Setzen Bit out GIFR, akku oder sbi GIFR, INTF2 ; Setzen Bit Aber wie ich schon berichtet habe klappt das zwar beim AD-Wandler im ATmega16, nicht aber hier. Zu deiner
entsprechende Bitnamen bzw. Registername zu ersetzen, akku ist ein Hilfsregister aus {R16,...,R31} a) Setzen ; Setzen von Bit [NAME] in [REGISTER] ; alle anderen Bits bleiben unverändert in akku, [REGISTER] ; [REGISTER] lesen ori akku, (1<<[NAME]) ; Setzen Bit [
-
Thread
TDA 1543 und Atmega8
Übertragung nötig: CloCK auf HI WS auf LO ; Dummy links, nur ein Bit nötig: DATA-Pin setzen (oder nicht, egal) WS auf HI Clock auf LO Clock auf HI ; Daten rechts: DATA-PIN setzen (Bit 7) Clock auf LO Clock auf HI DATA-PIN setzen (Bit 6) Clock auf LO Clock auf HI ;usw. bis Bit 1: DATA-PIN setzen (Bit 1) Clock auf LO Clock auf HI ;Achtung, Extrawurst fürs unterste Bit: WS auf LO DATA-PIN setzen (Bit 0) Clock auf LO Clock auf HI ;Fertig
-
Thread
globaler counter funzt net wie erwartet
== 1){ uint8_t sec_takt; damit ist es doch immer atomar, oder kommt gcc auf die idee die bits einzeln zu setzen?
>damit ist es doch immer atomar, Ahhh stimmt, Tomaten auf den Augen. sys_ms_Inkr ist ja nur 16 Bit. >oder kommt gcc auf die idee die bits >einzeln zu setzen? Eher nicht. >gemacht wird, dann können dabei schritte verloren gehen. Aber hier wird >in der main nur auf 0 gesetzt und in der
-
Thread
Windows Vista oder Windows 7? Ist Win 7 wirklich schneller?
oder Windows 7 Business 64 bit? Oder kann man noch bedenkenlos auf Windows XP Pro 64bit setzen?
ist eine Sackgasse, es gab nie eine große unterstützung für die 64bit version. Ich würde davon abraten. > Was würdet ihr sagen. Windows Vista oder Windows 7 Business 64 bit? Oder > kann man noch bedenkenlos auf Windows XP Pro 64bit setzen? Win7 64bit - ob jetzt
-
Thread
1 Bit Variabel deklarieren
wenn Du mehr als ein Boolean brauchst, kannst Du ein char definieren und die Bits dann einzeln setzen, löschen und auswerten.
? Welches Target ? Welche Fehlermeldung ? Der Keil C51 für 8051-er kennt jedenfalls den bit Typ. Und der 8051 hat auch direkte Bitbefehle (setzen, löschen, umdrehen, testen usw.). Peter
-
Thread
PIC 16F684 - Problem beim Setzen von Portpins
es VIH erreicht. Mach ein NOP oder was anderes dazwischen, oder setze beide Bits in einem Befehl, und es wird gehen.
Jens M. schrieb im Beitrag #6002441: > Mach ein NOP oder was anderes dazwischen, oder setze beide Bits in einem > Befehl, und es wird gehen. Oder beim Ausgeben nicht auf den Port sondern auf das dazugehörige Latch schreiben. MfG Klaus
-
Thread
AVR-Register als Bitfields
COM0A0[1]; TCCR0A = COM0A1[0] + COM0A0[1]; // oder und plus ist egal [/c] ist zum Setzen / Löschen von einzelnen Bits nicht so elegant wie [c] BFM_PORTB3 = 1; [/c] dafür erlaubt es gleichzeitiges Setzen von Bits in einer Instruktion [c] PORTB |= BITB3[1] | BitB5[1] | | BitB7[1
/c] Dann kann ich schreiben: [c] int main () { BFM_COM0A0 = 1; // wie gehabt: setze Bit COM0A0 BFM_COM0A1 = 1; // wie gehabt: setze Bit COM0A1 BFM_COM0A = 0b01; // neu: Setze "Bitgruppe" COM0A (COM0A0+COM0A1) } [/c] Was macht der Compiler daraus: [
-
Thread
Bits schieben und auf Port ausgeben (c)
4 Bit löschhen LCD_PORT |= temp1; // setzen lcd_enable(); temp2 = temp2 + 0x0F; // zweites (unteres) Nibbel holen und nach oben schieben LCD_PORT &= 0x0F; // obere 4 Bit löschhen LCD_PORT |= temp2; // setzen lcd_enable(); _delay_us(42); } [/c] Kann mir villeicht jemand sagen, wie ich das Problem löse, das die jeweiligen
-
Thread
Abschlussprojekt
Eine Multiplikation mit 128 = 2^7 macht man besser mit Schiebe-Befehlen. In diesem Fall 7 bit nach links schieben. Aufpassen bei 16bit.
schrieb: > Einfach mal vergleichen, was schneller ist. > > Ach ja, ich glaube MUL arbeitet nur mit 8bit. 8 * 8 -> 16 Bit Ergebnis Für ihn perfekt, wenn er die Register frei hat.
-
Thread
FT232BM => 9. Bit?
Gibt es denn einen USB-Chip ähnlich dem FT232BM bei dem man auch das 9. Bit setzen kann? Oder sollte ich vielleicht wieder lieber erst selbst suchen?
Parity wird automatisch berechnet (steht irgendwo im Datenblatt des FT232). Das 9. Bit geziehlt setzen/löschen geht nur über mark/space
-
Thread
Webserver zur Temperaturmessung
zur Dekodierung kannst Du hier nachlesen: avr.xn--brke-5qa.de/Funksteckdosen.htm Es werden 12 "BITS" übertragen. Jedes dieser "BITS" hat drei Zustände, die als 00, 01 und 11 abgebildet werden. So kommt man auf 24 Bit, die in drei aufeinanderfolgenden Byte abgelegt sind. Die ersten 10 Bit werden mit
t.htm laufen aber. Planst du eigentlich den Softwareumstieg auf den ATmega 644? Die 2 Fuses-Bits muss ich doch in PonyProg setzen (Also Haken dahin machen) oder? Wenn ich die NICHT setze dann kriege ich immer Write successful sonst immer Write failed. Woran kann das liegen? Cu Stefan
-
Thread
Wie beim HW-Debuggen einen Interrupt manuell auslösen?
ebenfalls gesetzt sein und auch das globale Interupt-Enable-Bit. > Allerdings habe ich bis > jetzt noch keine Möglichkeit im Debug-Mode von Microchip Studio > gefunden, dieses oder andere Flags von Hand zu setzen. Es gibt schon etliche Bits in der Hardware
Bits und Strobe-Bits. Man muß den Text lesen, um heraus zu bekommen, dass es sich um ein Strobe-Bit handelt. Zusammenfassung: du kannst keins der UART-Interrupflags "von Hand" setzen, weder mit dem Debugger
-
Thread
Probleme mit stm32f4 Discovery
atomar (also ohne die anderen Bits zu stören) einzelne Portbits setzen oder löschen. Wenn du einen Wert in BSRRL schreibst, dann wird für jedes 1-Bit das entsprechente Portbit *gsetzt*. Dort wo ein Bit im BSRRL Null ist, tritt keine
PD13 auf H setzen, alle anderen Portausgänge bleiben unverändert GPIOD -> BSRRL = 0x1001; im Parameter ist Bit13 und Bit0 gesetzt; Ergebnis: PD13 und PD0 auf H setzen, alle anderen Portausgänge bleiben unverändert
-
Thread
Anfänger zu den Fuse Bits
Diese FuseBits interssieren mich. Kann ich nicht per AVRStudio/WinAVR diese aus dem neuen und noch nicht beschriebenen Prozessor auslesen? Leider habe ich in den pdf´s noch nichts dazu gefunden.
nur 7 Pins. Kann das > Probleme aufwerfen? Nein auch nicht. Ich denke, dass die überzähligen Bits ignoriert werden. Jedenfalls habe ich mich darum auch nie gekümmert und bisher ist nichts schiefgegangen.
-
Thread
ATMega88 8Bit Timer
so ganz schnalle ich das noch nicht. bei timer1 16-bit muss es so sein: [avrasm] ; Timer1 16-Bit vorbereiten ldi temp1, (1<<CS10) ; CS10 setzen: Teiler 1 sts TCCR1B, temp1 ldi temp1, (1<<TOIE1) ; TOIE1: Interrupt bei Timer Overflow sts TIMSK1, temp1 [/avrasm] und bei timer0 8-bit muss es so sein: [avrasm] ; Timer1 8-Bit vorbereiten ldi temp1, (1<<CS00) ; CS00 setzen: Teiler 1 out TCCR0B, temp1 ldi temp1, (1<<TOIE0) ; TOIE0: Interrupt bei Timer Overflow sts TIMSK0
-
Thread
brauche Digitale IO an Standard PC
Ergänzung, aus der man erkennt, wie einfach man mit LabVIEW (in Windows oder Linux oder PDA) diese Bits setzen kann. siehe Bild im Anhang Gruß Fritz
Echtzeiterweiterung. um die 32 Ports zu erweitern, stelle ich mir folgendes vor. - zu Beginn setze ich 5 Ausgänge zur Adressierung eines Inputmoduls. - das Modul sendet ein "bereit zum Senden" Signal - die PCI Karte ein "bereit zum empfangen" Signal - das Modul berträgt 16 bit parallel auf die