-
Thread
'var' may be uninitialized
würde der Startup-Code ja auch nicht tun, um irgendwelche Gleitkommavariablen im BSS auf 0.0 zu setzen.
geinlined wird, anstatt die Lib aufzurufen. Daß int64 länger braucht, liegt daran, daß es auch 64Bit rechnen muß und nicht nur 24Bit.
-
Thread
Aufrufen von Funktion legt auch vorherigen Teil des Programms lahm
Setzen: [c]OEC |= (1<<MeinBit);[/c] Löschen [c]OEC &= ~(1<<MeinBit);[/c] Den rest las mal den Compiler machen... Für "genaue" Zeiten könnte man mitels Assemblerdirektive die benötigte Zahl von nops
Läubi .. schrieb: > Setzen: > [c]OEC |= (1<<MeinBit);[/c] > Löschen > [c]OEC &= ~(1<<MeinBit);[/c] > Den rest las mal den Compiler machen... > > Für "genaue" Zeiten könnte man mitels Assemblerdirektive die benötigte
-
Thread
Doppelbelegung an PIC 16F690
> eines PIC bei der config nötig ist, wenn ich einen externen Quarz > angeschlossen habe? > > bit 13-12 Reserved: Reserved bits. Do Not Use. steht ja da. Nicht benutzen. Schau im Datenblatt des Prozessors nach, ob Du die Bits auf 0 oder 1 setzen musst. > bit 11 FCMEN: Fail-Safe Clock Monitor
bit > 1 = Internal External Switchover mode is enabled > 0 = Internal External Switchover mode is disabled siehe Datenblatt, kannst Du auf 1 setzen > bit 9-8 BOREN<1:0>: Brown-out Reset Selection
-
Thread
Porterweiterung Atmega8 mit 74HC164
ori temp2,1 ; nein, Bit setzen cbi SCHIEBE_PORT, CLK ; Taktausgang auf 0 sbi SCHIEBE_PORT, CLK ; und wieder zurück auf 1, dabei Daten schieben dec temp3 ; Bitzähler um eins
1 setzen } else // sonst { PORTB &= ~(1<<PB3); // Ausgang auf 0 setzen } [/c] Danke für die Geduld mit mir...
-
Thread
8x8 Matrix Laufschrift
i++ ) { tmp.V16Bit = pgm_read_byte(&charMap[ZEICHEN][i]); tmp.V16Bit = V16Bit << scroll;//nach lins schieben VRAM[i] &= tmp.V8Bit[0];//die rechte Seite ausgeben } } Hilft das weiter?
bit15 des words die linke Kante deiner Ledmatrix, die dann bis bit8 den Inhalt des words darstellt. Bit7 bis bit0 wäre eine Zeile des Buchstabens. Ein word ist bei mir eine 16bit-Variable.
-
Thread
LIN-Break Signal mit TI CC2640 erzeugen
Kann mir jemand vielleicht einen Tipp geben wie das zu verstehen ist? Warum reicht es nicht, dass Bit zu setzen, 13 Bits zu warten und dann wieder umschalten? Danke und viele Grüße Maximilian
senden. > > Genau das will ich doch, versteh aber nicht ganz wie das zu > Bewerkstelligen ist. Bit setzen, mindestens 13 Bit-Times warten, Bit löschen.
-
Thread
Keine ADC-Kanal Adressierung möglich ATMEGA8
Technik der Veroderns und VerANDens ist beim AVR gang und gäbe. Du kannst so in C gezielt einzelne Bits löschen und setzen, im Prinzip das, was die Assemblerbefehle CBI und SBI bzw. SBR und CBR auch machen. Zum Löschen eines Bits nimmst du die Komplementärfunktion in C. [c] ADCSRA &= ~(1<<ADFR);
Jetzt hab ichs! Die Auswahl der Kanäle erfolgt über über das Setzen der Bits im MUX Register. und über die 4 MUX´s kann ich alle 8 (wenn vorhanden) Kanäle anwählen. Kanal 5 : (1<<MUX2) | (1<<MUX0) Jetzt kanns weiter gehen. @ Karl Heinz: Das Datenblatt
-
Thread
Alles Rund um den MEDION LIFE P89626 NAS
mipsel armoabi mipsel2 armsysv mipselbcm chk32bit nanddump chk32bit23 nandtest chk64bit nandwrite chkarmoabi openwrtmipsr2 chkarmsysv
es genügen folgendes in sysapps/u-boot-1.1.2/include/configs/ox820.h zu ergänzen. #define CFG_64BIT_LBA dann wird der SATA-Code mit 64 Bit Support kompiliert.
-
Thread
Mais-CPU veröffentlicht 32bit Softcore
Opencores hatte ich auch nicht das Gewünschte gefunden. Dann habe ich mal angefangen. Erst mit 8bit und dann mit 32bit. Würde mich freuen, wenn sich hier aus dem Forum Erfolgsmeldungen auftauchen. Bin auf Rückmeldungen schon gespannt, lasse mir zum Ersten mal richtig unter die Haube schauen.
pins 5 / 281 ( 2 % ) Total virtual pins 0 Total memory bits 135,680 / 3,981,312 ( 3 % ) Embedded Multiplier 9-bit elements 8 / 532 ( 2 % ) Total PLLs 0 / 4 ( 0 % ) FMAX (TimeQuest): 92.09 MHz
-
Thread
ADC Conversion
Funktion adc_read(); an, wo dann die Werte ausgelesen werden sollen. In dieser Schleife wird das ADSC Bit auf ein gesetzt (also conversion gestartet) und mittels einer schleife wird solange nichts getan, bis dieses Bit wieder auf 0 ist, also die conversion beendet ist. Könnte jemand mit C-Erfahrung
ich lasse den ADC im Frerun-Mode laufen, könnte das eine Fehlerquelle sein ?? Das ich dann die MUX bits anders setzen muss,z.b. auf positive oder negative differential input ?
-
Thread
Fusebits beim Attiny2313 richtig setzen
nicht vorhanden. also möchte ich den Internen aktivieren. wie muss ich die Fusebits beim PonyProg setzen? Danke
Es gibt keinen int. Quarz. Das ist ein RC-Oszillator. Die Fuse-Bits stehen im Datenblatt. Hilfe von Gaul-Prog. anschauen.
-
Thread
Bit verschieben in C
mit einer Oder Funktion weiß aber nicht ob das funktioniert. Ich weiß auch nicht wie ich einzelne Bits in einem Byte durchschieben kann. mfg
die Schiebeoperatoren verstanden da kann ich eh immer ne 1 nachschieben und nach 8 mal schieben setz ich das byte neu damit müsste die 0 immer weiter verschoben werden
-
Thread
Problem mit if Abfrage in C
[c] int x = 0; int z = 0; [/c] Du benötigst hier keine "int" (16-Bit), eine 8Bit Variable tut es auch.
Ich hatte noch eine Klammerung vergessen. So ist das Makro richtig [c] #define KEY_PRESSED( Port, Bit ) ( !((Port) & ( 1 << (Bit) )) ) [/c]
-
Thread
Menüsteuerung mit zwei Tasten (Up/Down) in Assembler
mit Schieberegister für Hoch/runter ROR R17 ; schiebe nach rechts BRNE Set_Bit_ok ; Wenn nicht 0 dann ablegen LDI R17, 0b10000000 ; Bit 7 setzen RJMP Set_Bit_Ok Chk_T2_Off: Mov R16, R1 ; noch mal abfallende Flanken laden ANDI R16,0b00001000
mit Schieberegister für Hoch/runter ROL R17 ; schiebe nach links BRNE Set_Bit_ok ; Wenn nicht 0 dann ablegen LDI R17, 0b00000001 ; Bit 0 setzen Set_Bit_Ok: STS Ausgabe, R17 ; Schiebevariable in Ausgabevariable schreiben Mov R16, R1 ANDI
-
Thread
PWM über 2 Potis
Anwendung brauchst. Schau dir die verschiedenen Möglichkeiten im Datenblatt an. Und wenn du 10Bit ADC Werte hast dein Timer aber mit 16Bit läuft kannst du die ADC Werte einfach um 6 Stellen nach links schieben oder du addierst 64 Messungen zu einem 16Bit Wert zusammen und hast da gleich eine Mittelung
der ADC's wirst du mit viel Glück 8 nutzbare Bits aus dem ADC erhalten. Die beiden Lowbits werden soviel springen das du diese glatt vergessen kannst. ==> nutzbar 8 Bit ==> 256 Bits Auflösung für beide Potis. Erhöht die Schrittweite auf 4 µs
-
Thread
Bendrich CAN-Bus-Einheit
heraus. Ich versuche die Tabelle mal zu vervollständigen, damit jeder Ausgang mal alleine zu setzen ist. In meiner Vorstellung brauche ich sechs Bits für den Zustand der Pins und sechs Bits für eine Maske, welches Bit gerade verändert (gesetzt oder gelöscht) werden soll. Was mich sehr stört, ist
06 10[/code] sende, wird A5 gesetzt und bleibt auch gesetzt, solange bis ich das dementsprechende Bit in der Maske wieder auf Null setze. Das passiert auch mit den restlichen Ausgängen, sowie man es auch von anderen Herstellern kennt [code]A1 - 04 01 02 06 01 A2 - 04 01 02 06 02 A3 - 04 01 02 06
-
Thread
STM32F4xx UART-State während des Empfangs zurücksetzen
#7755383: > Ich arbeite nicht mit HAL, sondern mit SPL/CMSIS. Sehr vernünftig. Kurz das passende Bit in RCC->APB2RSTR setzen und wieder löschen und anschließend neu konfigurieren.
zuverlässig verworfen. Vielen Dank! Mi N. schrieb im Beitrag #7755740: > Kurz das passende Bit in RCC->APB2RSTR setzen und wieder löschen und > anschließend neu konfigurieren. Das habe ich wegen dem erfolgreichen Togglen des RE-Bits nicht weiter verfolgt. Klingt auch wesentlich aufwendiger
-
Thread
Parity-Funktion in C
Kann man eine 0 setzen, wie man es mit einer 1 macht? data=data|(1<<7); // Parity - Bit an Stelle 7 setzen
Muss die Sende-Funktion, die um das PARITY - Bit erweiterte Zahl, an die Empfangs-Funktion senden oder nur das PARITY - Bit?
-
Thread
16-Bit Timer beim Atmega32
Ich bin scheinbar zu blöd das Datenblatt zu lesen. Ich möchte gerne den Timer1 des Atmega32 verwenden. Ich möchte einfach gerne ständig den TIMER1 Overflow Interrrupt ausgelöst haben, der dann LEDs blinken lassen soll. Mein Problem: Der Timer läuft, springt beim erreichen des Counter-Werts 0xFFFF auch nach 0x0000 zurück. Aber irgendwie scheint der Interrupt nicht ausgelöst zu werden. TOV1 im TIFR-Register wird auch nicht gesetzt. Ich glaube den Timer so eingestellt zu haben: - clksource: clkIO (no prescaling) (hab auch schon clkIO/64 etc. probiert) - Timer Mode of Operation: Normal
-
Thread
c´t Wordclock Brennprobleme Atmega8
folgendes gefunden. [code]Define_Fuses // Override_Fuses; NoteBook = A; COMport = USB; LockBits0 = []; FuseBits0 = [CKSEL0, CKSEL1, CKSEL3, SUT0, BODEN]; FuseBits1 = []; ProgMode = SPI; ProgFuses = true; ProgLock = false; ProgFlash = true; ProgEEprom = false; [/code] Könnt Ihr mir
Schön das er jetzt lauft, aber im Pasfile steht folgendes: LockBits0 = []; FuseBits0 = [CKSEL0, CKSEL1, CKSEL3, SUT0, BODEN]; FuseBits1 = []; Also musstest du cksel1, cksel3 und boden auch noch setzen. Ich vermüte das du immer noch nicht das externe Quarz benutzt
-
Thread
STECCY - ZX-Spectrum-Emulator mit STM32
Port-Pins, ja. Port-Expander, A/D-, D/A-Wandler etc. etc. gibt es ja alles schon für I2C. Bei zwei 8-Bit-Ports, wäre eine Erweiterung denkbar mit z. B. einem acht-aus-drei Dekoder, 74HCT138 oder so. Braucht drei Bits. Wenn man 16 Leitungen für I/O nehmen könnte? 0 - | 1 ----74HCT138 ===> 8 Bits
3 Bits für Hintergrundfarbe 1 Bit für Hell (Bold) 1 Bit für Blinkend (Flash) Die 6144 Bytes für die Pixeldaten sind leider auch nicht linear angeordnet. Zunächst kommen die Pixel für die nullte Reihe,
-
Thread
Seminarprojekt Binäruhr, passenden µC gesucht
unsigned time; int main(){ time = 0; // 0 sekunden bei start DDRA = 0xff; // Ausgänge setzen ( Alle 8 ) DDRB = 0xff; // Ausgänge setzen ( Alle 8 ) DDRC = 0x01; // Ausgänge setzen ( 1 bit ) while(true){ time %= 60*60*24; // Damit timer nicht zu gross wird unsigned char
Sekunden m = (time/60)%60, //Minuten h = (time/60/60)%24; // Stunden // Ausgänge setzen PORTA = s | ( m<<6 ); // 6 bit Sekunde + 2 bit minuten = 8bit PORTB = ( m >> 2 ) | ( h << 4 ); // 4 bit Minuten + 4 bit Stunden PORTC = ( h >> 4 ); // 1 bit Stunden } } [/code
-
Thread
Spannungsmessung mit PIC16F877A -->LCD-Anzeige
verwenden aber irgendwie komme ich damit nicht klar. Also in der FAQ steht ich muss erstmal die Bits im OPTION Register setzen, also ich hab eine Frequenz von 10MHz und möchte mit Prescaler 256 rechnen, damit komme ich auf ~38 Interrupts pro Sekunde. Aus der FAQ: [c]void t0_ini () { /
Setz folgenden Befehl nach dem InitTimer0: TMR0IE_bit = 1
-
Thread
Frequenz messen, Korrelationsfolge?
du nur die PCIF-Bits im PCIF-Register überprüfen. Wenn eins oder mehrere 1 sind, haben Pins gewackelt. Die PCIF-Bits musst du danach durch Schreiben einer *1* wieder zurücksetzen. MfG Spess
achja, und bei Pegeländerung natürlich auch auf 0 setzen :D
-
Thread
Neuer Controller, altes Programm: Fahler im Zeitkonitnuum
Kundenbindung. Nochmal was fachliches: ich habe ein Programm gefunden, das auflistet, welche Bits bezüglich der int oder ext Quarzfrage ich setzen kann. Da kommt aber meine 4MHz nicht drin vor! (AVR progtool) Warum ned?
Beitrag #1852057: > Nochmal was fachliches: ich habe ein Programm gefunden, das auflistet, > welche Bits bezüglich der int oder ext Quarzfrage ich setzen kann. Da > kommt aber meine 4MHz nicht drin vor! (AVR progtool) Warum ned? Datenblatt anschauen! Der obige Vorschlag sollte von 1 bis 16 MHz gehen
-
Thread
Software UART
dann setzen wenn als 10. Bit eine "1" anliegt??? Viele Grüße Edgar
>Zu dem Code habe ich doch eine Frage. ... >In dem obigen Code wird das Stop-Bit nicht ausgewertet (oder ich verstehe den Code nicht). Sollte man nicht [c] srx_done = 1; // mark rx data valid [/c] >erst dann setzen wenn als 10. Bit eine "1" anliegt? Nein. Das
-
Thread
Bits spiegeln / C
Du schiebst Bit 00000001 << 6 = 01000000 00000010 << 4 = 00100000 00000100 << 2 = 00010000 00001000 << 3 = 01000000 // soll da wirklich so sein? Wenn die Bits rechts falsch sind, dann musst du die Wert nach
wenn an der Art der Bitmanipulation in einem bestimmten Programmteil sich niemals was ändern wird. (Bit setzen, wo vorher schon eins war) Solange man sich noch nicht 100% sicher ist, was man tut, sollte man das '+' und die paar vielleicht eingesparten µs ganz schnell vergessen.
-
Thread
nicht verwendete pins auf 0 setzen (lattice ispLever7.2)
> wie kann ich das machen (mit dem ispLever7.2)? Du definierst einen Vektor mit genausovielen Bits, wie du freie Pins hast: spare : out std_logic_vector(10 downto 0); und weist dem einen Null-Vektor zu: spare <= (others=>'0');
>ich möchte wie oben schon erwähnt, nicht verwendete pins auf 0 setzen. Eingangs- oder Ausgangspins ? SuperWilly
-
Thread
canbus mit SN65HVD230D und FlexCan
Wenn ich richtig gezählt habe, ist eine CAN-Message mit 11bit Identifier und 8 Byte Payload 111 Bit lang (inklusive Interframe Space). Von der Übertragungsrate her solltest du also nicht in Schwierigkeiten kommen. Normalerweise gibt es doch bei CAN Sende- und
Jens E. schrieb im Beitrag #4189433: > Wenn ich richtig gezählt habe, ist eine CAN-Message mit 11bit Identifier > und 8 Byte Payload 111 Bit lang (inklusive Interframe Space). > Von der Übertragungsrate her solltest du also nicht in Schwierigkeiten > kommen. das war auch meine annahme >
-
Thread
Zwei bis drei Fehler im Programmcode
interpretiert werden. Das sollte aber mindestens eine Warnung vom Compiler geben! Der Vorschlag, das I-Bit in SREG von Hand zu setzen, ist nicht gut.
Verhalten führen kann. Deswegen: Johann L. schrieb im Beitrag #3632352: > Der Vorschlag, das I-Bit in SREG von Hand zu setzen, ist nicht gut. Dafür hat Atmel den Controllern extra 2 Befehle spendiert, die in einem Zyklus abgehandelt werden. Man sollte Anfängern nicht solche Vorschläge machen
-
Thread
74hc259 macht komische Faxen
analogWrite(_muxBluePin, blue); } void light::switchMux(int i) { _muxBit1 = bitRead(i,0); _muxBit2 = bitRead(i,1); _muxBit3 = bitRead(i,2); digitalWrite(_ledMuxPin1, _muxBit1); digitalWrite(_ledMuxPin2, _muxBit2); digitalWrite(_ledMuxPin3, _muxBit3
und LED 3 gehen aus!! why? oO switchMux() macht folgendes [c] digitalWrite(_ledMuxPin1, _muxBit1); digitalWrite(_ledMuxPin2, _muxBit2); digitalWrite(_ledMuxPin3, _muxBit3); [/c] Es wird also erst Bit 0 der Adresse geändert, dann Bit 1 und dann Bit 2. Wenn du jetzt von Adresse
-
Thread
Nochmal Frage zu logischer Verknüpfung int | Byte
DIO_setzen(int Modul, int Kanal, int Status) { int maske=0; for (int bit = 1; bit<8; bit++) { double maske_d = Math.Pow(2, bit); maske = Convert.ToInt32(maske_d
mit einem "Einheitsbyte" (so nenne ich es einfach mal) maskieren. Also Prüfen, ob das entsprechende Bit 0 ist oder 1 ist. Die Anwendung dahinter: Ich dende an ein CAN I/O-Modul ein Byte mit dem Zustand der 8 Ausgänge. Und wenn ich ein Bit setze, soll der Rest natürlich erhalten bleiben. Danke nochmal
-
Thread
STM32 CAN Reset Bug Workaround geht nicht
Dann ist er aber noch nicht im Bus-Off-Mode. Heinz M. schrieb im Beitrag #5748337: > Ist das ABOM Bit setzen so richtig?CAN->MCR |= 1<<6; Wie wärs mit CAN->MCR |= CAN_MCR_ABOM? Gleich viel besser lesbar. Heinz M. schrieb im Beitrag #5748337: > Bei Registern will ich nicht rumprobieren Dann
aufgefallen, dass ich anfangs trotz des Lesens vieles übersehen oder vergessen habe die richtigen Bits zu setzen. Zb bei den Timern das MOE Bit welches bei advanced irgendwie gesetzt werden muss, bei anderen wiederum nicht etc. Da blickt man anfangs nicht so durch und es fehlt einem einfach an Erfahrung
-
Thread
Drehregler an uC - geht das?
es ist spät in der Nacht, also ADC-Bits sollte ADC-Ports heißen und ADC0 - ADC7 Poins sollte eigentlich ADC0 - ADC7 Pins heißen - sorry.
das nun schon oft gesehen habe. Kann mir das bitte mal einer erklären. PINC ist der Inhalt des 8Bit Registers, das den Zustand von PORTC anzeigt. Diese 8 Bit werden mit (1<<PINC0) logisch bitweise verundet. aber was stell der Ausdruck (1<<PINC0 dar)?
-
Thread
Was kann man mit 16Byte an RAM machen?
normaler geistiger Beweglichkeit schnell drauf, viel entscheidender ist das Wissen darüber, welche Bits man in welchem Control-Register setzen muss, damit serielles Senden oder eine ADC-Messung so läuft wie sich das der Programmierer vorstellt - und das ist bei Assembler oder C genau dasselbe Problem.
funktioniert nur, wenn die Spannung am µC >= die vom I2C-Device ist. > in dem ich die entsprechenden > Bits im TRIS-Register setze. Wenn ich einen Pin low schalten möchte, > muss ich das gesamte TRIS-Register neu schreiben. Damit würde ich > automatisch auch den Zustand des 2. Pins überschreiben, d.h.
-
Thread
Wo gibts USB 3.0 ICs? Gesperrt
den Slave FIFO Modus nutzen. Aber anscheinend geht der FIFO Modus (bisher?) nicht mit 32 Bit Busbreite. Wenn das wirklich auf 16 Bit limitiert ist, sinkt die maximale Übertragungsrate auf gerade mal 120 bis 140MB/s. Denn mit 100MHz kann man den kaum fahren, das Timing ist wieder mal grandios
rausholen. Die 320MB/s ist der theoretische Wert am GPIF II, der schafft ja nichtmal die 100MHz im 32 Bit Modus.
-
Thread
Analogmessung mehrerer Kanäle hinterteinander, überall gl. Werte?
) ; // interne Spannung nutzen ADCSRA = (1<<ADPS2) | (1<<ADPS0); // Frequenzvorteiler: setzen auf 32 (4 MHz / 32 = 125 kHz) und ADC aktivieren ADCSRA |= (1<<ADEN); // ADC aktivieren ADCSRA |= (1<<ADSC); // eine ADC-Wandlung und danach wird das Bit wieder
1<<ADEN) ^ (1<<ADSC); // nach Aktivieren des ADC wird ein "Dummy-Readout" gemacht loop_until_bit_is_not_set(ADCSRA, ADSC); (void)ADCW; // Free Running mode setzen // ist natürlich == 0, aber so sieht man es besser. ADCSRB = (0<<ADTS2) ^ (0<<ADTS1) ^ (0<<ADTS0); // Starte erste Wandlung
-
Thread
(STM32) Register Lib mit define oder nicht define..
nicht erinnern... edit: ich weiss es wieder: ich mache in meinem Code gerne kenntlich, dass ich ein Bit *nicht* setze: [c] TCCR1C = (0 << FOC1A) | (0 << FOC1B); // normal operation [/c] oder [c] TCCR1B = (0 << CS12) | (0 << CS11) | (1 << CS10); // No Prescaler [/c] vor allem wenn ich schnell
#5298783: > edit: ich weiss es wieder: ich mache in meinem Code gerne kenntlich, > dass ich ein Bit nicht setze: Dafür definiert man sich eine entsprechende Bitmaske, die den Mosus beschreibt, in dem Fall z.B. Prescaling, und die einfach 0 enthält. Etwa so: #define BLA_PRESCALING_NONE 0 Das
-
Thread
OLED Sammelbestellung
Nur zur Info: Das Display kann auch SPI, RGB, und 18/16/9/8 Bit parralell.
setze passiert jedoch leider gar nichts und das OLED bleibt an.
-
Thread
Vorschlag zu Hex-Ziffern auf 7-Segment-Anzeigen
Oder B348. Sofern überhaupt ein Hardware-Decoder verwendet wird. Der Vorteil nur 2 (statt 3, für 8 Bit) bzw. nur 4 (statt 5, für 16 Bit) Digits zu brauchen, bleibt unabhängig von der Ansteuerung der Displays ja bestehen.
Jens M. schrieb im Beitrag #6068804: > Reicht für Texte, Diagramme, sogar Skalen. 1024 bit bei 6 bit ASCII -- da passt eine komplette Twitternachricht von Donald T aus W rein.
-
Thread
STM32G474, SPI2 läßt sich nicht einschalten
Jogibär PS: Bin auch kein Fan von HAL Ist ein ODER nicht richtig? Du willst doch zusätzlich ein Bit setzen? 0x40 ist schon Bit Nr. 6
mit SET_BIT(pSpi->CR1, (1 << SPI_CR1_SPE_Pos)); tatsächlich setzen!!! Wenn ich dagegen erst das CR2-Register beschreibe und dann die Konfiguration von CR1 und das Einschalten des SPI-Devices mittels einer
-
Thread
Byte aus Bits zusammenbasteln
Kann man ein Byte aus einzelnen Bits zusammenbasteln? also z.B. PB1,PB2,PC1,PC3,PD0,PD1,PD3,PD4 = MyPorts, so dass ich dann mittels einer einzigen Zuweisung, z.B. Myports = char_irgendwas; den Inhalt eines Bytes den Ports zuweisen
einen Zeiger auf die Union machen, den dann auf PORTx umbiegen und dann direkt die Pins am Port setzen. Ist halt 'etwas' langsamer, da jedesmal ein zeiger ausgelesen werden muss. lg Peter
-
Thread
SPI Master Dataübertragung über MISO avr-mc(Atmega2560-Atega328u)
SS als Ausgang > definiert, dass bei Datenübertragung SS auf LOW und danach wieder auf > HIGH setzen. PORTL|=(1<<PORTL3); habe ich auch in meiner Code nach der > SPI-Funktion. Sorry, übersehen. Aber du kannst trotzdem beim Master MSTR bit in SPCR checken. Ansonsten wirklich vorerst so langsam
(1 << CPHA)); SPSR &= ~(1 << SPI2X); // SPI2X = 0 PORTB |= (1 << PORTB0); // SS auf HIGH setzen } void READ_Data_NANO(uint8_t DW) { SPDR = DW; // auf MOSI-Leitung erstes Byte zu MCP3204 senden (start Bit,D2-Bit gesendet) while (!(SPSR & (1 << SPIF))); // warten bis Übertragung
-
Thread
ATmega163 Protection-Bits löschen
NACHTRAG: Naja diese Lock Bits haben ja auch denn Sinn, eben den Inhalt des Chips vor Nachahmern zu schützen. und wenn man die einfach wieder wegklicken könnte, dann könnt ja jeder wieder lesen. Die Lock-Bits werden wie gesagt nur
Im seriellen Modus kann man das "Serial disable" bit doch gar net ändern?! Bei dem Reset disable weiss ich net wies ist, hatte noch kein Mega bei dem man das setzen/löschen konnte.... aber wär ja wiedersinnig wenn man softwaremäßig nen Chip "fetzen" könnte
-
Thread
signed 16bit * usigned 16 bit = signed 32 bit Multiplikation??
du solltest eine signed 24 oder 32 bit multiplikation vornehmen, da der unsigned 16 bit (16 bit value) den wertebereich des signed 16 bit (15 bit value) übersteigen kann.
>> ; u16bit * s16bit multiplikation >> ; r19:r18 * r21:r20 = r11:r10:r9:r8 >> clr r10 >> clr r11 >> >> mul r20,r18 >> mov r8 , r0 >> mov r9 , r1
-
Thread
ISP Programmieradapter
Hi Tobi... Bitte nicht lachen, aber wo kann man den einzelne bits setzen? Nehmen wir an, man kann ein Bit namens "0" setzen. Wenn Bit 0 nicht gesetzt, dann inc R18 Wenn Bit 0 gesetzt, dann dec R18 Wenn R18 = 00 dann lösche Bit 0 Wenn R18 = 1F dann setzt Bit 0 Ich hoffe, du verstehst mich, was ich meine. Welche einzelnen Bits kann man da setzten? Oder muß man dazu eines der 32 Register nehmen? Gruß Avusgalaxy
-
Thread
pwm formel 16 bit timer verständnisproblem
Ich habe eine Frage bezüglich der Formel für eine korrekte PWM Einstellung beim AT162. Mit dem 16 Bit Timer3 - PWM Modus 14 -fast PWM ~>Ziel: Mein TOP herausfinden -> Formel lösen: ----------------------------------------------- Frequenz_des_PWMs = (Prozessorfrequenz) / (PRESCALER * (1+TOP))
~>Meine Berechnung für TOP *Wenn ich eine Frequenz von 500 Hz als PWM haben möchte, dann setze 500 Hz in meine Formel ein. *Mein Prozessor ist 8 MHz schnell. Setze ich auch ein. *Mein Prescaler soll 8 sein. Setze ich auch ein --> 500 Hz = (8MHz) / (8 * (1+TOP)) +++++++++++++
-
Thread
notwendige ADC Auflösung bei bekanntem Rauschen
Steffen schrieb im Beitrag #4959958: > ich am Ende ggf. den 16bit Wandler einsetze oder ein paar Euro spare und > auf zB 14bit gehe. Nimm 16.
Das ist doch keine Diskussionsgrundlage. Es ist ja in Stückzahl nicht unwahrscheinlich, dass man 14bit Wandler sehr sehr viel günstiger bekommt als 16bit (ggf. einfach weil die 14bit schon in großer Stückzahl gekauft werden, die 16bit aber nicht). Dann braucht es schon mehr als ein Bauchgefühl um zu
-
Thread
PIC Configuration Bits
Initializer kannst du vergessen, lösch ihn aus deinem Gedächtnis. es gibt zwei Möglichkeiten Config bits zu setzen. 1. Direktiven im Code 2. Über das Fenster in MPLAB. wenn direktiven im Code stehen überschreiben die beim compilieren die einstellungen des Fensters. Also nicht kombinieren.
Fensters. > Also nicht kombinieren. > entweder 1. oder 2. Genau! Meine Vorgehensweise: Config-Bits generell im Code setzten und evtl. im 'Config Bit Window' kontrollieren - aber nicht ändern! - ob die Bits so sind, wie gedacht. Speziell das Code-Protection-Bit bei den 'windowed devices' sollte man
-
Thread
LCD alternativ anschließen
= temp1; LCD_PORT &= ~(1 << LCD_RS); // Register Select auf "Transfering Instruction Data" setzen temp1 = (temp1 >> 4) & 0x0F; // Oberes Nibble holen + Maskieren LCD_PORT = (LCD_PORT & 0xF0) | swap_nibble(temp1); // Daten Bits setzen LCD_enable(); temp2 = temp2 & 0x0F; // unteres
& 0xF0) | swap_nibble(temp2); // Daten Bits setzen LCD_enable(); _delay_us(42); } [/c]