-
Thread
Mit Microcontroller eine Linearisierungskurve erstellen und für Berechnungen verwenden
glaube ich nicht, du musst halt nur etwas mit der Festpunktarithmetik spielen, aber 16 oder sogar 32 Bit Variabeln wirst du brauchen. MfG
Multiplizieren. Aber da die Werte sehr weit auseinander liegen werden, wirst du Zahlen Modelle wie 8 bit vor dem Komma und 24 bit nach dem Komma, dh, 8,45678 stellt sich dann so da, in den Hochsten 8 bit steht die 8, in den 24 Bit steht 45678, das hat aber zu Folge das du dir Funktionen für die Multiplikation
-
Thread
Unterbrechen eines Befehls durch ISR
Befehls durch eine ISR abläuft. Wenn ich folgenden Befehle benutze um den Pin2 des Ports B zu setzen: (I) PORTB |= _BV(PB2); // 2 Takte Und ich habe eine ISR die am gleichen Port B aber einen anderen Pin (z.B.: PB3) setzen möchte, dann kann es doch passieren, das der Befehl (I) durch ein Befehl
Dochdoch, das ist auch eine AVR-Spezialität, Bit-Setzen im PIN-Register toggelt das entsprechende Ausgangspin Ahoi, Martin
-
Thread
Fragen zu meinem Batterietester
DDRC = (1<<PD1) | (1<<PD2) |(1<<PD3); // Kanal waehlen kein bit = kanal ADC0, (1<<MUX1) = ADC1 usw... ADMUX = (1<<REFS1)|(1<<ADLAR); // Refs0 u. Refs1 Referenzspannung // ADLAR bits linksbündig setzen // AVCC with external
+---+---+---+ 9 8 7 6 5 4 3 2 1 0 Ist keine 10-bit Genauigkeit gefragt, kann diese Zuordnung aber auch geändert werden: Durch Setzen des ADLAR Bits im ADMUX Register wird die Ausgabe geändert zu: ADCH
-
Thread
Timer0 soll alle 460,33 ms ein Interrupt auslösen
Du kannst aber TMR0 setzen, sodass er weniger lange bis zum Overflow braucht. Und das machst du jedes Mal wenn der Interrupt ausgelöst wird. Somit lässt du ihn nur von (65535-x) bis 65535 laufen.
460,33ms ein Interrupt ausgelöst werden. Die "besseren PICs" z.B.18F2450 haben 2 TMR0-Modes: · 8Bit bzw. 16Bit umschaltbar im Register T0CON. · Interrupt wird ausgelöst durch TMR0-overflow · Der Prescaler ist auf max. 256 beschränkt. Damit wäre das Problem so zu lösen: fosc/4 = 48.000.000Hz
-
Thread
IC2 mit PCF8577
habe bisher nur c-ähnlich Sprache programmiert und kann mit dem Code nichts anfangen. Das erste Bit R/W muss ja 0 sein um zu schreiben. Das 2. Ist das Display das ich ansteuern möchte (also BANK 0, das erste Display). Dann kommt der Segment Byte Vector, aber ich verstehe nicht warum das 6bits sind
Hallo Samuel, schau' Dir mal Fig. 3 an. Dort wird der Aufbau des Control-Bytes genau erklärt. die Bits 3..5 stellen die den Teil I2C Adresse dar, die normalerweise in den Bits 1..3 des Startbytes steckt. Für den 8577 ist allerdings eine 7 Bittige Adresse fix vom Hersteller vorgegeben. um denoch mehrere
-
Thread
AVR Studio und UART interrupt; wie?
das UDR leer ist - also bereit neue Daten zu empfangen, die abgeschickt werden sollen, wird dieses Bit automatisch gesetzt. Die Abfrage stammt aus dem Tutorial hier auf der Seite und bewirkt, dass solange gewartet wird bis das UDRE bit gesetzt ist, also bis man neue Daten losschicken kann, indem man
Wenn Du das UDR schreibst, werden die 8 Bits aus UDR der Reihe nach mit der eingestellten Baudrate (9600 Baud, also 9600 Bit/s) ausgegeben. Da der µC pro Sekunde 16000000 Taktzyklen hinlegt, macht er während der Übertragung (16000000 / 9600) *
-
Thread
ATmega64 vergist seine Signature-Bytes
wieder auf 255 setzen).
@Benedikt: Da Du die Bits nur auf Null setzen kannst, sieht es für mich ehr nach Flash-Speicher aus. Beim AT90S1200 ist nur eine Befehl notwendig, um Flashspeicher zu schrieben (Write Program Memory). Bei den Megas sind dafür
-
Thread
frage zu defines TRUE/FALSE
Dann irgendwann kam der Wunsch nach Boolean im Sinne von Bits auf, um Speicher zu sparen. Und heute scheißt man drauf, ob man ein Bit oder ganze 64 bits für eine ja/nein Aussage belegt, sofern das nicht viele Millionen mal in einer Anwendung vorkommt.
das auch allgemeiner, nicht spezifisch für C. In Java ist ein boolean 8 Bit, kann aber wegen dem Alignment effektiv bis zu 64 Bit belegen.
-
Thread
Pollin LCD Displays
Und noch ein Hinweis : Oben schreibst Du, dass Du das Display im 4-Bit-Modus betreibst. Da liegt die Fehlermöglichkeit der Nibblevertauschung nahe. Eh klar : Zuerst das High-Nibble, dann das Low-Nibble. Zwischen zwei 4-Bit-Zugriffen muss typisch ein Delay von mindestens
seit dem mach ichs IMMER, wenn ich 4 bit mode nutze. ansonsten evtl. mal größeres delay (nachdem du dem display gesagt hast das es auf 4 bit spielen soll)
-
Thread
~1€ ARM-Cortex-M0 (STM32)-Bord selbstgestrickt
viele Firmen auf ARM-based µCs wechseln. Laut unseren FAEs zeichnet sich der Trend ab, dass 16-Bit-µCs aussterben und 8-Bit-µCs in Nischenanwendungen gedrückt werden. Und auch nur das, wenn der Preis günstiger ist, als der günstigste Cortex-M0 (was schwer wird!). Die ARM-based µCs überrollen
Library. Niemand wird gezwungen dieses Ungetüm zu nutzen. Der µC lässt sich auch klassisch mit dem Setzen von Bits in Registern steuern: [c] //enable green LED PG13 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN; //enable GPIOG clock GPIOG->MODER |= GPIO_MODER_MODER13_0; //output mode //push-pull //low speed
-
Thread
4GB und 32 Bit.
Microsoft beschränkt für 32 Bit Prozesse den virtuellen Adressraum auf 2 GB. Dieses Verhalten kann mit setzen eines Flags im PE Header ausgeschaltet werden, so dass man auch als 32 Bit Prozess einen vollen virtuellen Adressraum von
MB für das Memory Mapping des PCI Busses ausgespart werden. Aber ja, der switch muss bei einem 32 Bit OS mit gesetzt sein, bei einem 64 Bit OS geht dies natürlich ohne.
-
Thread
ATMega Flash wird langsam knapp. Upgrade o. Plattformwechsel?
Zeilen gehen. Ich hätte aber aber anders, gemacht, damit wird es kompakter. Kodiere die Befehle mit 16 Bit und nutze die oberen Bits zur Unterscheidung von Befehl und Daten. Das verschwendet zwar 7 Bit, macht das in Summe aber wieder wett (ein Maschinenbefehlt hat beim AVR auch 16 Bit). Siehe Anhang, ist
in den externen EEPROM schreiben also auch das erste byte auf einen anderen wert setzen
-
Thread
Ersatz einer Diskette im Diskettenlaufwerk??
bräuchte man 160 Speicherabbilder einer Diskettenspur (2 Seiten à 80 Spuren), die je nach Format mit 500 kBit/sec oder 250 kBit/sec beschrieben und ausgelesen werden können müssen und Platz für 1/50 oder 1/60 der Sekundenkapazität aufweisen (es gibt Diskettenlaufwerke mit 300 und welche mit 360 Umdrehungen/
ist. Die FDCs generieren es trotzdem noch, und man muss die entsprechenden Timings daher auch setzen. > Dass auf eine Floppy bitweise zugegriffen wird, habe ich noch nicht > erlebt. Der Controller kennt auf der Floppyseite nur Bits. Sektoren macht er erst selbst da draus, und beim Überschreiben
-
Thread
Merkwürdiges Array mit 32-Bit GCC (Linux)
gemacht..." - und das ist zumindest missverständlich, denn executables entstehen durch das das setzen des X-Bits ... und sind keine Aufgaben des `Compilers oder Linkers
#6040432: > und das ist zumindest missverständlich, denn executables entstehen durch > das das setzen des X-Bits ... Das gibt nur das Recht zur Ausführung. Kann ich einem Bild (jpg) auch geben, bringt aber nichts. > ... und sind keine Aufgaben des `Compilers > oder Linkers Die machen die
-
Thread
C -> Port Bitset
MaWin schrieb im Beitrag #6060070: > #define LED_GREEN_ON { DDRB |= BIT_2; PORTB |= BIT_2; } Was ist denn das für ein Blödsinn: jedesmal, wenn man die LED einschalten will auch das DDR zu setzen.
schrieb im Beitrag #6060196: > MaWin schrieb im Beitrag #6060070: >> #define LED_GREEN_ON { DDRB |= BIT_2; PORTB |= BIT_2; } > > Was ist denn das für ein Blödsinn: jedesmal, wenn man die LED > einschalten will auch das DDR zu setzen. Ist halt so Arduino Style. Wobei da dann noch 29 andere Dinge
-
Thread
STM32G484 USB CDC Code läuft nur wenn mit <= -O1 kompiliert
merge the stores — and at `-O2`/`-O3` it does exactly that, fusing adjacent halfword writes into 32-bit stores. But the USB packet memory **only supports 16-bit accesses**. The 32-bit writes do not land as two consecutive halfwords, so the buffer descriptor table at `0x40006190` gets corrupted (
0x40006000` packet-memory region (BTABLE and buffer data): each access must be `volatile` **and** 16-bit wide. This peripheral's packet memory does not support 32/64-bit transfers.
-
Thread
Lagerverwaltung Part-DB V0.2.2
trudelt hier ne menge Post ein, der Part-DB betreffend mag sich jemand mit mir per Mail in Verbindung setzen. Danke
Hm bei mir bleibt beim SVN Update die Part-DB nach dem Dateirechte setzen hängen. http://www.partdb.grautier.com/svn/ Die RC1 bin ich grade noch am uploaden, sollte heute Abend auch wieder Funktionieren. Zum Dateirechte setzen oben steht da ja was zu, ich würde
-
Thread
Atmega8 Tmr1 Clear OC1B on Comp Match - Wie setzt man OC1B?
Birne schrieb im Beitrag #2864670: > Mein Problem ist, dass ich es nicht schaffe, den Pin OC1B zu setzen COM-Bits auf "Set on Comapre Match" setzen, und dann ein "Force Compare Match" machen.
#2864873: > TCCR1A |= (1<<FOC1B); //force compare match (to set pin high) Durch das manuelle Setzen des Ausgangs verliert man natürlich wieder den Vorteil des zyklusgenauen Setzens. Die Pulslänge hat also einen Jitter. Ich benutze daher die Force-Bits nicht, sondern triggere mit entsprechendem
-
Thread
Timer-Interrupt und Delay
setzen 2. Aufruf ;nach 8,33µs Bit1 am Port setzen 3. Aufruf ;nach 16,67µs Bit0 am Port rücksetzen Bit1 am Port rücksetzen 4. Aufruf ;nach 25µs Bit0 am Port setzen 5. Aufruf ;nach 33.33µs Bit1 am Port setzen 6. Aufruf ;nach 41,67µs Bit0 am Port rücksetzen Bit1 am Port rücksetzen ... Ich hoffe es ersichtlich, das sich hier 40kHz ergeben. Nun aber zu meinem Problem. Zwischen jedem 3er Block muss
-
Thread
Problme mil LCD Routine
Hallo Versuch mal die oberen 4-Bit zu senden, während das Enable-Bit gesetzt ist. Zwischen denen schaltest du das Enable-Bit kurz aus, dann wieder ein. Dann sendest du die 4-Bit, dann schaltest du das Enable-Bit aus und machst dein delay
erkennt er dann die negative Flanke besser. Dies würde dann aber auch nicht erklären, warum nur 1 Bit falsch ist. Aber versuchen kannst du's ja. Habe sonst auch keine andere Idee. An deinem Beispiel erklärt: chr=0x61; LCD_RS=1; *hier Enable auf 1 setzen* LCD_D7=(chr>>7)&0x01;
-
Thread
USB AVR ISP
Atmega8" benutze? Mhm, sollte nicht liegt warscheinlich daran das du vergessen das BOOTRST Fuse zu setzen.
war schon die Lösung des Problems das es nicht mehr in den Bootloadermodus zurück ging, mit BOOTRST bit setzen dann sofort geklappt - hätte ich ja auch auf der USP-ISP-Site gefunden, mein Fehler". Zu dem Vista64bit Problem das hab ich auch, aber mit so ziemlich jedem USB Programmer den ich im Intrernet
-
Thread
AVR - IDE Festplatte liefert immer Fehler beim lesen
die entsprechende Routine aus wdc_drv_pata.c zusammenzufassen: - AVR-Port auf Output stellen - Setzen PATA_RW_SECTOR_COUNT_REGISTER Datentransfer: Anzahl zu lesende Blöcke - Setzen PATA_RW_SECTOR_NUMBER_REGISTER Datentransfer: niedrigen 8 bit der niedrigen 16 bit des zu lesenden Blocks - Setzen PATA_RW_CYLINDER_LOW_REGISTER Datentransfer: hohen 8 bit der niedrigen 16 bit des zu lesenden Blocks - Setzen PATA_RW_CYLINDER_HIGH_REGISTER Datentransfer: niedrigen 8 bit der hohen 16 bit des zu lesenden Blocks - Setzen PATA_RW_DEVICE_HEAD_REGISTER Datentransfer
-
Thread
Programmierung
Einen Eingang kann man nicht setzen. Man kann in einlesen. Einen "Ausgang" kann man setzen. der_ich
Eingangssignales. Hab ich aber schon geschrieben, Stichwort "Flankenbildung". Zu dieser Flanke setzt du dir ein Bit. Und nur, wenn diese Flanke erkannt wird, setzt du das Bit ! Das ist entsscheidend. Nun schaust du in deinem Programm, ob dieses Bit gesetzt ist und wenn, dann merkst du dir den Wert des Potis. Dann
-
Thread
lauflich bzw. schieberegister mit dem 4013
hallo, ich möchte mit dem 4013 ein schieberegister machen. es soll 4 kanal (bit) haben und mit jedem takt ein bit weiter rutschen. wenn es am ende ist dann wieder von vorne anfangen also wie ein lauflicht desen takt ich bestimme. dazu soll es aber auch einzeln angesteuert werden
Leonardo, warum setzt du denn auch das Flip-Flop zurück, das du eigentlich setzen willst?? Kai Klaas
-
Thread
Welcher µC für meinen Zweck?
anschaut wird klar: Hier gehen mindestens 10 der 24 Bit im Rauschen unter. Und für die Anwendung hätte auch der 10 bit AD-Wandler des Atmega328 völlig genügt.
24-Bit waren nur Bonus. Wenn man aber 24-Bit Auflösung tatsächlich braucht z.B. bei einem Prozessofen mit PT1000 und 0.01K Auflösung und +/-0.05K Genauigkeit, dann nimmt man zur Regelung eben einen 32-Bit
-
Thread
Cortex M freie Bibliotheken, API?
Für den Anfang reicht doch ein 8 bit Controller vollkommen aus und wenn die Leistung nicht mehr ausreichen würde, kann man immer noch auf 32 bit umsteigen.
Wie schon geschrieben, dafür ist CMSIS für die Cortexe da. Damit kann man z.B. einen Ausgang so setzen: [c] // Set port for LED to output GPIOSetDir( LED_PORT, LED_BIT, 1 ); // LED is on for 1st half-second if ( bla ) { GPIOSetValue( LED_PORT, LED_BIT, LED_OFF ); } // LED is off for 2nd
-
Thread
zwei Versionen Eine geht, die andere nicht AT91SAM7S256
Also so wie ich das sehe, schiebt die Compiler-Version das zu prüfende Bit an bit31. Das sollte doch eigentlich das Bit für positiv- / negativ Zahlen sein, oder? Wieso zieht aber dann BMI nicht?
Doch. Aber ich setze vorher das Sign-Bit. Du nicht. Tip: Die CMP-Befehle sind die einzigen ALU-Befehle, die immer die Statusbits setzen. Bei den übrigen ALU-Befehlen muss man das extra sagen.
-
Thread
Buch für C-Einstieg
. Kann mir einer bitte sagen, was mir das bringen soll, wenn ich vorerst bzw. weiterhin bei AVR 8-Bit bleiben will? Die Frage ist ernst gemeint. Als Frage, nicht als Provokation. Gruß, Norbert
Arduinos verwenden u.a. 8-Bit-AVRs, und auch wenn viele naserümpfend darauf hinabblicken - darin steckt C++, und es ist damit wirklich /sehr weit/ verbreitet.
-
Thread
Signal initialisieren
Zukunft öfter Thema sein wird. Wie mache ich das: ein Signal mit Nullen initialisieren und nur ein bit setzen? Gingen auch 2 Bit?
das geht dann "natürlich" trotzdem nicht.... > ein Signal mit Nullen initialisieren und nur ein bit setzen? Probier mal das hier: ... := ((NO_COLUMNS-1)=>'1',others=>'0'); > Gingen auch 2 Bit? Ja. Probiers aus... ;-) Als letzte Zuweisung muß das nur ... ,others=>'0'); kommen
-
Thread
UART Konfigurieren
< UCSZ1) | (1 << UCSZ2) ist laut Datenblatt Reserved. Für einen Character Size von vermutlich 8 Bit müßtest du doch eigentlich (1 << UCSZ1) | (1 << UCSZ0) setzen ?
> Für einen Character Size von vermutlich 8 Bit müßtest du doch eigentlich > (1 << UCSZ1) | (1 << UCSZ0) setzen ? Auch wahr. Aber am besten, das UCSRC gar nicht setzen, der Initial Value passt doch schon. > Und ausserdem gibt es kein UCSZ2
-
Thread
simm DRAMs parallel
Die beiden sind 1M x 4bit, das andere 1M x 1bit. Macht also 1MByte + 1MBit. Es ist also der typische 1MByte Riegel mit Parity.
anlöten, sondern erst einmal den µC in eine gute Ausgangsposition (Portrichtungen einstellen / Fuse-Bits setzen) bringen. Gibt es eigentlich Zustände bei den SIMM-Modulen, die nicht geschaltet werden dürfen, weil davon das Modul Schaden nehmen könnte? Worauf muss ich jetzt noch besonders achten?
-
Thread
Auf der Suche nach Ordnung =)
spielen"-flags entsprechend zum Timecode zu setzen. Dazu brauchst du eigentlich in der Firmware auch nichts sortieren. Lege einfach zwei arrays an. Eines mit einem 32-bit Wert für den Timecode, und ein 8-dimensionales für die Tonhöhen, die zu diesem
. jeweils zu Unterschiedlichen Zeiten. Sind im Falle von 32Bit + 8Dimensioal 8Bit * 3 Tonänderungen * 8 Kanäle. 96Bit pro Tonwechsel. Oder ich hab 32bit + 8Bit * 3Tonänderungen * 8 Kanäle, komme dann aber aufs Problem, den 32bitWert mehrmals speichern zu
-
Thread
Verteilung von X Einheiten in 100 Einheiten(PWM)
Bin mir nicht sicher. Aber ich denke 'Bit Angle Modulation' wäre was für dich.
Ausäange ein oder ausschaltet. Vorsicht: In dem Fall ist der Ausgang low-aktiv. cbi - löschen des Bits, sbi - setzen des Bits. ZeroCrossingCounter - uint8_t, ist der Taktzähler. Der rest dürfte am Namen erkennbar sein. [c] ISR(INT1_vect) { if (((int)StepWidthIncrement*StepWidth) == ZeroCrossingCounter
-
Thread
PIC oder AVR, was ist besser
kein Gegenargument ein wo die Vorteile davon liegen könnten: Diese dämliche Eigenschaft der FuseBits beim AVR! Man kann sich beim AVR selbst aussperren, so das man über ISP nicht mehr in den IC reinkommt. Dies kann passieren wenn man einen Fehler beim setzen der FuseBits macht oder aber auch einfach
meist, manchmal muss man aber trotzdem den µC aus der Schaltung ausbauen und in einen eigenen Sockel setzen. Sehr toll bei SMD oder ungesockelten µC! Bei PICs kann dir das niemals passieren. Eine andere, aber hier nicht wirklkich tragische, Falle ist dann noch das JTAG Bit - denke aber das man hier mit
-
Thread
RFM12 Statusabfrage
von einem Mega8. für das Status abfragen einen Software SPI (oder kann man 2x auslesen für die 16Bit?) Kann mir jemand bitte einen Tipp geben? Danke!
meine neue an. Es ist natürlich wie Ziegenpeter schreibt: 1. 0x00 senden 2. SPDR einlesen (Bit15-Bit8 vom Status) 3. 0x00 senden 4. SPDR einlesen (Bit7-Bit0 vom Status)
-
Thread
Pin in abhängigkeit einer variablen ein/aus-schalten
der > Variable benutzen kann? Man kann den Code hinter einem Makro verbergen: [c] #define writeBit(port,bit,value) { if ((value)>0) (port) |= (1<<bit); else (port) &= ~(1<<bit); } writeBit(DDRD,3,ledOn) [/c] Aber wirklich eleganter ist das auch nicht. Ich habe früher zu viele solcher Makros
produziert in der Regel genau den gleichen Maschinencode, ist also nicht ineffizient: [c] void setze_status_led(bool ein) { if(ein) { DDRD |= (1 << PIND3); } else { DDRD &= ~(1 << PIND3); } } setze_status_led(ledOn); [/c] Wobei man auch aufpassen
-
Thread
Echo UART-Schnittstelle
Julian S. schrieb im Beitrag #4775472: > Ich weiß allesdings nicht wieso ich dieses > Bit zu Beginn setzen muss. Dieses Bit ist Read-Only. Das kannst du gar nicht setzen. > Dies wird auch nicht beim Beispiel im Datenblatt gemacht. Wozu auch. S.o. > Habe zufällig diese Zeile im Internet
mit dem entsprechen Wert direkt beschrieben habe. Ohne Erfolg. Das ich durch die letzte Zeile das Bit U2X0 auf Null setze stimmt, trotzdem finde ich es komisch, da dieses ohnehin mit dem Wert 0 initialisiert wird. Das ich das UDRE0 gar nicht beschrieben kann, habe ich übersehen. Da habe ich einen
-
Thread
1wire BUS Sniffer Tester AVR ATmega8 Assembler
;wird für Simulator gebraucht, um ggf. CY umzudrehen brcc ow_INBIT_NULL SBR rFlag,(1<<fIN_BIT) ;setze gefundenes IN-Bit in Flag-Register ow_INBIT_NULL: rcall ow_Read_Bit ;** hier NICHT-Bit nop ;wird für Simulator gebraucht, um ggf. CY umzudrehen nop ;wird für Simulator gebraucht, um ggf. CY umzudrehen brcc ow_NOTINBIT_NULL SBR rFlag,(1<<fNOT_IN_BIT) ;setze gefundenes NOT-IN-Bit in Flag-Register ;Hier sind 1 oder 2 Bit gesetzt SBRC rFlag,fIN_BIT rjmp ow_Search_noSlave ;hier sind beide Flags gesetzt, somit kein Slave gefunden, Error ow_NOTINBIT_NULL
-
Thread
Probleme mit einem Programm In C für PIC 12F629
watschdog (); // Aufruf vom Wachdog um ihn zurück zu setzen while (TMR0); ms--; } } //********Unterbrogramm Zeitschleife Sekunde***** void pause(bit licht_1,bit licht_2,bit licht_3,bit licht
Sekunde***** void pause(bit licht_1,bit licht_2,bit licht_3,bit licht_4,bit licht_5 ) { Led_1 = licht_1; // Led_1 wird eingeschaltet und ist solange ein bis zur nächsten Schleife Led_2 = licht_2;
-
Thread
Soft-PWM nie völlig High
drin. An der Hardware liegt es nicht. Das manuelle Setzen auf High- oder Low-Pegel klappt und auch eine einfachere Software PWM funktioniert ohne diesen Fehler. Da ich zum einen diese Software auf 16 Kanäle und 10 Bit erweitern wollte, bin ich schon auf eine
halten kann kriegt man den Treiber nie abgeschaltet. Klar jetzt könnte man noch einen inverter davor setzen, aber Softwarelösungen sind billiger. Zurück zum Thema. Die Software bietet 256 Stufen für die PWM an. Das ist eine 8-Bit Zahl. 0 ist alles aus 255 sollte alles an sein. Sind genau 256 Schritte
-
Thread
Atmega FuseBit 4 MhZ die xte
Besitze nen Atmega 8 und hab am XTAL 1 nen Oszillator mit 4 MhZ. Nutze das AVR Studio. Welches Fusebit muss ich nun setzen? gibt da so viele und keins mit 4 MhZ.
-
Thread
Ist "warning" nach dem Compilieren wichtig?
baud */ #define UART_BAUD_RATE 9600 void Schalter1 (void) { PORTC |= (1 << PORTC0); // Bit 0 setzen _delay_ms(2500); PORTC &= ~(1<<PORTC0); // Bit 0 loeschen } void Schalter2 (void) { PORTC |= (1 << PORTC1); // Bit setzen _delay_ms(2500); PORTC &= ~(1<<PORTC1); //
); // Bit setzen _delay_ms(2500); PORTC &= ~(1<<PORTC3); // Bit loeschen } int main(void) { // eigene Variablen uint8_t Pinabfrage; // Baudrate einstellen und BITS in UBBR setzen
-
Thread
externes SRAM mit 16Bit zugriff
memory interface des controllers ein SRAM angeschlossen. Das SRAM besitzt 4MBit und ist alss 256Kx16Bit organisiert. Um also das gesamte memory nutzen zu können will ich mit 16Bit zugriffen arbeiten. Nach meinem Verständnis versteckt sich hinter jeder der 256K Adressen ein Word mit 16Bit. Das Memory
an den SRAM angebunden und auch als solches im Code eingestellt. Ändere ich den Zugriffsmodus von 16Bit uaf 8Bit im entsprechenden STR Register, dann läuft alles wie erwartet. Die 16Bit variablen liegen dann flach aufgereiht im RAM. Ich kann dann einen Byte access auf jede Adresse machen. 16Bit Wöter
-
Thread
Schieberegister (74HCT595) in C
für das nächste mal weiß ich bescheid ;) > > wenn ich die ganze ausgänge des schieberegisters setzen oder löschen > will brauche ich doch nicht den "out" befehl... Doch. Die Set Funktionen bzw. Unset Funktionen setzen bzw. löschen die Bits in einem im AVR vorgehaltenen Speicher. Erst ein Aufruf
heisst das Argument für die Funktion [c] void com74hc595_setBit( unsigned char BitNumber) [/c] auch BitNumber und nicht BitMask.
-
Thread
Parität Bits Prüfen
Hallo, ich lese Daten (EM Tags) in Bytes ein, wobei nach jedem vierten Bit ein Paritätsbit übertragen wird. Die Paritätbits speichere ich und mache anschließend die Prüfung. Speichern [c] if (data_bit_counter > 40 && data_bit_counter <= 45) { if(bit) {
eigentlich fast alles ok aus :) Tust Du aber *paritybits* im ersten Teil auch irgendwann auf 0 setzen. Ich seh nur das die Bits gesetzt werden.
-
Thread
Inbus Schraubendreher mit Loch 1,5mm gesucht
immer mal wieder gebrauchen: https://www.westfalia.de/shops/werkzeug/elektrowerkzeug/bohrmaschinen/bits_bithalter/24194-westfalia-elektro-reparatur-bit-set-33-tlg-mit-50-mm-schaft.htm
- https://apexfasteners.com/fasteners/threaded-products/screws/tamper-resistant-screws/hex-pin-in-bits-and-keys - https://www.mcmaster.com/pin-in-hex-drivers/
-
Thread
Interrupt-Routine mit C und Timer1
Ausgänge TRISB=0; //PORTB - Ausgang PORTB=0; //PORTB auf Null setzen INTCON=0b10000000; // PIE1=1; //bei Auslösen PIR1(bit0)=0 setzen while (1) { } }[/c]
TRISB=0; //PORTB - Ausgang (Dioden) PORTB=0; //PORTB auf Null setzen PORTA=0; //PORTA ausschalten INTCON= 0b000000001; //Interrupts zulassen PIE1= 0b000000001; //bei Auslösen PIR1[bit0(TMR1IF)]=0 setzen while (1
-
Thread
Interrupts ausscalten
, wenn das I-Bit gesetzt ist. Wenn in deiner gerade laufenden Interrupt-Routine also da I-Bit gesetzt ist, wird sie durch den neuen Interrupt auch unterbrochen. Allerdigs löscht der Prozessor das I-Bit beim Eintritt
erst durch/nach "reti" (verlassen der ISR) wieder frei. Somit muß man zu Beginn der ISR das RXCIE-bit löschen und am Ende wieder setzen, damit am Ende der ISR kein USART-Interrupt von einer schon abgearbeiteten Übertragung auftreten.
-
Thread
Bitmanipulation zu langsam?
: > Danke! das mit der Klammer hat funktioniert. Kann man auch gleichzeitig > mit einem Befehl setzen und löschen Jo, is zwar nicht ganz schön: port |= ((1 << bit0) | (0 << bit1)); Gruß Robert
bits setzen und löschen? Nun nochmal zu meinen Bitmuster. Ich benutze einen unipolaren Schrittmotor mit 6 Kabeln dran! Wie bereits erwähnt funktioniert er super mit dem Bitmuster 0001,0010,0100,1000.
-
Thread
Hilfe zu Drehencoder-Auswertung nach Wiki
Rudi D. schrieb im Beitrag #1938024: > Verstehe ich in der Eile nicht. Anschluss von Spur A an Bit 0 und Spur B an Bit 2: Bit 0: Spur A neu Bit 1: Spur A alt Bit 2: Spur B neu Bit 3: Spur B alt ...
schrieb im Beitrag #1938024: > >> Verstehe ich in der Eile nicht. > > Anschluss von Spur A an Bit 0 und Spur B an Bit 2: > > Bit 0: Spur A neu > Bit 1: Spur A alt > Bit 2: Spur B neu > Bit 3: Spur B alt > > ... Danke, bis zum nächsten mal LD Rudi