-
Thread
Viel Information mit wenig Bytes übertragen
Eine Pause von 5ms reicht vollkommen, um in der Timer ISR einen Flag zurückzusetzen (oder zu setzen). Und mit 3 bit für Temp/Wind/Feuchte etc. bleiben dir noch 5 bit übrig für Sensoradresse.
Nimm doch 2 Byte = 16 Bit große Telegramme. In den Obersten zwei Bit kodierst du die Art des Paketes (00 = Temperatur, 01 = Luftfeuchte, 10 = Windgeschwindigkeit, 11 = ?). Dann hast du immer noch 14 Bit (= 8192 Werte) für die
-
Thread
was wenn Schieberegister kleiner ist?
mit LSB. Die Datenbits werden wie folgendes aufgeteilt: Es wird pro Umdrehung 2-paket jeweils 8-Bits gesendet. Paket-1: Bit-1: Start Bit-2: Direktion Zustand Richtung 0 Rechts 1 Links Bit-3 bis 7:Impulszahl Bit-8: Ende Paket-2: Bit-1 bis 2: Start Bit-3: Direktion Bit- 4 bis
VOLLTREFFER, DANKE DIR!!!!! >also ungenutzt bedeutet NULL; Du kannst sie auch auf Eins oder 0815 setzen, aber sie haben dennoch keine Information, weil der Wert konstant ist. ;-) >> Wenn es WIRKLICH 9 Bit sein müssen, >WAS heisst wenn es wierklich??? Wenn dein Gerät, welches per SSI die Position
-
Thread
Portausgänge shiften am Atmega 32
nicht mit Atmegas vertraut, aber ich denke >OCR1A |= 675; >wird nicht klappen, da der Atmega nur 8 bit Register hat, also nur Werte >bis 255 annehmen kann. Als 8-Bit-Register heißt das OCR1AL und OCR1AH. OCR1A ist für den Compiler ein 16-Bit-Register. >TCCR1A |= (1<<COM1A0); Dann solltest du aber auch OC1A (PD5) auf Ausgang setzen. MfG Spess
-
Thread
16bit Adressbus abhören
>allerdings kann der AVR keine 16bit in einem Rutsch einlesen Der Adressbus ist 16bit breit, vom Datenbus den er dann einlesen will, hat er noch nichts geschrieben. Ich vermute aber mal 8Bit, das würde in einem Rutsch gehen. >27c256
packts der AVR ja auch nicht. Und die 512Byte kommen ja auch nicht auf einmal. Das 27256 ist in 8Bit Worten organisiert. Also ein 16 Bit Adressbus, der durch Logik den uC trigger, der dann 8Bit vom Datenbus holt. Achja, zum Thema wieder, so wie ich das gerade geschrieben habe geht. Habe einen Memory-Dumper
-
Thread
8 Bit Timer mit Tiny26
ATmega16 auf den ATTiny26 portieren. Das einzige Problem dabei ist der Timer. Im Atmega16 habe ich den 16-Bit Timer mit dem ClearTimerOnCompareMatch (CTC) Modus verwendet. Da der Tiny26 jedoch keinen 16 Bit Timer hat, muss ich wohl oder übel den 8 Bit Timer nehmen. Soweit zur Vorgeschichte..... Nun zum Problem
Hi! Du mußt nicht OCIE1A in TIMSK setzen, sondern TOV1 (Timer Overvlow, Bit 2) für den CTC-Mode in Verbindung mit OCR1C. Das hängt damit zusammen, das der CTC-Mode einen Overflow-Interrupt auslöst, wenn der Timer 1 den Wert von OCR1C erreicht
-
Thread
DOS-COM mit bcc erzeugen (16bit),
Hi, ich möchte mit dem bcc-compiler MSDOS-COM Programme erzeugen. Das funktioniert so halb... Testen tu ich das Ganze mit dosbox auf linux. Dieses Programm hängt die dosbox in einer Endlosschleife auf, scheint also geladen zu werden und zu laufen: [c] int main() { for(;;); } [/c] Disassembly: [avrasm] 00000000 55 push bp 00000001 89E5 mov bp,sp 00000003 57 push di 00000004 56 push si 00000005 EBFE jmp short 0x5 00000007 5E pop si 00000008 5F pop di 00000009 5D
-
Thread
Wie findet man möglichst genau die Frequenz des internen RC-Oszilators heraus ?
;LED_Weiß Portpin als Ausgang sei ;Globale Interruptfreigabe I-Bit (Bit7) im... ;...SREG (Status Register) setzen. ;----------------------------------------------------------------------------- ;Hauptprogrammschleife ( HPS ) ;-----
Du möchtest maskieren und gezielt bits auf ›0‹ setzen. Das ist gut. Schau dir mal an was: [c]uint8_t x = ~ 3 << 3;[/c] ergibt. Schau dir dann an was: [c]uint8_t x = ~(3 << 3);[/c] ergibt. Nimm das was eher deiner Intention entspricht
-
Thread
PI-Regelung bleibt hängen...
auf 8Bit bzw. 16Bit Werte zu normieren um dadurch nur mit ganzen Zahlen rechnen zu können. Die meiste Arbeit besteht jetzt im normieren und begrenzen der Zahlenwerte.
Programm gemacht: 1) erstmal nur einen P-Regler realisiert 2) von float auf int umgestellt 3) 10 bit PWM (und nachwievor 10 bit ADC). Gedacht habe ich mir das nun wie folgt: Zuerst wird der Sollwert eingelesen. Das mache ich, indem ich einen String über den Terminal einlese. 1023 entspricht dabei
-
Thread
Jumbo-LED Uhr
Anzeige nötig, oder? Der Look-Up-Table braucht ja auch nur 7-8 Einträge bei einer Datenbreite von 4 Bit.
neue hex file geladen und ausprobiert funktioniert leider nicht . kann es sein das ich zuerst die bits setzen muss damit es geht?
-
Thread
Übertragung von High- und Low-Signalen zwischen zwei AVR
dann einfach gezielt die Bits, die man nicht haben will, auf 0 zu setzen oder ein wenig zurecht zu schieben, bis sie an den gewünschten Positionen sind. soviel zum Thema > Fehler in den Programmen sind ausgeschlossen
. Das gelesene um 5 Bits nach rechts verschieben. Dann liegen die 3 inetressierenden Bits ganz unten im Byte. Mit einer Verundung mit 0x07 (binär: 00000111) alle nicht interessierenden Bits auf 0 setzen. Übrig bleibt eine Zahl
-
Thread
Rs485 reagiert nicht auf Daten
PE1 setze ich auf High-Pegel, jop.
Aha, da haben wir es doch. für 9600Baud bei f_CPU=2MHz musst du das CLK2X Bit im Register USARTE0.CTRLB auf 1 setzen Außerdem hast du den BSCALE Faktor von 4 komplett unterschlagen. Dieser wird in BAUSCTRLA und B eingetragen.
-
Thread
Claude Code trifft AVR-Assembler: vom Chip in den Browser mit einem Prompt
Besserwisser da draussen) Als Assemblerprogrammierer hast du vermutlich eine gute bewaehrte 16x16bit Multiplikation auf Vorrat und eine 32x32. Gut abgehangen, getestet, bewaehrt. Eine KI wuerde sich sowas einfach ausdenken. Und wie gesagt, ich setze voraus das sie so gut ist das ihr ausgedachtes
} PORTB &= ~(1 << SCK_BIT); delay_sht(); DATA_DDR &= ~(1 << DATA_BIT); delay_sht(); PORTB |= (1 << SCK_BIT); delay_sht(); nack = (DATA_PIN & (1 << DATA_BIT)) ? 1 : 0; delay_sht(); PORTB &= ~(1 << SCK_BIT
-
Thread
16bit-write ATMegaxx-PB
haben die das jetzt wirklich geändert?? Muss ich gleich mal ausprobieren. 324PB 8.6 Accessing 16-bit RegistersThe AVR data bus is 8 bits wide, and so accessing 16-bit registers requires atomic operations. Theseregisters must be byte-accessed using two read or write operations. 16-bit registers are connected to the8-bit bus and a temporary register using a 16-bit bus.For a write operation, the low byte of the 16-bit register must be written before the high byte. The low byteis then written into the temporary register
-
Thread
LC74776
.jpg Die Sequenz ist wie folgt (Bit 8 bis 15 und Bit 0 bis 7) Einfach rechts rotierend über Bit 8 ausgeben im angegebenen Protokoll im Datenblatt des LC74775. Byte 1 Byte 2 7654321076543210 ---------------- 1100000100000000 1100000000000111
setzen muß schon sein...
-
Thread
Z180 Programmierung (Timer)
guide kann man den Ausgang (TOUT1) auch ganz abschalten. Dazu im Time Control Register (TCR) die Bits TOC0 und TOC1 auf 0 setzen. Habe ich richtig gelesen - das kann man einfach über IO-Adrese 10H beieinflussen? Dann müsste man noch das Bit TIE1 (Timer Interupt Enable) auf 1 setzen, damit ein Interrupt
guide kann man den Ausgang (TOUT1) auch ganz > abschalten. Dazu im Time Control Register (TCR) die Bits TOC0 und TOC1 > auf 0 setzen. Habe ich richtig gelesen - das kann man einfach über > IO-Adrese 10H beieinflussen? Genau. > Dann müsste man noch das Bit TIE1 (Timer Interupt Enable) auf 1 setzen
-
Thread
Skurriles Problem mit BS170 Mosfets
= _BV( SCL ); DDR_RCK |= _BV( RCK ); clear(); } void outByte( char byte ) { int8_t bit = 7; do { if ( byte & _BV( bit ) ) PORT_SER |= _BV( SER ); else PORT_SER &= ~_BV( SER ); clock(); } while ( --bit >= 0 ); } void outBytes( uint8_t bytes[], uint8
Datensignal währenddessen im "LOW"-Bereich schwingt. Also bekommt der 595 vermeintlich lauter 0-Bits?
-
Thread
PIC CCS C - Port Ausgang mit 8bit int setzen
gerade nach einer Möglichkeit im CCS Compiler für den PIC184550 die PINs eines Portes direkt zu setzen. Also z.B. [code]PORTB = 11000000[/code] wodurch RB0 und RB1 gesetzt sein sollten. Gibt es irgendeine Möglichkeit dies mit einer 8 bit (oder auch 16 bit falls die direction noch enthalten sein muss
Also: Wenn Sie den Zustand eines Eingang-Pins abfragen möchten, hierzu wäre das zugehörige TRIS-Bit auf 1, dann verwenden Sie PORT! Möchten Sie aber einen Ausgang setzten oder löschen, hierfür muss das TRIS-Bit 0 sein, dann benutzen Sie die LAT Register!
-
Thread
Wie 16 Bit unsigned int in ASCII umwandeln?
Welche Möglichkeiten gibt es, eine 16 Bit unsigned int Variable in ASCII umzuwandeln? Schon mal Danke für alle Tipps.
Dumpf Backe schrieb im Beitrag #5200806: > Themaverfehlung. Setzen, sechs. Nomen est omen! ;-)
-
Thread
[AVR] Zwischen einzelnen PCINT-Quellen unterscheiden
ich das PINB Register zwischen und mache die Auswertung dann mit der Variable. Wenn du nur Status-Bits bei steigender Flanke setzt, könntest direkt das PINB Register mit einem Flag-Byte ver-oder-n und ein Flag setzen was im Hauptprogramm eine Änderung ankündigt.
besser? ISR(PCINT1_vect) { // Vergleich alter/neuer Portzustand uint8_t changedBits; uint8_t changedBitsBuffer; changedBitsBuffer = PINB; changedBits = changedBitsBuffer^portHistory; portHistory = changedBitsBuffer; // die restlichen Abfragen }
-
Thread
ADC und PWM am ATtiny84
auch da sind Veroderungen nötig (aus http://www.roboternetz.de/community/threads/45591-Wie-Mehrere-Bits-in-Register-setzen): Gicr = Gicr Or Bits(int1) -> Setzt Bit7 in Register GICR Bascom macht daraus: IN R16,0x3B In from I/O location PUSH R16 Push register on stack
<< ADEN); ergebnis /= 3; return ergebnis; } void pwm_init(){ //Ausgänge setzen DDRA |= (1 << PA6) | (1 << PA7) | (1 << PA5); DDRB |= (1 << PB2); //Timer 0 (8 Bit) //Löschen von Bits: OC0A/OC0B Bit 7 + 6 //Art der Wellenform erzeugung: PWM, Phase Correct
-
Thread
Frage zu MSP430 Dokumentation für Einstieg
obere Kante laut Datenblatt. " 24MHz 105C ULP Microcontroller With 32 KB FRAM, 4 KB SRAM, 44 IO, 12-bit ADC, 12-bit DACs, OpAmp/PGA " So ganz habe ich noch nicht verstanden, was bei Dir mit dem ADC nicht klappt. Lass uns abwarten, bis ich die Teile bei mir in der Hand halte, evtl. IAR (für ASM) auf
Datenblatt. Ja, das stimmt. > " > 24MHz 105C ULP Microcontroller With 32 KB FRAM, 4 KB SRAM, 44 IO, 12-bit > ADC, 12-bit DACs, OpAmp/PGA > " > So ganz habe ich noch nicht verstanden, was bei Dir mit dem ADC nicht > klappt. Lass uns abwarten, bis ich die Teile bei mir in der Hand halte, > evtl. IAR (
-
Thread
Mikrocontroller Aufgabe
---- Für Ausgangspins, die mit Anfangswert "high" initialisiert werden sollen: zuerst die Bits im PORTx-Register setzen anschließend die Datenrichtung auf Ausgang stellen Daraus ergibt sich die Abfolge für einen Pin, der bisher als Eingang mit abgeschaltetem Pull-Up konfiguriert war:
Einschalten auf 1 gehen soll Machst du da dieselbe Reihenfolge, dann ist der Pin zwischen dem Setzen des DDR Registers und dem Ausgeben des 1 Bits kurze Zeit auf 0. Denn das war ja der Default nach dem Einschalten. [c] // bis hier hier ist der Pin im Tri-State DDRB = ( 1 << PB0 ); /
-
Thread
Beim Setzen von Pixel werden 2 statt 1 gesetzt (STM32F4 + ili9341))
RGB565 ist ein 16-Bit Format, du schreibst 32 Bits (uint32_t) in den Speicher. Hätte eigentlich einen weißen und einen schwarzen Pixel schreiben sollen, denn 0x0000FFFF ist einmal weiß 16 Bits und einmal schwarz 16 Bits
hinzeigt. ....... Leuchtet mir als Mitlesender noch nicht ganz ein. Für einen Schreibvorgang 32 Bit erzeugt der FMC ja nur einen Write Strobe. Da das Display einen 16-Bit Port hat kann es doch eigentlich auch nur 16 Bit (also ein Pixel-Wort) durch einen Write Zyklus bekommen. Wenn zwei Pixel
-
Thread
Wie steige ich am besten von AVR auf PIC um?
Wie ist das beim AVR eigentlich wenn ich einen Pin setzen/löschen will? Muss ich dann den Port in ein Arbeitsregister einlesen, das bit verändern und wider zurückschreiben?
hat man das dort so aufgebaut wie auch bei vielen ARMs, also mit einem Register, über das man Bits setzen kann, einem weiteren, über das man sie löschen kann usw. usf.
-
Thread
ADC im 8 bit Modus
und dementsprechend keine großen Erfahrungen mit dem AVR-GCC und wollte fragen wie man den ADC auf 8 bit setzen kann. Es müsste doch irgendwas mit ADLAR oder so sein. Vielen Dank im Voraus, Tommy
[c]ADMUX |= (1 <<ADLAR);[/c] so setze ich doch die bitreihenfolge anders. und dann kann ich aus ADCH den wert auslesen, oder?
-
Thread
Checkliste: Ausrüstung für ATiny Programmierung
Thilo schrieb im Beitrag #2626207: > Mir ist die Ausgabe nicht ganz schlüssig. Da fehlt das Setzen. Ist dein > Code korrekt? Soweit ich mich an den C-Syntax erinnere, müsste PORTB|= (1<<PORTB3); gleichbedeutend sein mit PORTB= PORTB | (1<<PORTB3); Folglich wird Bit 3 im Register
also das Setzen des Bits, einfach wegoptimiert. Schlauer Compiler. :-)
-
Thread
Altes STK300 in Win10 32Bit
Altes 32-Bit Windows in virtueller Maschine (VMware, Virtualbox) installieren.
LPT für den Programmer weg oder für den ganzen Rechner? Evtl. auch im Bios den LPT auf Standard setzen.
-
Thread
Timer Servo ansteuerung AVR Atmega16
Bei den von mir vorgeschlagenen Einstellungen: "WGM-Mode-14-FastPWM" -> Dafür entsprechende Bits in TCCR1B und TCCR1A setzen. + "(1,0) Clear OC1A/OC1B on compare match, set OC1A/OC1B at BOTTOM, (non-inverting mode)" -> Dafür entsprechende Bits in TCCR1A setzen. legt nun der Wert im
handlicher aus: (16000000Hz / 8) / 50Hz = 40000 Na immerhin, das passt ja schon mal in ein 16Bit Register. Super Sache, wenn wir also den Prescaler auf 8 setzen und den Wert 40000 in ICR1 schreiben, (und ICR1 ist zufälligerweise ein 16Bit-Register), dann läuft die PWM konstant mit 50Hz. Bleibt
-
Thread
Probleme mit SPI- PIC18
besagter Open Close Politik stabil) Das Verhalten ist tatsächlich nur durch SPIOpen (Genau genommen setzen den EN Bit) und spi Close (Rücksetzen des enable Bits) reproduzierbar. Ich erachte das ebenfalls als Unfug meiner Ansicht nach sollte ich auch SPI Einmal aktivieren und künftig nur noch durch CS/SS
besagter Open Close Politik stabil) > Das Verhalten ist tatsächlich nur durch SPIOpen (Genau genommen setzen > den EN Bit) und spi Close (Rücksetzen des enable Bits) reproduzierbar. Dann scheint es etwas mit den Statusflags zu tun zu haben. > Ich erachte das ebenfalls als Unfug meiner Ansicht nach
-
Thread
ISR springt nicht mehr raus
Systematischer Fehler der Baudrate grösser 1% und damit zu hoch! #endif #define setbit(P,BIT) ((P) |= (1<<(BIT))) // MAKRO >> Bit setzen #define clearbit(P,BIT) ((P) &= (1<<(BIT))) // MAKRO >> Bit löschen int time = 0; int Zeitlk1,Zeitlk2; int
Zeitlk2 =3; if (Zeitlk1 == time) { setbit(PORTA,0); // Bit für LK 1 setbit(PORTC,0); // setzen hochziehen Stufe 1 _delay_ms(90000); // Zeitverzögerung in ms clearbit(PORTC,0);
-
Thread
MMC/SD Karte: mmc_lib Version 2.0
nicht auf, in der Funktion spi_send_byte(unsigned char data) bei dem Aufruf von: loop_until_bit_is_set(SPSR, SPIF); wartet er sich zu tode. Das Bit wird nie gesetzt, was koennte das bedeuten ?
...komische Sache. Ich dachte mir immer: char - 8 bit short - 16 bit long - 32 bit long long - 64 bit Naja, scheint nach der inttypes.h alles ein wenig anders zu sein, daran kann ich mich schlicht nicht gewöhnen :-)
-
Thread
Programmieren mit KI
das ganze. Die generierten Ausgaben sehen so aus: [code] PULSE_FALSE deltaTime: 110 Bit#53: 0 PULSE_FALSE deltaTime: 110 Bit#54: 0 PULSE_TRUE deltaTime: 200 Bit#55: 1 PULSE_FALSE deltaTime: 100 Bit#56: 0 PULSE_FALSE deltaTime: 100 Bit#57: 0 PULSE_TRUE
Bit#00: 0 PULSE_FALSE deltaTime: 100 Bit#01: 0 PULSE_TRUE deltaTime: 210 Bit#02: 1 PULSE_TRUE deltaTime: 210 Bit#03: 1 PULSE_FALSE deltaTime: 100 Bit#04: 0 [/code]
-
Thread
Suche Empfehlung für zukunftssicheren ATMEGA Gesperrt
aufgekauft? ;-) Vermutlich wird man sich aber nach einem "Request Quote" dann auf den Hosenboden setzen ...
AVR war gestern schrieb im Beitrag #3036566: > Nein, Atmel setzt bei 32 Bit auf ARM und nur bei 8 Bit auf AVR. Genau das stand obendrüber. Warum also "nein"?
-
Thread
Frage zu UART AVR Code
R24,0x00C0 Load direct from data space +0000004E: FF85 SBRS R24,5 Skip if bit in register set +0000004F: CFFC RJMP PC-0x0003 Relative jump [/c] [c] //UCSRnA, //Configuration + Status //UDRn // read/ write 8 Bit #include <avr/io.h> #include
Falk B. schrieb im Beitrag #7337399: > Dann probier es noch mal und setz die Breakpoints auf die > Portzuweisungen. dann kommt die Fehlermeldung, dass das Setzen nicht funktioniert. Der Breakpoint wird dann einfach nicht gesetzt und auf das delay gesetzt :D Klaus
-
Thread
Timer 0 beim Atmega8
Nimm eine globale Variable setze sie auf 10, und zähle bei jedem Interrupt 1 ab. Wenn sie 0 erreicht schaltest du das Port-Bit nicht mehr um - fertig. Jedesmal wenn du wieder erneut ein Signal senden willst setzt du im Main die
Jetzt folgt noch die Abfrage, ob diese Variable schon einen bestimmten Wert erreicht hat (weiteres Bit setzen) oder nicht (kein Bit setzen *g*) und es wird ins Hauptprogramm gesprungen. Entweder wird jetzt bei jedem Durchlauf des Hauptprogramms dieses Bit (in irgendeinem beliebigen Register; "privates
-
Thread
Normal-Mode CAN-BUS
the PLL as the source of the CAN system clock PORT_CAN_TX_PIN = 1; // CAN TX Pin auf 1 setzen, der Tranceiver funktioniert sonst nicht CAN_SetBaudRate (brp); // ECAN Module in mode 0 ECANCON = 0x00; RXB0CON = config & CAN_CONFIG_B0_BITS; RXB1CON = config & CAN_CONFIG_B1
stellt sich mir die frage was ich mit den empfangenen Daten anstellen darf/muss... müssen irgendwelche bits nach dem Empfangen manuel zurück gesetzt werden?? beim schreiben setze ich einfache alle notwendigen variablen und setze am ende das TXREQ-Bit zum senden beim auslesen, lese ich alle Daten aus
-
Thread
Witz der Woche Gesperrt
4bit * 4bit = http://www.google.com/search?q=4bit*4bit
Samuel K. schrieb im Beitrag #2319703: > http://www.google.com/search?q=4bit*4bit Nimmt so ein Quadratbyte eigentlich eher Fläche oder eher Zeit ein?
-
Thread
Xmega Programmierung in ASM
So lange man nur einzelne Bits zu setzten hat hat man vielleicht keinen Vorteil. Aber sobald man zwei Bits setzen will spart man Befehle
Also mit sbi oder cbi kann ich auch mehrere Bits mittels "|" Operator gleichzeitig setzen. z.B. sbi PORTB, Bit1 | Bit3 | Bit6
-
Thread
AVR LED Dimmen mit Logarithmus
mich schon lange nicht mehr darum gekümmert. ich wollte eine rgb-led ansteuern (3 * pwm) eine 16-bit-pwm ist mir zu langsam, da sieht man die leds "blinken", außerdem wollte ich einen tiny2313 benutzen und die haben nur 2 16-bit-pwms. (ok, plus zwei mal 8-bit-pwm) meine idee war sowas wie ein "2
frage]) drei einzelne lampen haben keinen gemeinsamen "brennpunkt" deshalb: vielleicht 10 oder 12 bit. und: die kleinen AVRs, die ich kenne haben nur 2 mal 16-bit-hardware-pwm, deshalb die "überlegung" mit den zwei "parallelen" 8-bit-hardware-pwms. oder vielleicht 8-bit-hardware-pwm und in software
-
Thread
Polin Display scheint tot
Kapiert. Wenn ich das Fuse Bit: JTAGEN setzt (=0), dann kann ich den PORTC erst verwenden. Damit ist mein ISP dann Müll, richtig? Also -> an den anderen Port. Wie setze ich die Fuse bits mit PonyProg? Weiter gibt es 4 bits: CKSEL0
0000 Ich hab ein 8MHz quarz angeschlossen (XTAL1/XTAL2) - keinen Oszillator. Welche Bits sollte ich da setzen? Damit mach' ich nix kaupt, oder? <bibber bibber>
-
Thread
LCD (4bit-mode) am PCF8574
dreh noch durch!!! die initialisierung war falsch :-( wie wird so ein vermalledeites display im 4 bit mode initialisiert?
. Richtig wäre: E 128 ; oder 1<<7 RW 64 ; oder 1<<6 RS 32 ; oder 1<<5 Zum Setzen und Löschen von Bits in einem Byte solltest Du mit den AND und OR Operatoren arbeiten und nicht mit + und -! Sonst bekommst Du ein Problem, falls die bits aus irgendwelchen Gründen vorher schon gesetzt
-
Thread
AVR128DA: fuse bits ändern
Ich wollte mein Selbstbauprogrammiergerät um die Funktionen für den AVR128DA28 erweitern, komme jetzt aber bei den Fuses nicht weiter. Im 'Preliminary Data Sheet' sind die betreffenden Passagen, wie sie z.B. für die 'megaAVR® 0-series' normal dastehen, nicht zu finden, es fehlt also im Kapitel NVMCTRL ein Absatz 'Fuse Write Command' sowie für NVMCTRL.CTRLA in der Tabelle ein Eintrag der Art "WFU Write fuse (only accessible through UPDI)". Übersehe ich da etwas und/oder weiß jemand mehr?
-
Thread
Woher Speicher im Bereich von 1 MB < x < 16 MB
Nö, den Refresh macht die selber. Man muss dabei aber aufpassen, der Refreshcounter ist da nur 7 Bit breit. Damals muste man aufpassen wenn man da 64Kbit Steine anschliessen wollte. Es gab welche mit 7 Bit und welche mit 8 Bit Refresh. Wenn man 8 Bit Refresh RAMs hatte musste man mit einem zusaetzlichen
sich auf den Speichermodulen alter Unix-Workstations. Ich sehe da z.B. 18 Stück M5M416400xxx (4Mx4Bit) auf einem 32MByte-Modul (32Mx36Bit).
-
Thread
Einfaches Radio basteln
Pollin, genauso wie Pony Prog. Ich konrollier jetzt gleich mal ob es villeicht wirklich an den fuse Bits liegt.
hallo da ist was faul. hast du davor die bits überhaupt mit read eingelesen?
-
Thread
Gibt es eine Programmiersprache mit diesem Schleifentyp?
einen Pascal-Compiler im ROM hat, und so ziemlich den schicksten aller 8-Bit-Prozessoren verwendet (6809).
#4046801: > Auch vor 30 Jahren gab es schon C-Compiler die problemlos und sauber auf > den damaligen 8 Bit Rechnern liefen. Und vor 30 Jahren gab es auch längst 32-Bit 68000 Systeme, die sich weit besser als Host für Compiler eigneten.
-
Thread
Tasterverarbeitung mit ARDUINO-C
Bits abzufragen.
// r2 = key_state ;Entprellter Tasterzustand invertiert // r3 = key_ct0 ;2-Bit Abwaertszaehler Bit0 // r4 = key_ct1 ;2-Bit Abwaertszaehler Bit1 // r5 = key_press ;Taster entprellt gedrueckt gespeichert asm volatile ( "in r1,0x0C ;PINE \n\t"
-
Thread
Wie mit FUSE-Bit atmega16 auf 16Mhz laufen lassen?
@Andreas in Deinem Fall musst du die Fuse-Bits des ATmega setzen. Aber Vorsicht, damit hat mancher seinen AVR unbrauchbar gemacht. Gruß, Thomas
@ Andreas die Fuse-Bits deines ATmega kannst Du nicht mittels eines Programms setzen. Dein Programmer stellt Dir im Normalfall diese Funktion zur Verfügung. Gruß, Thomas
-
Thread
LCD, kryptische Zeichen, Zeilenumbruch
C-Makros (http://www.mikrocontroller.net/articles/C_Makros ) ist ein Löschmakro vorhanden [C] /* Bit löschen */ #define clear_bit(var, bit) ((var) &= (unsigned)~(1 << (bit))) [/C] Damit ist hinter der den beiden betreffenden Zeilen jeweils diese Zeile einzufügen: clear_bit(PORT_LCD, LCD_RS
der Fehler liegen? Probier mal in der ERSTEN Zeile den Cursor an verschiedene Postitionen zu setzen. Das würde erstmal zeigen, dass das halbwegs funktioniert. Dann soltest du mal verschiedene Zeichen ausgeben, wo jeweils nur ein Bit gesetzt ist. Also 0x01, 0x02, 0x04, 0x08 etc. Das testet deine Verkabelung
-
Thread
2bit array[ ] ?
. Wenn du nur ein Bit setzen willst, muss trotzdem das komplette Byte aus dem Speicher geholt werden. Dann wird das Bit gesetzt und das Byte zurückgeschrieben. Dem gegenüber steht eine Zuweisung an einen normalen unsigned
kompletten Bytes völlig uninteressant ist. Im Grunde kann der Compiler auch nicht zaubern. Um ein Bit zu setzen kommt er nicht an x = x | Maske; vorbei. Nur sparst du dir halt mit Bitfeldern den Schreibaufwand. Den übernimmt dann der Compiler für dich. (*) Das hat beides damit zu tun, dass
-
Thread
Probleme Ausgänge eines Ports setzen Atmega8
Hallo zusammen, ich komme mir so langsam echt blöd vor. ich möchte eine Drehrichtungsumschaltung mittels H-Bridge realisieren eher gesagt will ich nur die vorhandene H-Bridge meines RN DualMotor mit meinem Atmega8 ansteuern. Immer wenn ich 4 Ausgänge des selben Ports verwende funktioniert das ganze nicht, wenn ich 2 von Port B und z.B. 2 von Port D benutze funktioniert es. Ich blicke da echt nicht durch. Anbei mal der code der nicht funktioniert aber die Pins benutzt die ich später gerne hätte. [c] DDRD =(1 <<PD0)|(1 <<PD1)|(1 <<PD2)|(1 <<PD3); PORTD = (1 << PD0)|(1 << PD1)|(1