-
Thread
zugreifen auf einzelne Bits eines unsigned char
[code] unsigned char variable = 0x00; variable |= 0x04; (Bit 2 setzen) variable &= ~0x04; (Bit 2 löschen) variable ^= 0x04; (Bit 2 togglen 0->1 1->0) [/code] oder besser lesbar [code] variable |= (1<<2); (Bit 2 setzen) variable &= ~(1<<2)
bzw #define BIT0 (1<<0) #define BIT1 (1<<1) #define BIT2 (1<<2) ... variable |= BIT2; variable &= ~BIT2; variable ^= BIT2;
-
Thread
Kommunikation zwischen zwei STK500
leichter machen. Aber im Grunde läuft es selbst dann auf if( Pin_Eingang ist high ) Setze Pin_Ausgang auf high else Setze Pin Ausgang auf low hinaus, nur mit dem Unterschied, dass einem der Compiler da etwas abnehmen kann. Aber solange du nicht soweit bist, vergiss die Anmerkung
PINB & (1<<PINB1)) ) man könnte es auch so schreiben if( (~PINB) & (1<<PINB1) ) also: Alle Bits vom PINB umdrehen, und dann eine normale Auswertung auf nicht 0 machen. Da die Bits in PINB umgedreht wurden, ist das dann effektiv keine Auswertung auf ein 1 Bit mehr, sondern auf ein 0 Bit am Portpin
-
Thread
STM32F7 UART - Parität Problem
Datenbreite auf 9 bit setzen und Parität selber berechnen?
Georg S. schrieb im Beitrag #7876511: > Datenbreite auf 9 bit setzen und Parität selber berechnen? Erzähl mal noch einen vom Pferd.
-
Thread
C-Zeile (einfach)
Stimmt schon aber damit weiß ich immer noch nicht wie ich durch die o.g Zeile durch << das Bit TXEN setze..
Hallo Matthias, das ist doch mal eine Antwort... D.h also ich setze das gesamte Register auf den absoluten Wert 1 (d.h bit1-bit7 sind 0)und Verschiebe es dann um z.B 3 Stellen oder? - wie in deinem Beispiel oben. Richtig? Würde mich freuen wenn Du meine Aussage
-
Thread
ATtiny84 Pin Change Interrupt
/ replaces above statement sleep_enable(); // Sets the Sleep Enable bit in the MCUCR Register (SE BIT) sei(); // Enable interrupts sleep_cpu(); // sleep
Tiefschlaf liegt. Ich würde hier eher den Clock Prescaler nutzen, um die Taktfrequenz herab zu setzen. Ein passiver IR Sensor wäre hier besser, der bräuchte weniger Standby-Strom.
-
Thread
Bitte um Hilfe bei der Programmierung von AVR8-Mikrocontrollern in C
Hatten wir das nicht letztens schon? Arduino bereitet alle Timer Für eine 8 Bit PWM vor. Hatten wir das nicht letztens schon? Setze, bevor du irgendwas anderes mit dem Timer tust, die Controllregister auf Null. Hatten wir das nicht letztens schon? Bernd S. schrieb im Beitrag
Beitrag #7515630: > if( TIFR3 & OCF3A ) { Die Zeile kommt mir verdächtig vor. Soll die das OCF3A Bit (Bit 1 im TIFR3, Atmega2560) abfragen oder das TOV3 im Bit 0?
-
Thread
Probleme mit CAN Controller (SJA1000)
steht auf EPP Modus. Also somit müsste es gehen. Ich muss dann möglicherweise im Control Register das Bit5 auf "1" setzen. Stimmt das?
Ok im BIOS habe ich die Einstellung für den LPT vorgenommen. Leider kann das Reset Request Bit nicht auf "1" setzen. Das Reset Request Bit muss doch geprüft werden um dann das Bittiming und die Nachrichtenfilter zu setzen. Erst dann können CAN-Botschaften gesendet oder empfangen werden. Das
-
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
PIC10F206 - Port schalten?
dahin: void main(void) // Start des Hauptprogramms { CMCON0 = 0x00; // Um Komparator (Bit 3 = 0 = disabled) auszuschalten GPIO = 0x00; // Alle Pins als Ausgänge GPIO.0 = 1; // Pins einzeln auf '1' setzen... GPIO.1 = 1; GPIO.2 = 1; GPIO.3 = 1; }
Schoasch wrote: > Aja und CMCON0 sollte auf 0x00 gesetzt sein. Wenn bit 6 von CMCON0 gelöscht wird, wird der Output des Komparators auf den Pin "GP2/T0CKI/COUT/FOSC4" gelegt: "0 = Output of comparator is placed in the COUT pin" Deshalb würde ich Bit 6 setzen. Das
-
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
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
AT90CAN128
> #include <inttypes.h> #include <stdio.h> #include "can.h" #define setbit(ADDRESS,BIT) (ADDRESS |= (1<<BIT)) #define clearbit(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT)) #define checkbit(ADDRESS,BIT) (ADDRESS & (1<<BIT)) #define lichtan() setbit(PORTG,PG1) #define init_mob_rx_0 init_mob_rx
Routine sendet CAN2B Du kannst es ändern indem Du auf 2A umschaltest, dann ist der Identifierer nur 11 Bit lang statt 29
-
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
Digitale Eingänge
nun alle 16 Pins des Ports auf einmal ansprichst. Du kannst auch schreiben: GpioDataRegs.GPADAT.bit.GPIOA0 = 1; Damit tust Du in der Tat nur den Pin 0 des Ports A auf eins setzen... Ich hoffe damit kommst Du weiter, Michael PS: Schau Dir doch mal das File DSP281x_Gpio.h dazu an.
Alter ich dachte Du hast das mit den Strukturen verstanden.... Also Crashcourse: struct GPAMUX_BITS { // bits description Uint16 PWM1_GPIOA0:1; // 0 Belegt ein Bit im Speicher/Register Uint16 PWM2_GPIOA1:1; // 1 Belegt ein Bit im Speicher/Register Uint16 PWM3_GPIOA2
-
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
FuseBit Tutorial
ob noch jemand Fehler entdeckt? Das Tutorial soll für ATMega ICs sein und im Moment sind die FuseBit Stellungen für ATMega16 eingezeichnet. Bitte um kurze Stellungnahme, Danke
setz ein link zu http://palmavr.sourceforge.net/cgi-bin/fc.cgi besser gehts kaum. W.
-
Thread
Morsecode mit (Attiny22)
Anwendungen auch Morse-Codes. Anbei ein Header uim definieren der Codes. Doe Codierung sieht so aus: Bit7 codiert, ob das Zeichen mit einem langen (bit7=9) oder einm kurzen Strich (bit7=1) beginnt. Bits 6..0 enthalten das eigentliche Zeichen, wobei der erste gesetzte Bit dem ersten Ton entspricht.
A = 1 0000010 ^ das zweite zeichen (lang) ^ das erste zeichen (kurz denn bit7=1) ^ erstes gesetztes bit ist "kurz" [/pre] und noch "M": [pre] M = 0 0000011 ^ das zweite zeichen (lang) ^ das erste zeichen (lang denn bit7=0) ^
-
Thread
LTC1257 - Problem mit Ansteuerung (SPI)
gleiche) der Variablen testen, ob eine 1 oder eine 0 anliegt und danach deinen PIN HIGH oder LOW setzen. Danach wird die Variable um eine Stelle geschoben. Das ganze in einer Schleife mit 12 Durchläufen. Schleife Start Bit x in Variable gesetzt ja = dann PIN high nein = dann PIN low
. Schleifendurchgang ===================== DACDATA(data & 0x8000) ich setze für data mal 0xBB8 (1011 1011 1000) ein, dann ein << 4 (-> 12 bits left-justified) ergibt 1011 1011 1000 0000 1000 0000 0000 0000 AND =================== 1000 0000 0000 0000 -> ergibt 0x8000
-
Thread
UHR- if-bedingung
OCIE1A); [/c] hast du es doch so schön geschrieben: In TIMSK ausschliesslich und nur das OCIE1A Bit setzen. Alle anderen Bits bleiben so wie sie sind.
Ein Bit setzen [C] Register |= ( 1 << Bitname ); [/C] Ein Bit löschen [C] Register &= ~( 1 << Bitname ); [/C] ein Bit auf 1 abfragen [C] if( Register & ( 1 << Bitname ) ) [/C]
-
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
ADC ISR startet nicht
>>SFIOR enthält die entsprechenden Bits (ADTS..) zur Auswahl der Triggerquelle. SFIOR: Bit 7: TSM, timer/counter synchronisation modus Bit 6-4: reserved Bit 3: ACME, analog comparator multiplexer enable Bit 2: PUD, generelles PullUp Disable BIt 1: PSR0, wert für asynchron modus für timer Bit 0: PSR321, prescaler reset timer1, 2, 3 >>Das Bit ADATE im ADCSRA aktiviert den Auto-Trigger. ADCSRA: Bit 7: ADEN, ADC enable Bit 6:ADSC,
-
Thread
Tiny25 RSTDISBL nach Lockbits setzen nicht möglich
Platine keine HVPP Möglichkeit und wollte das über ISP machen. Geplant war per ISP so: 1) Fuses setzen (alles ausser RSTDISBL) 2) Programm aufspielen 3) Lockbits setzen 4) RSTDISBL setzen Ist das alles nur per HVPP möglich oder übersehe ich eine Möglichkeit? Björn
uC, auch Fuses. Daher bliebe dir nur folgendes Vorgehen: Mit ISP: Programm flashen Fuses setzen (inklusive RSTDISABLE) und dann mit HVSP: Lock Bits seitzen. Ich persönlich würde auf die Lockbits verzichten. Die wenigsten werden mit einem HVSP-Progger an den uC rangehen um das Programm
-
Thread
Frage zum Frequenzmultiplex bei Modulation Gesperrt
eigentlich völliger Unsinn. Man könnte die Rundfunksender doch mit einem Abstand von 1Hz nebeneinander setzen, da passen doch viel mehr Sender auf die Mittelwelle, oder?
verstößt. Nur > das es so ist. Nimm jeden einzelnen Buchstaben/Satz/Abschnitt der dort steht und setze ihn her. Dann bereden wir jeden einzelnen Buchstaben.... Kurt
-
Thread
Raspberry Pi Pico SDR
Ziemlich optimistisch, 4-fach Oversampling bringt ein Bit zusätzliche Auflösung. Die ADC in den AVR fand ich bezüglich Stabilität grottenschlecht: mit 4-fach Oversampling hat der angeblich 12Bit ADC in einem Tiny1627 nur 10Bit stabil geliefert. https:/
Beim RPi Pico sind -zumindest bei Einzelmessungen- von den 12 Bit des ADC nur die obersten 8 Bit wirklich verwendbar. Die unteren 4 Bit sind eher ein Rauschgenerator. Möglicherweise ist das ja beim Pico 2 verbessert worden.
-
Thread
Wie drehe ich eine Bitreihenfolge um??
habe ich einfach von oben übernommen. ich muss dann bitwidth auf 8 > setzen? Mwin größtes problem ist, das ich nicht weiß wie ich die > funktion in der main aufrufe. Kann mir das jemand sagen? So wie jede andere Funktion auch [C] ergebnis = bit_reverse( ausgangswert
Die Antwort die erwartete war: size_t bit_swap(size_t x, size_t bits) { return bits ? (x & 1) << (bits - 1) | bit_swap(x >> 1, bits - 1) : 0; } Darauf hätte ich geschrieben: Und wie sieht - bit_swap - aus? usw.
-
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
mal wieder Busy-Flag
am verzweifeln. Das müsste doch ganz einfach sein. Ich lese das Busy-Flag von einem HD44780 im 4-Bit Mode. void toggle_enable(void) { LCD_PORT |= (1<<LCD_EN); // EN- Pin auf 1 setzen delay(1); LCD_PORT &= ~(1<<LCD_EN); // EN- Pin auf 0 setzen } void read_busy_flag(void) {
auf 0 setzen LCD_PORT |= (1<<LCD_RW); // RW- Pin auf 1 setzen while(a != 0) { toggle_enable(); a = (LCD_PIN & 0x08); // obere Nibble einlesen (DB4 - DB7) und 7. Bit prüfen
-
Thread
Timer Overflow Interrupt behindert Externen Interrupt?
2 für Spieler 1 setzen s_1 = 0; // Für Abfrage in main setzen, wenn = 0 --> zwei Flanken --> Start s_1_Start = 1; // Startbit Spieler 1 gesetzt } } if( !(PINA &
2 für Spieler 2 setzen s_2 = 0; // Für Abfrage in main setzen, wenn = 0 --> zwei Flanken --> Start s_2_Start = 1; // Startbit Spieler 2 gesetzt PORTC=~PORTC; } }
-
Thread
AVR Bootloader
ja nur aufwärts zählen. Der Assembler meckert hier, weil für ihn die Konstante intern mit bis zu 32bit dargestellt wird, was mit dem Minus davor immer zu 32bit führt, Du diesen Wert aber in ein Register (8bit) laden möchtest. Das Ergebnis ist aber in jedem Falle richtig. Jörg
habe sehe ich den Wald vor lauter Bäume nicht mehr. Also ich stell mir das ganze so vor: Ich setze per ISP zuerst die richtige Fuse-Bits und übertrage dann ein Bootloader. Dieser wird beim reset ausgeführt, konfiguriert die UART und wartet dann kurz ob er ein bestimmtes Byte empfängt, ansonsten
-
Thread
Problem mit Timer2 Atmega88
wiederhaben willst, weil du selbst an den Pins fuhrwerken >willst, dann musst du ihm mittels COM Bits die Kontrolle wieder >entziehen. Nein, es geht auch bei angekoppeltem OCRx. Dazu muss man die COM2A1/COM2A0 Bits passend setzen, z.B. 10 für Clear. Dann löst man ein OCRx Ereignis per Software aus, indem man das FOC2A Bit setzt. Damit wird das Ausgangsbit gelöscht! Setzen und Togglen geht ebenso.
-
Thread
ATtiny25 asynchronen Modus von Timer1 aktivieren
3 ist: [c]PLLCSR |= (1<<PCKE);[/c] Falls ich das warten dadurch realisiere, dass ich das PLOCK bit setze ist Schritt 2: [c]PLLCSR |= (1<<PLOCK);[/c] Allerdings funktioniert so das Programm acuh ncoh nciht... Danke weiterhin
Jürgen schrieb im Beitrag #1753434: > Falls ich das warten dadurch realisiere, dass ich das PLOCK bit setze PLOCK ist Read-Only, das kannst du nicht selber setzen. Das wird von der Hardware gesetzt. [pre]•Bit 0 - PLOCK: PLL Lock Detector When the PLOCK bit is set, the PLL is locked to the reference
-
Thread
DOGM LCD 3-Zeilen initialisieren
würde. Woran erkennst du das hier auf Double Height geschalten wird? Und wie errechne ich mir den 4Bit Modus?
| 1 | 0 | 0 | 1 | +---+---+---+---+---+---+---+---+ [/c] ist genau das eine Bit, welches im Function Set Kommando für die Unterscheidung 8-Bit/4-Bit steht.
-
Thread
LED dimmen mit Fading oder lieber mit PWM
besser jemanden, der das für dich macht? In jedem Datenblatt zu jedem AVR steht drin, wie man die Bits setzen muss, um einen PWM-Modus zu konfigurieren. In den Beispielen im Artikel [[LED-Fading]] sieht man das auch. Wenn dein Tiny keinen 16 Bit Timer hat, muss man es halt mit einem 8 Bit Timer machen. Aber das ist kein großes Problem, man muss nur 1-2 Register mit einer handvoll Bits korrekt setzen!
-
Thread
ILI9341: 4 Fragen zum ansteuern
line Serial Interface II). Frage 1 : Um diesen Übertragungsmodus auszuwählen, muss ich die vier Bits IM[3:0] setzen. Wo bzw. über welche Leitung setze ich diese? Das geht nicht so wirklich aus dem Datenblatt hervor. Ich bin also mit dem setzen der Bits etwas überfragt. Frage 2: Ich weiß, dass ist
dumme Frage aber: Bin ich richtig in der Annahme, dass wenn ich einen roten Pixel haben möchte die Bits für die Farbe rot High setzen muss? Das wird leider aus dem Datenblatt nicht so ganz klar. Zu sehen ist die Botschaft im Anhang. Frage 3: Das d/cx bit wurde im Datenblatt wie folgt beschrieben:
-
Thread
ADC: Konvertierung sofort starten?
er mir Folgendes für das Setzen des Bits: [avrasm] lds r24, 0x007A ori r24, 0x40 sts 0x007A, r24 [/avrasm] Laut Instruktionssatz sind das 10 Byte (4 + 2 + 4). So genau kenne ich den Instruktionssatz auch wieder nicht
Listing auf den Fall der nicht zusammengefassten Version. Konkret sind die o.g. Befehle für das Setzen des ADSC Bits im ADCSRA Register zuständig.
-
Thread
wie Ports bei I2C / TWI setzen?
wenn man für einen Atmega644 nicht das TWI_Master.c bzw. .h verwenden, sondern die Register selbst setzen möchte - gibt es da einen Hinweis, wie man DDRC setzen muß? Der AVR soll nur als Master betrieben werden, also kann der SCL-Port als Ausgang gesetzt werden. Anders der SDA-Port, der für acht Bits
entweder H vom Master oder Gelegenheit, Daten vom Slavr zu lesen. Für Ausgang L das DDR auf Ausgang setzen und der Port zieht mit aktiv L die Leitung auf L. Gilt für SDA und SCL. Gruß aus Berlin Michael
-
Thread
SBR nutzen
nicht geht vielleicht ist es auch ein Denkfehler. Also ich will in dem reg r20 eines tinytn44 das Bit 4 setzen. Nutze daher den Befehl SBR r20,4 Ich Programmiere in Assembler. In der Simulation wird aber Bit 3 gesetzt, das raff ich einfach nicht da es in einem anderen Zusammenhang bei Bit 1 wunderbar
Muss heissen: [avrasm] sbr r20, (1<<3) ; Bit 3 setzen [/avrasm] LG EC
-
Thread
HP Solution Center funktioniert nicht mehr
war_ : Wie kann ich ein Dokument mit mehreren Seiten einscannen, ohne sie hinterher zusammen zu setzen? LG Gerald
und dann die Scan Funktion anstoße und dann in den Task Manager schaue, dann sind hpdirec.exe (32 Bit) angestoßen (das ist glaube ich das Solution Center) und HP Scan Application Resources (32 Bit) geöffnet. Hilft dies weiter?
-
Thread
IAR Workbench
zu Frage 1: #define bit_0 0x01 #define bit_1 0x02 ... #define bit_7 0x80 // bit setzen PORTX = PORTX | bit_0 //bit löschen PORTX = PORTX &~ bit_0 zu 2: indem du die ganze C-Datei einbindest, und zwar unter Projekt
Bitmanipulationen sind doch schon in der C-Bibel beschrieben :-) Bit setzen: regvar |= (1 << bit) Löschen: regvar &= ~(1 << bit) Exklusiv-Oder: regvar ^= (1 << bit) ...usw...
-
Thread
Bitfelder, Portabilität und STM32
#6069248: > Wie würde denn der Check funktionieren? Nun ja, wie ein Laufzeitcheck per memcpy(): Bits setzen, memcpy nach uint32_t oder uint8_t, und schauen, ob es passt. std::bit_cast ist im gegensatz zu memcpy constexpr, d.h. Du kannst es in einem constexpr-Kontext bspw. in einem static_cast() zur
Wilhelm M. schrieb im Beitrag #6069389: > Nun ja, wie ein Laufzeitcheck per memcpy(): Bits setzen, memcpy nach > uint32_t oder uint8_t, und schauen, ob es passt. std::bit_cast ist im > gegensatz zu memcpy constexpr, d.h. Du kannst es in einem > constexpr-Kontext bspw. in einem static_cast
-
Thread
Schieberegister Frage(n)
beschalten. Allerdings soll das ganze in sehr langsam laufen. Das heißt ich will mit einem Taster die Bits setzen und mit einen anderen diese schließlich ausgeben lassen. Am SCK sitzt ein Arduino der alle halbe Sekunde an und aus geht. Folgende Schaltung habe ich jezt getestet: (siehe Anhang) Das oben
werden sollen. Daher wird dort gern Low gesteuert. Also muss da ein Pull down rein. Du kannst Bits einzel setzen. Aber nur eingangsseitig. Und alle Bits müssen gesetzt sein, wenn Du Deiner MCU sagst, "jetzte lese alle Bits ein" !
-
Thread
FTDI oder CP2102?
selbst mit dem Uralt Analogscope für 30 Euro. Schaut man sich ein komplettes ASCII-Zeichen an (also 10 Bit meist), sieht man Start und Stop Bit sowie die Polarität. Damit ist dann alles vorgegeben!
LETZTEN Bit des Bytes 50% der Bitdauer nicht überschreiten, sonst sampelt man ein anderes Bit! Ist das Byte inkl. Start und Stopbit 10 Bit lang, darf der Fehler also nicht 5% überschreiten! Wenn Sender und Empfänger
-
Thread
SPI 23LCV512 / 23LCV1024 ATMega328 oder ATtiny 2313
512kbit (64kb) und 1Mbit (128kb) Varianten bestellt. Die CHIPS werden über SPI angesprochen: MODE 8bit ADRESSE 16/24bit DATEN 8bit (BYTE Operation Mode) Die Maximale Frequenz liegt bei 20MHz und die Spannungsversorgung 2,5 bis 5,5 Volt. Diese spezielle Ausführung unterstützt eine Backup-Stromversorgung
Noch eine weitere Frage (eigentlich die gleiche): Beim 512 er muss ich pro Byte schreiben/lesen 64bit übertragen -> 11520x64 = 737280 bit/s -> 1/25 F_CPU (rechnerisch) Beim 1024 er muss ich pro Byte schreiben/lesen 80bit übertragen -> 11520x80 = 921600 bit/s -> 1/20 F_CPU (rechnerisch) also wir
-
Thread
for-Schleife - Bit verschieben
> (int. / ext.) Peripherie. Bspw. ist bei einem STM32 das Datenregister > eines der USARTs zwar 32Bit breit, aber davon sind nur 8Bit relevant. Wenn von Hunderten von 32-Bit-I/O-Registern einige wenige einen oder mehrere 8-Bit-Teilbereich haben, dann nimmst du für diese den Typ std::byte, für alle
Der Thread läuft bei 255 über. bitte ein Bit. 🍺
-
Thread
Können die Lock-Bits des Atmega8 umgangen werden?
an. Wenn du allerdings ein Schreiben auf den Flash verhindern willst, musst du die Fuse-Bits natürlich danach setzen. Also typischerweise schützt man seine Anwendung durch das Setzen der Fuse-Bits nach dem Flashen :-) Gruß Stephan
Stephan M. schrieb im Beitrag #2370423: > das kommt generell natürlich auf die Fuse-Bits an. Hier stehen aber die Lock-Bits zur Debatte. @Heinz: Setze dach dem Flashen die Lockbits und gut ist... Die Lockbits kannst Du nur durch Löschen (Chip-Erase) des AVRs wieder freigeben, dann
-
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
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
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
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
stm32f103c8 lässt sic nich flashen
GPIOx)); assert_param(IS_GET_GPIO_PIN(GPIO_Pin)); if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)Bit_RESET) { bitstatus = (uint8_t)Bit_SET; } else { bitstatus = (uint8_t)Bit_RESET; } return bitstatus; } [/c]
GPIOA_BASE + PORT(port) *0x400 + (pin/8)*4)&=~(0b1111<<(4*(pin%8))) #define setGPIO_CRHL(port,pin,mask4bit) {clrGPIO_CRHL(port,pin);*(uint32_t*)(GPIOA_BASE + PORT(port) *0x400 + (pin/8)*4)|=(mask4bit<<(4*(pin%8)));} [/c]