-
Thread
ARM9 / STR9 Dev-Kit mit Ethernet/USB/CAN für 39,-
ganz vergessen... Die 10,4MHz sind der Bittakt, Abtastwerte sind 16Bit lang.
@Dominic: Unterstützt OpenOCD (jetzt) auch das Setzen/Löschen des Flashbank-Mapping-Bits : CSX = Mapping of CS0 and CS1 sowie das Flashen der bei gesetzem Mapping-Bit vertauschten Flashbänke (Bootbank 32 KByte, Nonbootbank 512 KByte) des Str912
-
Thread
AVR Register Beschreiben
raus um zb ein einzelnes Bit auf 0 oder 1 zu setzen, wenn es dafür auf einem Prozessor spezielle Instruktionen dafür gibt (wie zb beim AVR). (*) d.h. stimmt nicht ganz. Mit Bitfeldern kann man da was hindrehen. Was allerdings
Bits (d.h. das gezielte auf 0 setzen). Ob du das in einer einzigen Anweisung schreibst [c] PHY_CC_CCA = (PHY_CC_CCA & 0xE0) | 11; [/c] oder ob du das auf meherer aufteilst [c] uint8_t tmp =
-
Thread
Programmoptimierung
den Alarmtönen geändert? Ging wohl nicht auf Anhieb? Was nicht verwunderlich ist, hilf ist eine 8-Bit Variable, die kann man nicht auf 500 setzen ;-) >Altes Programm (siehe erster Post): >Größe, der hex-file: 10,4KB >Neuste Version: >Größe, der hex-file: 4,22KB Naja, Faktor 2,5, nicht schlecht
Alarmtönen > geändert? Ging wohl nicht auf Anhieb? Was nicht verwunderlich ist, hilf > ist eine 8-Bit Variable, die kann man nicht auf 500 setzen ;-) Joa, aber wenn du nochmal in der alten Version von "final_program_endgueltig.c" genauer hinschaust, erkennst du, das die Variable 16-bit hatte ;-)
-
Thread
attiny2313, LCD, 4-Bit, C, Einzelne Zeichen falsch
Versuche es mal mit c='0' statt c=0 in der ersten Zeile. Und dann vielleicht ein delay zwischen dem Setzen des cursors und der Ausgabe.
Enable-Puls static void lcd_enable( void ) { LCD_PORT |= (1<<LCD_EN); // Enable auf 1 setzen _delay_us( LCD_ENABLE_US ); // kurze Pause LCD_PORT &= ~(1<<LCD_EN); // Enable auf 0 setzen _delay_us( LCD_ENABLE_US ); // kurze Pause } [/c]
-
Thread
AtMega2560: sbi, sbis Probleme
zweimal machen sollen. Wie ich geschrieben habe, wäre es, wenn du wenigstens das gleiche Portbit setzen und prüfen würdest. Tust du aber nicht. Prüfen tust du Bit1, gesetzt wird aber Bit0. Wenn du also geplant hattest, ein Input-Bit mit Zeitverzögerung an einem anderen Pin wieder auszugeben und dabei
k) ). In Fall 1 geht also die Logik schief (wenn Bit auf 0, dann auf 1 setzen, sofort danach das auf 1 gesetzte Bit wieder loeschen). In Fall 2 und 3 geht die Bitnummerierung schief wegen der anderen Bedeutung in den SBR/CBR-Befehlen.
-
Thread
RTC DS3231 - Temperatur Daten?
ein "Selbstläufer" ist... halt alle 64 Sekunden ein Update. Jetzt habe ich natürlich mal ein setzen des CONV Bit im Control Register vorangestellt, das Erbenis ist leider das gleiche. :-(
if ((readIIC() & 0x00ff) & (1<<BSY)) // auf busy pruefen mit 0x00ff unddieren weil Arduino 16 Bit liest aber nur 8 Bit kommen. i2c_test_flags|=(1<<I2C_RTC_TEMP_BSY); // Flag busy setzen else i2c_test_flags&=~(1<<I2C_RTC_TEMP_BSY); // Flag busy loeschen
-
Thread
C: Bit in einer Variable eigenen Namen geben?
Du könntest auch für jedes Bit folgendes machen: #define BIT0 0x01 #define BIT1 0x02 ... #define BIT7 0x80 und dann in deinem Code Dinge wie var = BIT0 | BIT1 | BIT7; schreiben um Bits zu setzen, oder var ^=
Wenn man einen char mit 8 bit überlager, ist einem recht egal, wo diese stehen. Ausserdem ist es dann wesentlich einfacher, ein Bit zu setzen: [c] foo.bit3 = 1; foo.bit4 = 0; [/c] Das rumbasteln mit Masken und und und
-
Thread
Messung niedriger Frequenzen schlägt fehl
, dass zum Zurücksetzen des Input Capture Flag das Bit ICF1 gesetzt werden muss. Aber mit dem Befehl REGISTER1 |= (1<<BIT1) wird doch nur das Bit1 im Register1 gesetzt, oder?
Sash uM schrieb im Beitrag #2413860: > Aber mit dem Befehl > REGISTER1 |= (1<<BIT1) > wird doch nur das Bit1 im Register1 gesetzt, oder? Da diese Schreibweise identisch ist zu REGISTER1 = REGISTER1 | (1<<BIT1) werden daher dann auch alle anderen Bits erneut als 1 in
-
Thread
Auf dem Kriegsfuss mit AVR
ausgeführt werden, ohne das sich nur ein Byte verändert (keine Lockbits sind gesetzt) 4. warum das Setzen von Fuses immer so ein umständlicher Akt ist, während bei microchip in C18 alle Bits in #pragma-Anweisungen festgelegt werden. Auch das Platzieren von Konstanten im Programmspeicher an einer vorgegebenen
Bootsektor. Bei meinem Bootloader habe ich deshalb einen API-Call dafür eingebaut. > 4. warum das Setzen von Fuses immer so ein umständlicher Akt ist, > während bei microchip in C18 alle Bits in #pragma-Anweisungen festgelegt > werden. Ja, das ist unschön. Andere MCs machen das besser, indem immer
-
Thread
MENÜ-STEUERUNG
haben, muss der Zählumfang begrenzt werden. Das geht am einfachsten, indem man nur die unteren drei Bit benutzt, die haben den Wertebereich 0 bis 7. Mit einer AND-Verknüpfung kann man diese Bits maskieren. Was soll nun passieren, wenn eine der Dimm-Tasten gedrückt wird? Klar, es soll eine PWM im Tastgrad
Wert in eedr - hebe den Schreibschutz auf (eemwe) - setze innerhalb 4 Takte Schreibimpuls (eewe) Falls ein Programm mit Interrupts arbeitet, könnte zwischen Schreibschutz aufheben und Schreibimpuls setzen ein Interrupt zuschlagen und damit das Setzen des
-
Thread
Datentyp bit beim 8051
Egal was vom Port gelesen wird, der 8 Bit Ergebnistyp wird dem 1 Bit bool zugewiesen. Das ist nicht gut, gar nicht gut, ...
Ein Frohes Neues Jahr und auch in 2015 kann man 8 Bit nicht auf 1 Bit schrumpfen. Wenn schon, dann so [c] _sw1 = (P5 & 0x01) != 0; ... usw. [/c]
-
Thread
MSP430G2: Elegantester Weg Bits zu empfangen?
auf "primary module selection" aendern (via P2SEL0/P2SEL1) b) TA0CCR auf 16MHz/160kHz = 100 setzen. c) Counter (TA0CR) auf -50 setzen und timer starten d) Der erste compare interrupt sollte nach 150 timer zyklen kommen, also inter Mitte vom zweiten "1" bit. e) Folgende interrupts
auf die pos. Flanke warten. Wenn Delimiter high: Timer (CCR0) auf eine halbe Bitzeit (~3.12 µs) setzen. Z. B. Bitzähler setzen Bei jedem Timerinterrupt: - Bit einlesen - Bit in ein Schieberegister - Timer (CCR0) auf eine ganze Bitzeit (~6.25 µs) setzen Letzteres ist prinzipiell nur beim ersten
-
Thread
STM32: Bitbanding für Arrays?
gut aus, probiere ich mal aus! ee_fat [index / entrySize] = (ee_fat [index / entrySize] & ~(1 << bit)) | (value << bit); Nicht ganz einfach zu verstehen... erst Bit löschen mit & ~(.. , dann das neue mit ODER danach einmaskieren? Geht das hier auch noch eleganter? [c] /* Bit setzen */ LED_BitStream |= (uint64_t)(1ull << pos ); /* 1 Bit evtl. blinken lassen */ if (blink) /* Setze korrespondierende Position im Blink Stream */ LED_BitStatus |= (uint64
-
Thread
Einstellbarer Frequenzgenerator für 0.12 Hz - 8 MHz mit Atmega 8 und Bascom
Ferner funktioniert das Abspeichern der letzten Einstellung nicht. Kann es richtig sein, dass bei dem Setzen der Fuses EESave nicht gesetzt werden muss? Meine Fuse Bit Einstellung : High = 0xC9, Low = 0xEF . Ansonsten scheint alles zu Laufen. Gruß Klaus
Ocr1bh = &B0111_1111 : Ocr1bl = &B1111_1111 'Register fuer Tastverhaeltniss (16 bit Wert 50%) Ist ja schon das Fast-PWM aus dem Atmel Mega8 Datenblatt. 16 bit Variable über die Taster ändern und dann in High- und LowByte aufteilen und in die beiden Register schreiben... &H00
-
Thread
bit position ohnel log
wie kann ich folgende umwandlung ohne log durchführen (bit position ermitteln): input -> output 0x08 -> 4 0x04 -> 3 0x02 -> 2 0x01 -> 1 danke
Addresse im Z-Register springen. dafür muss man aber erst das Z-Register auf die aktuellen PC setzen und dann noch den wert addieren. Danach noch den Sprung ausführen. Es ging um die Optimierung und das ist das zu langsam.
-
Thread
Rust - ist das hier um zu bleiben?
drauf an, wo und in wie weit es später eingesetzt werden wird, ob man sich da noch damit auseinander setzen wird.
#7257630: > Warum soll 10 + 11 nicht 21 sein? Weil 0xa + 0xb nunmal 0x15 sind. Außerdem nicht mehr 4 Bit, sondern jetzt 8. Das ist alles viel Interpretationssache, z.B. auch, weil die Zahlen ab 8000 bei 16 Bit immer negativ sind - sofern man das braucht. Wen
-
Thread
AVR-Tutorial: ADC
sbr Temp1,1<<ADSC sts ADCSRA, Temp1 wait_adc: ; wenn der ADC fertig ist, wird dieses Bit gelöscht lds Temp1,ADCSRA sbrs Temp1,ADSC rjmp wait_adc ; Cursor auf die 5 Stelle in Zeile 4 setzen ldi Temp1, 0b11011000 rcall lcd_command ; ADC einlesen: ldi xl,
sbr Temp1,1<<ADSC sts ADCSRA, Temp1 wait_adc: ; wenn der ADC fertig ist, wird dieses Bit gelöscht lds Temp1,ADCSRA sbrs Temp1,ADSC rjmp wait_adc ; Cursor auf die 5 Stelle in Zeile 4 setzen ldi Temp1, 0b11011000 rcall lcd_command ; ADC einlesen: ldi xl,
-
Thread
debugWIRE mit JTAG ICE mkII
verification of the Flash and EEPROM is disabled in Parallel and Serial Programming mode. The Boot Lock bits and Fuse bits are locked in both Serial and Parallel Programming mode." Die LB1 und LB2 werden dort als "Memory Lock Bits" bezeichnet. Jetzt darf spekuliert werden...
Richtig, so sehe ich das auch. Man kann per debugWIRE *keine* Fuses setzen. Man hat lediglich Einfluss auf DWEN, und dieses Bit lässt sich auch nur löschen. Du schriebst aber: > ... auch Fuses setzen ... Ein Fuse-Bit haben wir jetzt ja geklärt. Und weiter? Ich für meinen
-
Thread
Beeinflussung von ADC Messungen
verstanden. Die Kanäle kann ich mir im Datenblatt unter Table 17-4. aussuchen bzw. die richtigen Bits setzen. Ich habe jetzt mal folgendes probiert [c] void neu1() { ADMUX |= (1 << REFS0) | (1 << MUX0); //Sensor an PB2 ADCSRA |= (1 << ADPS2) | (1 << ADPS1); //Teilungsfaktor
starten ADMUX |= (1 << REFS0); [/c] Jobst M. schrieb im Beitrag #4740541: > Schalte die MUX Bits bitte nicht einzeln. Wähle einen Kanal aus, indem > Du ALLE MUX Bits korrekt setzt. Dies verstehe ich noch nicht. MUX0 und MUX1 kann ich doch erst in der Funktion setzen, oder? Viele Grüße Torsten
-
Thread
8bit Pointer bei großen AVR's
Nein. Das Flash-ROM ist es. Dessen Adressierung ist je nach Art der Verwendung in 16-Bit Worten (als Code) oder in 8-Bit Bytes (als Daten). > so dass man mit einem char maximal 16*256, also 4k Speicher, > adressieren kann. Nein. Ausserdem fehlt die Einheit. In Bits wäre immerhin
. Das RAM ist 8 Bit breit. Das Flash hat 16 Bit. mfg.
-
Thread
Can Controller "SJA1000" Probleme mit Register
Höchstwarscheinlich kommt nämlich genau das an, was Du gesendet hast! Bedenke, daß verschiedene Register bits haben, die man geseondert setzen/lesen muss. Der SJA1000 hat ausserdem in den verschiedenen Modi (BasicCan/PeliCAN) ein unterschiedliches Registermapping. Gruß, Patrick...
Clear Bit (CBI) geht so: sfr &= ~BITx Set Bit (SBI) geht so: sfr |= BITx Wenn das Register also "CDR" heist, dann würde ein 'CBI CDR, 7' so aussehen: CDR &= ~BIT7 BIT0 bis BIT7 sollten in den headerfiles
-
Thread
Pollin Netbox
Pinbelegung ----------- [pre] 1 /STROBE Strobe 2 D0 Data Bit 0 3 D1 Data Bit 1 4 D2 Data Bit 2 5 D3 Data Bit 3 6 D4 Data Bit 4 7 D5 Data Bit 5 8 D6 Data Bit 6 9 D7 Data Bit 7 10 /ACK Acknowledge 11 BUSY Busy 12
Error 16 /INIT Initialize 17 /SELIN Select In 18 GND Strobe Ground 19 GND Data bit 1 and 2 Ground 20 GND Data bit 3 and 4 Ground 21 GND Data bit 5 and 6 Ground 22 GND Data bit 7 and 8 Ground 23 GND Busy and Fault Ground 24 GND Paper out, Select, and Acknowledge
-
Thread
Windows XP auf SSD migrieren?
beeinflussen)? - Wie geht man sinnvoll vor? Kann ich auf althergebrachte Werkzeuge wie GParted setzen? Viele Grüße W.T.
fehlt höchstwahrscheinlich die 48-Bit-Unterstützung.
-
Thread
Verständnis-Hilfe
Stelle Bitzuweisung. Beim AVR ist es bei der GCC Toolchain vorgesehen, dass die Zuweisungen an 8-Bit oder 16-Bit Register erfolgen. Bei einzelnen Bits muss man also Zuweisungen benutzen, die die restlichen Bits unverändert lassen. Bsp /* Port A.Pin 0 zwischen HIGH und LOW umschalten */
unter "einen Byte auf 4 Pins" verstehst. Wenn du ein Byte einem Register zuweist, dann werden alle 8 Bit ausgegeben. Wenn das nur 4 Bit sein sollen, mußt du das entsprechend maskieren, und davon, was du maskierst, hängt dann ab, welche Bits geschrieben werden.
-
Thread
Atmega via Ethernet flashen
war tatsächlich nur eine 16 bit addition zu sehen. (ich verwende avr-gcc 4.3.2). Mit den casts werden 32 bit addiert, und das flash vollständig programmiert! BINGO! Gruß, Dirk. PS kenne mikrocontroller.net schon einige Jahre,
ich den Bootloader auf einem AVR-NET-IO von Pollin. Das Board arbeitet einwandfrei. Als Compiler setze ich unter Debian avr-gcc 4.3.2 ein. Ausgecheck mittels svn habe ich Rev. 51. - Mikrocontroler Atmega 32-16PU - Die Fuse-Bits sind wie folgt gesetzt: [c] avrdude: Device signature = 0x1e9502
-
Thread
Atmega8 vers. C - Interuptbehandlung
Eingänge an Port PD.. abfragen. Hier ist immer nur einer 'aktiv' 1 Eingang abfragen an Port PB.. 1 Bit an Port PB setzen 2 Ausgänge für die Displays im Multiplexbetrieb evtl. ein weiteres Bit aus Port B oder D um ein Disable zu setzen. Ich habe hier den Atmega 8 als Kandidat rausgesucht. Pic's mit
Eingänge an Port PD.. abfragen. Hier ist immer nur einer 'aktiv' > 1 Eingang abfragen an Port PB.. > 1 Bit an Port PB setzen > 2 Ausgänge für die Displays im Multiplexbetrieb > evtl. ein weiteres Bit aus Port B oder D um ein Disable zu setzen. Wie Falk B. schon wiederholt sagte: du hast vier Eingangssignale
-
Thread
warum werden bei uart immer char gesendet/empfangen?
zwecks Synchronisierung ("lowlevel Protokoll"). Das is ne Ebene zu tief! Steuer _Zeichen_ nicht Bits! Setzen wir hier mal an: STK500-Besitzer schrieb im Beitrag #6701727: > Statt Steuerzeichen ("Soft Handshake") https://de.wikipedia.org/wiki/Datenflusssteuerung#Software-Flusssteuerung,_Software-Handshake
nicht zwingend 8 Bit, auf manchen DSPs gibts schlicht keinen 8 Bit Typ.
-
Thread
Fuse Bits Mitten im Programm ändern
Taktquelle eines ATTiny88s mitten im Code-Ablauf zu ändern. Also ist es relativ einfach, die Fuse Bits beim Programmieren mit Atmel Studio oder jeglichen anderen Tools zu setzen, und sogar im Code, wie in der fuse.h-Datei in den Kommentaren erklärt, habe ich es schon hingekriegt, was allerdings nur beim
auch einen AVR mit Clock Failure Detection angekündigt: http://www.atmel.com/Images/Atmel-42397-8-bit-AVR-Microcontroller-ATmega328PB_Datasheet.pdf MfG Spess
-
Thread
BCM flackert beim dimmen
bit 4 = 4351 Taktzyklen bit 5 = 8449 Taktzyklen bit 6 = 16639 Taktzyklen bit 7 = 33025 Taktzyklen Muss jetzt gehen, werde später etwas genauer durch deinen Code gehen. Vielleicht kommt da
Man muß die Bitzeiten aufsteigend ausgeben und nach dem Setzen der höchstwertigen Bitzeit das komplette Bitmuster updaten. Dann können nicht mitten drin falsche Bits entstehen. Das Main muß allerdings auch immer komplette Bitmuster erzeugen, ehe sie dann der
-
Thread
Erste Schritte mit ARM SAMD20
ja auf RAM wie auf Register zugreifen (wie schon der 8051), somit kann man dort direkt im Port ein Bit setzen (ist natürlich nicht wirklich RISC). Der ARM trennt aber Register und RAM, somit müsste man den Port auslesen, Bit setzen und wieder zurück schreiben. Da aber der ARM einen riesigen Adressraum
Register was erstmal sehr nett ist. Und OUTSET ist das Register mit dem einfach die entsprechenden Bits auf 1 setzen kann, also ohne read-modify-write.
-
Thread
Messung von kleinen Widerständen mit großen Vorwiderständen
sehen. Arbeitet mit ca. 3 V über hohe Schutzwiderstände hinweg und misst > mit 1 Ohm Auflösung. 16 Bit ADC verbaut. Wenn du mit einem 16bit ADC 10^-6 auflösen kannst, ist das keine Physik sondern ein Wunder. Du solltest das in einem Forum für Religion oder Esoterik weiterdiskutieren, wahrscheinlich
vorhanden (wie auch in der Norm gefordert), die Schaltung arbeitet mit 3 V, der verwendete MC hat 16 Bit AD Auflösung.
-
Thread
Serielle Ausgabe (VHDL)
Die Idee mit dem Zähler ist Folgende: Der Zähler(n-1 downto 0) ist n Bits lang. Und zählt nach oben. Jetzt werden die obersten Zähler(n-1 downto n-X) Bits als Adresse für das auszugebende Bit, und das Bit Zählers(n-X-1) als "Takt" verwendet. Die Bits Zähler(n-X-2 downto
bedeutet wir teilen die 100 durch 8, bekommen 12,5 und nehmen die nächste Zweierpotenz, 16, das sind 4 Bits. Das 4. Bit vom LSB aus ist also der neue Takt (das sind dann 6,25 MHz) und die 3 niederwertigsten Bits sind die Taktteiler. Der Zähler muss insgesamt mindestens 5+4=9 Bits lang sein. Es bietet sich
-
Thread
Attiny als schieberegister
innerhalb eines Taktes auszuwerten geht. Warum so kompliziert? Du kannst auf der SD-Karte einfach 16-Bit-Werte speichern: 0x0000 = nichts gedrückt 0x0001 = B gedrückt 0x0005 = B und Sel gedrückt etc. Dann musst du den Ausgabewert nur im ersten Takt je nach Wert des ersten (untersten) Bit setzen,
0 0 0 0 0 0 0 0 0 0 0 0 0 0 = &h0000, alle Bits 0, nichts gedrückt 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 = &h0001, Bit für "B" gesetzt: B gedrückt. 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 = &h0005, Bits für "Sel" und "B" gesetzt: Sel und B gedrückt. [/code]
-
Thread
ASM code problem
r16, 0b00000000 ; PortA = Eingangsport out DDRD, r16 main: sbic PIND, 0 ; wenn Bit PIND - 0 auf 0 ist, dann überspringe den rjmp rjmp portb_one sbi PORTB, 0 ; Bit 0 auf 1 setzen cbi PORTB, 1 ; Bit 1 auf 0 setzen rjmp main portb_one: cbi PORTB, 0 ; Bit 0 auf 0 setzen sbi PORTB, 1 ; Bit 1 auf 1 setzen rjmp main [/avrasm]
-
Thread
sehr schnell sehr viele LEDs ansteuern
Jetzt nochmal genau nachgerechnet: 128 x 64 Pixel x 3 Farben x 4 Bit je Farbe / 8 Bit pro Byte x 66000 Bilder pro Sekunde = ~800MB/Sekunde Mit welchem Bild-Material soll das Display gefüttert werden? Muss es dann noch Verarbeitet werden? (Z.B. einblenden von Zahlen
sagt da was anderes, nämlich 8,16 GBit/s für HDMI 1.3. Schon normales HD1080p/60 Hz braucht 60Hz*8bit*3*1920*1080 = 2.985.984.000bit/s und das ohne Sync-Lücken. Die Karten müssen das können, da sie ja entsprechende Monitore ansteuern. Gruß Stefan
-
Thread
GPIO schalten
jetzt einen anderen GPIO als CS verwenden will. Wie gesagt: 1. verwende irgendeinen Pin als SS# und setze den auf low 2. starte einen SPI-Transfer und ignoriere den dort spezifizierten SPI-Pin 3. setze den irgendeinen SS# Pin wieder auf high Fertig. Denke über jeden der 3 Schritte sorgfältig nach.
oder wie kann ich z.B meinen MISO Anschluss von Gpio 9 auf z. B GPIO22 setzen
-
Thread
ATMEL stellt grafische Oberfläche für 8 bit Controller vor
ATMEL stellt eine grafische Programmier-Oberfläche für 8 bit ATMega's vor, sogar der Arduino UNO wird explizit unterstützt. Release Date soll der 1. Mai sein. http://avrtools.no/Main.asp?page=2 Jetzt bin ich ja mal echt gespannt auf eure Reaktionen, weil
AchWieLustig schrieb im Beitrag #3630073: > ATMEL stellt eine grafische Programmier-Oberfläche für 8 bit ATMega's > vor Woraus schließt du, dass ATMEL dahinter steckt?
-
Thread
Z80 Mikrocomputer Bastelei
Heinrich schrieb im Beitrag #2236125: > Soweit ich weiß, ist der ATMEGA644 auch nur 8-bit breit. Es gibt auch noch was anderes als AVR. Der Trend geht heute eindeutig zu 32 Bit System. Zumal 32Bit uC heute zum Preis von 8 Bit zu haben sind.
"Es gibt auch noch was anderes als AVR. Der Trend geht heute eindeutig zu 32 Bit System. Zumal 32Bit uC heute zum Preis von 8 Bit zu haben sind." Ja Helmut, das ist mir auch bekannt. Das Problem ist dabei, dass ich wieder von vorne anfangen muss. Und wer garantiert mir dann in
-
Thread
Atmel kündigt AVR XMEGA-Mikrocontroller an
Bereich auslagern möchte. Dann kann er über diese virtuellen Registerbeich mit den Single-Opcodes die Bits schnell togglen, auslesen, setzen, löschen usw. das macht man natürlich nur mit denjenigen Ports bei denen man schnell Bits verändern möchte, also ohne RMW-Feature-Umweg in atomarer Weise. Auch das
das Thema ist doch geklärt. Es ist ein ATmega, 8Bit. Die 16 Bit sind quasi Werbung mit dem Hintergrund das man über den EBI ja bis zu 16Mb an Speicher dranhängen kann. Die 16Bit haben nichts mit der MCU zu tun allerhöchstens mit dem externen Speicherinterface
-
Thread
USB CDC von Stefan Frings und WS
Gang, > wenn irgendwann später wieder Zeichen im Ringpuffer landen? Einfach im EPnR die STAT_TX-Bits auf "11" (VALID) setzen. Vorher die Adressen des Puffers in der Deskriptor-Tabelle aktualisieren. Das geht von beliebigen Codestellen aus und braucht überhaupt keinen NAK-Interrupt. Meine USB-CDC-Implementierung
Bit9 wird ein Connect USB-PC angezeigt.
-
Thread
LCD DISPLAY FLACKERT
Hallo, Kim schrieb im Beitrag #4157768: > ich benutze den 4-Bit-Modus und habe DB4...DB7 vom LCD-Display mit > RG6...RG9 am Controller verbunden. Wenn Du im 4 Bit Modus bist, muss Du am Display die Eingänge 0...3 auch auf Masse legen, sonst kann es an diesen
(letzten 4 Befehle) schicke ich immer zuerst die oberen 4 bits und daraufhin die unteren 4 bits (0x28: zuerst 0x02 dann 0x08) nach dem senden warte ich 45us. Dann ist das Display fertig initialisert. Folgend schicke ich 0x0F, damit ich den Cursor an der ersten
-
Thread
Was kommt nach Atmega?
ist es. Geht ja schon mit ST32F1xx und LPC17xx los: Beim STM32 sind viele Register trotzdem nur 16 bit breit und haben dann wieder dieses tolle high- und low-register, obwohl man das wohl schön in 32 bit hätte abbilden können. Andererseits haben die STM32 dann wieder ein CRC-Register drin, die LPC
Für die Initialisierung ja, wenn man sich nicht all zu sehr um die vielen Bits kümmern will. Um jetzt ein PortPin zu setzen geht es mit der direkten Registerdeklaration einfacher und effizienter.
-
Thread
allgemeine PicoMite Anfängerfragen
7-Bit Addressing The standard addresses used in these commands are 7-bit addresses (without the read/write bit). MMBasic will add the read/write bit and manipulate it accordingly during transfers. Some
schreibt, ungerade Adresse liest. Wie macht das PicoMite? Übergebe ich bei I2C read/write eine 8-Bit Adresse und PicoMite ändert Bit 0 entsprechend Lesen/Schreiben, oder ich übergebe eine 7-Bit-Adresse, PicoMite hängt Bit 0 dran (und verschiebt damit alle Bits 1 nach links)?
-
Thread
GLCD Fonts (64x128)
davon schon profitieren wenn man (bei oben spekuliertem Szenario) seine Grafikansteuerung auf die 16bit Felder abstimmt. Wenn ich einzelne Bits setze, kann der Compiler da auch nicht auf 16 bit Breite optimieren. Bleiben wir mal beim Beispiel mit dem AVR und dem 128*64er Display, wenn ich jetzt alle
_t x, uint8_t y, uint8_t white) { uint8_t column=x>>3; //Div 8 uint8_t bit=x&0x07; //Modulo 8 switch(white) { case 1: pixMap[column][y]|=(1<<bit); break; case 0: pixMap[column][y]&=(uint8_t)(~(1<<bit)); break; } } [/c] Diese
-
Thread
AVR exakt Millisekunden zählen
Warum nimmst Du nicht einfach einen der 16Bit-Timer? Z.B. der ATmega328PB hat 3 16Bit-Timer. Exakt wird das aber auch nicht, da ja die Quarze nicht exakt 16MHz haben, sondern z.B. 16,000001MHz. Ist aber auch kein großes Problem, man kann die
Schaltjahr. OK. Wir brauchen eine Schaltmillisekunde. Aber das funktioniert genauso. Mit drei 16bit korrekturwerten (meistens kommt man mit 8bit aus), bekommt man nahezu jeden Quarz in den Griff. Es ist kein Float oder 32bit Variable notwendig. Und komplizierte Berechnungen werden zur Laufzeit auch
-
Thread
Verständnisfrage zur Toleranz von R2R-Netzwerken
LSB können aus der Grabbelkiste sein, denn deren Toleranzen sind nebensächlich. Ein Beispiel: Bit 7 0.25% (MSB) Bit 6 0.5% Bit 5 1% Bit 4 2% Bit 3 4% Bit 2 8% Bit 1 16% Bit 0 32% (LSB) Nochwas: Wenn jemand sowas liest: "Ich weiß nicht, wo das Problem beim Lesen ist, aber ich habe
das Verstehen nicht klappt. Bei einem > R2R-netzwerk wirst du ja auch mehrere Pins hi oder lo setzen müssen. Das ist bereits gelöst. Die Baugruppe sendet 8 Bit Daten in Serie. > Wenn jemand sowas liest: "Ich weiß nicht, wo das Problem beim Lesen ist, > aber ich habe schon zweimal geschrieben
-
Thread
batch programmierung (Win XP) - parallel port ansteuern
Dir jemand ein Executeable schreiben, welches z.B. folgende Aufrufparameter unterstützen sollte: SetzePinsAnLPT LPT, Bit0, Bit1, Bit2 ... Bit6, Bit7, Strobe Also die üblichen Verdächtigen. Ein Aufruf in einer Batch-Datei könnte dann folgendermaßen aussehen: SetzePinsAnLPT 1 0 1 1 1 0 0 1 1 0 "Deine erste Wunschpause" SetzePinsAnLPT 1 0 1 1 1 0 0 1 1 1 "Deine zweite Wunschpause" SetzePinsAnLPT 1 0 1 1 1 0 0 1 1 0 "Deine dritte Wunschpause" SetzePinsAnLPT 1 0 1 1 1 0 1 1 1 0 "Deine vierte Wunschpause" SetzePinsAnLPT
-
Thread
mit Bascom über rs232 Frequenz aus einen Frequenzzählermodul auslesen.
. Und genau dies kann dazu führen, daß der Oszillator nicht richtig schwingt. Also: CKOPT auf 0 setzen!
Bezeichnung PinD.7 könnte man zum leichteren erinnern so expandieren: (P)ort (In)put auf PORT(D) Bit(.7) Gruss, Gerhard
-
Thread
128x64 Grafik LCD An Atmega 8/16/32
loesche Anzeige .equ home_LCD = 0b00000010 ;return home .equ set_LCD = 0b00111100 ;8 bits,2 Zeilen,5x7dots .equ LCD_on = 0b00001110 ;schalte LCD ein .equ entry_mode = 0b00000110 ;setze Cursor ;*************************************************************** ;Variablendefinition
trotzdem mal einen Erklärungsversuch. Wenn du ein Byte zum Display schickst, representieren die 8 Bits 8 untereinanderliegende Pixel. Ein H-Bit heisst Pixel an. Ein L-Bit Pixel aus. Bei einem 5x7 Font hast du 5 Spalten mit 7 Bits. Wenn du dir die linke Spalte von einem 'A' (Anhang) ansiehst sind Bit0
-
Thread
Lästern -> Ratespiel!!! Gesperrt
will ja durch 8 dividieren und den Rest davon übrig behalten. D.h. alles bis auf die untersten 3 Bit auf 0 setzen. Eigentlich geschieht's mir Recht :-) Da predige ich den Leuten immer und immer wieder, dass man solche Low-Level Optimierungen dem Compiler überlassen soll, d.h. schreib was du haben
+ 1 ) & 0x07; noch einen Tick besseren Code erzeugt. Liegt daran, dass der Compiler das mit 8 Bit rechnet,während er für die % Variante auf 16 Bit Arithmetik umschaltet.