-
Thread
Dumme Frage zum "C" mit AVR's
Christian J. schrieb im Beitrag #4095917: > Der PIc kann einzelne Bits in Registern setzen und braucht dazu kein > Read/Modify/Write und auch kein PORTB = PORTB | (1 << Bit) Das kann der AVR auch. Der gcc ist helle genug, dass er keine RMW-Zyklen dafür macht, sondern
"Der PIc kann einzelne Bits in Registern setzen und braucht dazu kein Read/Modify/Write und auch kein PORTB = PORTB | (1 << Bit)" Das können die AVR auch: AVR BIT AND BIT-TEST INSTRUCTIONS SBI P,b Set Bit in I/O Register
-
Thread
LCD Initialisierung
>lcd_enable: >... >sbi PORTC, 0 ;Enable-Bit setzen >... >cbi PORTC, 0 ;Enable-Bit rücksetzen was soll das?
;Register wieder herstellen pop temp1 ret ;Rücksprung ; 5.3 LCD -> Enable-Bit setzen lcd_enable: push r18 ;Register sichern ser r18 out DDRC, r18 ;PortC als Ausgang sbi PORTC, 0 ;Enable-Bit setzen nop ;warten nop ;warten
-
Thread
Induktiver Positionssensor - Fragen dazu
in 1024 gleiche Teile geteilt. Beispiel: wenn die Referenzspannung 2,048V beträgt, so macht jedes Bit Deines ADC genau 2,048V/1024bit = 2mV/Bit aus. Und wenn die Referenzspannung 1,1V beträgt, so macht jedes Bit halt 1,1V/1024bit = 1,0742mV aus. Das bedeutet aber auch: Du kannst (wenn Du keinen
aus, wieviel Schritte 4% bei einem 16-Bit Wandler sind und wieviel Bits das entspricht - dann weißt Du direkt, wieviele Bits Du (vom LSB aus zählend) in die Tonne treten kannst. Will sagen: 16-Bit Auflösung heißt noch lange nicht 16-Bit
-
Thread
PIC Interrupt Probleme
/Timer 2 an } void SetupADC(){ TRISAbits.RA0 = 1; //Port RA0 Poti auf Eingang setzen TRISBbits.RB0 = 1; //Port RB0 Taster auf Eingang setzen ANSELbits.ANS0 = 1; //RA0 auf Analogeingang setzen (=1, 0 = digital) ADCON0bits.ADON = 1; //A/D-Wandler
; PIR1bits.ADIF = 0; ADCON0bits.GO_DONE = 1; } return; }[/c] wenn ich nun das ADC-Interruptenablebit setze, und das einlesen in der Polling-Schleife auskommentier, funktioniert nichts mehr
-
Thread
DMX-Empfang klappt nicht
Rate über eine Lookup-Table direkt für den 16bit-Timer generieren...) Viele Grüße, Hendrik
steht welche START-UP-TIME und ADDITIONAL-DELAY er hat. Hier geht es um das CKSEL0 und die SUT Bits
-
Thread
PIC - "beliebtester"?
und vorher nur Assembler gewöhnt war). Da lobe ich mir doch mein PIC-Assembler, wo ich einzelne Bits einfach so setze: bsf PORTA,0 bcf PORTA,1
Hi >Da lobe ich mir doch mein PIC-Assembler, wo ich einzelne Bits einfach so >setze: >bsf PORTA,0 >bcf PORTA,1 Und ich den AVR-Assembler, wo ich einzelne Bits einfach so setze: sbi PortA,0 cbi PortA,1 MfG Spess
-
Thread
Einzelne Bits eines Bytes ändern
Bit sepperat programmieren. A = 1 B = 0 C = 1 ....usw (Das dieser Programmtext nicht funktioniert, weiß ich, ich habe ihn nur zur Veranschaulichung meines Problems gewählt.) Bestimmt gibt
Hallo Geht in Bascom genuso wie Port Pins setzen daten.0 = 1 setzen von Bit 0 in daten daten.0 = 0 löschen von Bit 0 in daten Geht auch schön mit Variblen a = 5 daten.a = 1 Gruß Dieter
-
Thread
Visual Studio 13 und RS232
Weiß jemand, wie man die Signalpegel an der RS232 im Visual Studio 13 setzen und auslesen kann? Danke
. Aber auch damit kann man die Signalpegel an der Schnittstelle nicht setzen und auslesen. Oliver
-
Thread
C# dll 64 bit
Plattform sie ist. Am Inhalt sollte sich dabei nichts ändern. Warum willst du die Datei fest auf 64bit setzen?
Plattform sie ist. Am Inhalt sollte sich dabei nichts ändern. > > Warum willst du die Datei fest auf 64bit setzen? Sie soll dem Anwender als reale 64bit dll yur Verfuegung stehen.
-
Thread
Höchstmögliche Schaltfrequenz an einem normalen AVR Ausgangs-Pin
zugreifen kann als auf RAM. Einfaches Lesen oder Schreiben geht in einem Takt statt in zwei, einzelne Bits setzen oder löschen geht in zwei Takten statt in fünf. Ob das aber in deiner Anwendung irgendeine Relevanz besitzt, kannst bestenfalls nur du wissen, weil nur du diese kennst. Es könnte nämlich genausogut
PSOC 6 hat 32 Timer 8x 32Bit 24x 16Bit Oder PSOC 5 mit UDBs selber machen
-
Thread
Mega8: VQC10 LED-Matrix 5x7 Zeitmultiplex - Bestimmte Bits eines unsigned char auf Ports ausgeben
noch nach einer eleganten Möglichkeit das entsprechende Ausgabeport mit einer begrenzten Anzahl von Bits aus einem unsigned char zu setzen, ohne die restlichen Bits zurück zu setzen. - Leider gibt die Suchfunktion hierzu nicht allzu viel her. Beispiel: PORTD hat irgendeinen gesetzten Zustand. Jetzt
Datenbyte > verodern: > > [c] > PORTB &= 0xE0; > PORTB |= 0x15; > [/c] Die aufgeoderten Bits liegen aber nich in der Maske 0xe0. Ein zwischenzeitliches Ändern von PORTB wemeidet man über ine lokale Variable: [c] uint8_t portb; // Bits 5,6,7 löschen portb = PORTB & ~(0x7 << 5); // Bits
-
Thread
Bit an einem Port manipulieren
Als Anfänger würde ich jetzt noch in dieser Variable durch Bitmanipulation PB0 und PB7 auf 1 setzen und dann auf den Port komplett zurückschreiben. Oder wie macht man das am geschicktesten? Martin
Als Anfänger würde ich jetzt noch in dieser Variable durch > Bitmanipulation PB0 und PB7 auf 1 setzen und dann auf den Port komplett > zurückschreiben. dann nein, es ist ein wenig was anderes. Es erhält den aktuellen Zustand von PB0 und PB7 und setzt sie nicht auf 1.
-
Thread
Display-Ansteueung mittels Xilinx-FPGA
Pulse gebe schwarze Pixel aus und setze VSync = 0 11.) solange VCounter < 524 gebe schwarze Pixel aus und setze VSync = 1 12.) wenn VCounter >= 524 setze VCounter = 0. Also hast du minimal zwei Processe. Eine der mit Clock = 25 MHz
html#187983 um nocheinmal auszuholen/zusammenzufassen: Also du wirst kaum einen Speicher mit 24bit Organisation finden. Daher empfehle ich dir entweder zwei asynchrone SRAMs zu je 16bit (wovon im ersten zwei und im zweiten nur ein Farbkanal zu je 8bit abgelegt ist) oder drei asynch. SRAMs zu je 8bit
-
Thread
Makro für: PORTD |= (1<<PD1)
PS: #define Aus (PORTD &= (0<<PD0)) macht alle Bits, nicht nur PD0 sondern auch PD1-PD7 zu 0.
>// C > uint8_t X = (PINB & (1<<PB2)) > 0; Aus andrem Thread >x = (PORTA & (1 << BIT)) == (1 << BIT) Wo ist denn der Unterschied, ob ich PINx oder PORTx schreibe ?
-
Thread
Wie programmiert man Grafiken "richtig" in C
> Macht man das so? Eher nicht. Üblich wäre vielmehr ein Satz "Kontextfunktionen", also z.B.: setze Position, setze Farbe, ggf. zusätzlich: setze Schriftart, setze Schriftschnitt, setze Schriftrichtung usw. usf. Und dann eine Funktion zur eigentlichen Zeichenausgabe, die als Parameter das auzugebende
mache also eine Tabelle pro Buchstaben Nein du machst eine Tabelle für den ganzen (5x7) font. bit font[0..255,0..4,0..6]; allerdings packt man bits gerne in bytes oder worte.
-
Thread
Tasten entprellen per Software
Taster mit Umsschaltkontakt nimmt. So ist der Tastendruck sofort beim ersten Kontakt in der Lage ein Bit zuu setzen und beim Loslassen löscht der andere Kontakt das gesetzte Bit. Kostet halt einen weiteren Eingang, spart aber Entprellzeit, da schon das erste Anzeichen eines Signals eine Aktion ausführt
mit 16Bit Variablen in IRQ-Routinen.
-
Thread
Problem mit Interupts
0b00000001 | ( 1 << PB4 ); [/C] oder aber, wie zb [C] PORTB |= (1<<PB0); [/C] nur das Bit 0 im Port B setzt und alle anderen Bits in Ruhe lässt. Viele Wege führen nach Rom.
dann am nächsten Tag eine neue einzuschrauben. Auch wenn das im Prinzip funktionieren würde. Bits unabhängig von anderen Bits setzen und löschen zu können ist eine der Grundfertigkeiten in der µC Programmierung.
-
Thread
Bedarf an eigenbau STM32F429 Evaluation Board ?
. Da ich Ethernet, externer USB-PHY ( High-Speed ) und 32MB SDRAM brauchte um einige Test's mit 32Bit Bus zu machen, ist das Teil so entstanden. Der TFT-BUS, 32Bit-FMC Bus und noch andere Siganle sind auf die unteren Stecker gelegt. Ich werde das Teil aber wieder auf 16Bit zurück bauen und nur noch
, G0..7, B0..7) - HSYNC, VSYNC, CLOCK, DATA_ENABLE praktisch wirst du eher nicht mit vollen 24 Bit Farbtiefe arbeiten wollen, sondern mit einem 65K Modus. Da hat sich der 565-Mikrosoft-Modus eigentlich als beste Variante durchgesetzt, also 5 Bit rot, 6 Bit grün, 5 Bit blau, macht 16 Bit an Daten
-
Thread
ATmega644 16bit Timer Compare Interrupt
Vergleichs- Regiser setzen OCR1AH = Byte1; // 16 Bit Compare Register A obere 8 Bits OCR1AL = Byte0; // 16 Bit Compare Register A untere 8 Bits sei();
Vergleichs- Regiser setzen OCR1AH = Byte1; // 16 Bit Compare Register A obere 8 Bits OCR1AL = Byte0; // 16 Bit Compare Register A untere 8 Bits sei();
-
Thread
ATMEGA8 SREG + I setzen
ATMEGA 8 den Timerinterupt zum laufen zu bekommen. Laut Datenblatt muss ich dazu auch im SREG das I-Bit auf 1 setzen. Ich bekomm es leider nicht hin. [c] SREG |= (1<<I); [/c] Das war leider etwas naiv. Kann mir jemand weiterhelfen bitte?
Oh ok, dann wird damit das I-Bit gesetzt? Dann hab ich das doch mit drin. Aber irgendwas stimmt nicht. Denn das Programm hängt sich zwischendurch irgendwie auf. [c] wenn ich hier eine Variable verändere, dann erfolgt die
-
Thread
Billiges Cortex-M4-Board STM32F4DISCOVERY jetzt erhältlich
-bit or 8-bit accesses to external 16-bit or 8-bit devices" Hintergrund ist der gewaltige Preissprung zu Fertiglösungen wie STM3240G-EVAL evaluation board; ...hier mal die Zusammenstellung der
erhardd schrieb im Beitrag #2603047: > Reference manual meint dazu grundsätzlich: > "Translation of 32-bit wide AHB transactions into consecutive 16-bit or > 8-bit accesses to > external 16-bit or 8-bit devices" ... ich nehme auch an, das sich das "consecutive" hier auf den -blockweisen- Zugriff (
-
Thread
ATMega128: Reset nach setzen von PORT_E3
Hi, aus irgendeinem Grund resettet sich mein ATMega128 wenn ich Bit3 vom PortE als Ausgang auf high setze. Das hängt sicher mit einer alternativen Port-Funktion zusammen. Aber welche kann das sein? Aktiviert habe ich nichts, nur UART und Interrupts. MfG Andy
Also, im MCUCSR-Register steht nach dem Reset eine 1. Hat keiner ne Idee? Wenn ich bit2 verwende passiert ganau das gleiche. Bei Bit4 funktioniert alles so wie gewollt. DDR ist richtig gesetzt.
-
Thread
ST26 16MBit Flash <.> XMEGA256A3BU
Linke mal das DB vom SPI Flash , hat das ein WREN Bit das du vor dem Schreiben setzen musst ? Der SS vom SPID ist auch ein Ausgang ? Kannst du eine ganze Page lesen ? Gruß JackFrost
im Status und Configuration Reg. nötig. > A. B. schrieb im Beitrag #5041559: >> Das Setzen ist aber nirgends zu sehen. > > Wo kann ich dieses Bit bitte setzen? "The Write Enable (WREN) instruction sets the Write- Enable-Latch bit in the Status register to ‘1, ..." Ist ja vielleicht
-
Thread
avr: setzen von UCSZ beieinflusst baudrate register
hi, habe grade im simulator festgestellt, dass UCSR0C |= (3<<UCSZ00); //Asynchron 8N1 UBRR0H auf 0x06 setzt. warum das? wenn man jetzt die baudrate setzt bevor man UCSZ setzt, hat man ein problem...!? btw ist UCSR0C |= (3<<UCSZ00); ja initial, man könnte sich das also sparen und UBRR wird nicht gesetzt.
-
Thread
CNC Maschinchen
Sub Motory(ry As Integer ) Indy = Indy + Ry 'wenn obergrenze erreicht, dann auf anfang setzen If Indy > 4 Then Indy = 1 End If 'wenn untergrenze erreicht, dann auf ende setzen If Indy < 1 Then Indy = 4 End If 'ports setzen Portb.4 = My(indy).1
Sub Motorz(rz As Integer ) Indz = Indz + Rz 'wenn obergrenze erreicht, dann auf anfang setzen If Indz > 4 Then Indz = 1 End If 'wenn untergrenze erreicht, dann auf ende setzen If Indz < 1 Then Indz = 4 End If 'ports setzen Portc.2 = Mz(indz).1
-
Thread
c't - Bot Geschw.regelung
o Bits in Control Register TCCRnA & TCCRnB schreiben. Siehe Bitmanipulation 6 Vergleichswert OCRnx setzen zu 1) Pins auf low setzen brauch ich denke ich nicht, weil alle Ports standartmäßig auf low
: WGM00 und WGM01 sind Bits des Registers TCCR0. Außerdem hast Du die Bits verwechselt und das Löschen von einzelnen Bits geht anders. Also TCCR0 |= (1 << WGM01); TCCR0 &= (uint8_t)~(1 << WGM00); > Und COM00 setze ich auf
-
Thread
[C] Böse Falle: Datentyp korrekt angegeben, falscher verwendet
, bei "Achtung!" Bei Konstanten muss man halt die passende Endung wählen. L = long, meist 32 Bit UL = unsigned long LL = long long, meist 64 Bit ULL = unsigned long long Oder einen Cast vor die Konstante oder Variable setzen und die EXAKTEN Datentypen aus stdint.h nutzen, da weiß man IMMER
im Beitrag #5764043: >> int16 mal int16 musste doch vom Typ her auch int16 ergeben? > > Nö. 16 Bit * 16 Bit sind 32 Bit. In PL/I schon. In C nur dann, wenn ein "int" 32 Bits breit ist.
-
Thread
Meteotime-Bits stören Auerswald DCF-Uhr
einfügen, die nach dem fehlenden Sekundenbit (nach der 59. Sekunde) dafür sorgt, dass die nächsten 14 Bits alle nur eine Länge von 100ms (logisch 0) haben. Die Lösung, die Bits 1-14 dauerhaft auf 0 zu setzen, könnte hier für einen wirksamen Workaround sorgen. Das Problem dürfte bei eigenen Leuten aufgetreten
einfügen, die nach dem fehlenden Sekundenbit (nach der 59. > Sekunde) dafür sorgt, dass die nächsten 14 Bits alle nur eine Länge von > 100ms (logisch 0) haben. Die Lösung, die Bits 1-14 dauerhaft auf 0 zu > setzen, könnte hier für einen wirksamen Workaround sorgen Problemlos mit Standardchips aufbaubar
-
Thread
Debug mit Watchdog STM32+CubeIDE
Bei meinem L451 kann ich das Bit einfach wie jedes andere setzen. Die Frage ist nur, wie Register und Bit bei dir heißen. Aber Bit 11 oder 12 für den WWDG bzw. IWDG im DBG APB freeze register 1 ist eigentlich eindeutig. Anders gesagt
sonst könnte ja die IDE nicht mit ihm reden. Falls die öffentlich ist kannst du es darüber versuchen. Bits setzen kann er mit Sicherheit. Ansonsten mal versuchen, unter reset zu verbinden und dann per Register view das Bit zu setzen.
-
Thread
AVR- C: Welche einfachen Projekte für den "Einstieg"?
(1 << 19); /* PA16: input with pullup */ PORT->Group[0].PINCFG[16].bit.INEN = 1; PORT->Group[0].PINCFG[16].bit.PULLEN = 1; PORT->Group[0].OUTSET.bit.OUTSET = (1 << 16); /* LED0 on XPlainedPro: PB30, active low */ PORT->Group[1].DIRSET.bit.DIRSET = (1 << 30
Microchip) Cortex-M0+ sehr ähnlich zu denen der XMega. Vorteilhaft ist, dass es separate Register zum Setzen und Löschen eines Bits gibt, sodass man kein read-modify-write braucht (SBI und CBI *sind* read-modify-write). Aber das hatte Atmel auch schon bei den Xmegas an Bord. (Warum das vorteilhaft ist merkt
-
Thread
Spi 11 bit
, da dass der AVR automatisch macht, sobald das SPDR Register vollständig geshiftet ist, sprich 8 Bits gesendet (und empfangen) wurden. Nach Punkt 6 einfach den CS Pin wieder auf high und fertig ist das ganze. Ciao Fasti
; //Endwert wird berechnet PORTB = (1 << PB0); //SS auf high setzen return (xGes); //Endwert wird zurück gegeben
-
Thread
Probleme bei verschachtelten Interuppt
einstellen, etc. sei main_loop: wenn Job-Bit 1 gesetzt setze Job-Bit 1 zurück führe die zugehörige Aktion aus, zb den ADC starten wenn Job-Bit 2 gesetzt setze Job-Bit 2 zurück führe die zugehörige Aktion aus, zb den ADC auslesen und verarbeiten wenn Job-Bit 3 gesetzt setze Job-Bit 3 zurück führe zugehörige Aktion aus, zb Timer einschalten etc. etc. jmp main_loop [/code] die ISR wiederrum, setzen nur das Job bit.
-
Thread
Modulation IR Signal - Interrupt oder Warteschleife?
Normal-Zähl-Modus (Pause) Nein, immer PWM. Die kann man ja zu Pin hin abschalten, mit den COMxy Bits. Der Zähler läuft immer durch, dadurch hat man eine Zeitbasis. > und setze den Compare auf die jeweilige >Anzahl der Flanken (nennt man das so?)? Nein. Du zählst in der ISR die Anzahl Pulse,
für Pulsphase, an unbenutzten Pin für Pausephase --> Variable für gewünschte Gesamtzahl der Pulse setzen --> in ISR Anzahl der Pulse hochzählen --> In Hauptprogramm warten, bis Anzahl Pulse = gewünchte Gesamtzahl --> nächstes (Halb)Bit senden Anmerkung: Während Senden müssen keine sonstigen Programmaktivitäten
-
Thread
ATTiny85 - Software UART Probleme
Baudraten zu kommen und bin da etwas vom Datenblatt verwirrt. Im TCCR1-Register muss ich das CTC1-Bit setzen, um den Compare-Match zu aktivieren. Nun steht in der Bit-Beschreibung: "When the CTC1 control bit is set (one), Timer/Counter1 is reset to $00 in the CPU clock cycle after a compare match
zurück nachdem ich mal wieder etwas Zeit gefunden habe. DocMartin schrieb im Beitrag #4749924: > Setze doch mal den Autobaud-Marker und lasse die Baudrate bestimmen. Hab ich, es wird eine Baudrate von *73619* erkannt. Wenn ich die 13 Pause-Bits weglasse, wird eine Baudrate von *34833* erkannt, so
-
Thread
Einsteigerfrage zu Cortex M0 mit LPCXpresso
->IEV |= (0x1<<bitPosi); break; default: break; } return; } [/c] Der ganze Code muss dazugelinkt werden nur um eine einzelne Zeile Register setzen durch eine Funktion zu ersetzen. Was sense,
Struktur ansprechen? Kann ich die Bits nicht irgendwie auch direkt setzen z.B. SYSAHBCLKCTRL |= (1<<6);
-
Thread
"Class A/B" versus "Class D" Verstärker für HiFi-Anlagen
Gleichung > 16 bit mit 44ksps = 1 bit mit 2.884Gsps irgendwas zielführendes abgewinnen zu können.
1 bit DAC kam viel später, so 1990, und ist im Prinzip ein schwachbrüstiger ClassD. Zwischendurch gab es oversampling mit 5 bit DACs etc.
-
Thread
Wer verwendet RFM69?
Ich handhabe es so, dass ich in den Grundeinstellungen die TxStartCondition auf 1 (FifoNotEmpty) setze und dann zum Senden FIFO zunächst im Standby-Modus fülle, dann Tx aktiviere, darauf warte, dass das PacketSend-Bit gesetzt wird und sofort wieder in den Standby-Mode wechsle.
low, bevor man durch die steigende Clock-Flanke den Wert "einloggt". Anschließend schiebt man die Bits von /spibyte/ um 1 nach links, so dass Bit 7 herausfällt, Bit 6 das MSB wird, dann Bit 5, usw. Man überträgt so die 8 Bit von /spibyte/ im Modus MSB-first, wie es das Datenblatt auf Seite 44 beschreibt
-
Thread
Taster entprellen
diese beiden Zeilen noch abkürzen: [c] // original if(KEY_in == 1) shift |= 1; // Bit 0 setzen else shift &= ~1; // Bit 0 löschen (&0xFE) // kürzer if(KEY_in == 1) shift |= 1; // Bit 0 setzen falls nötig. Default=0 // noch kürzer shift
sich diese beiden Zeilen noch abkürzen: // original > if(KEY_in == 1) shift |= 1; // Bit 0 setzen > else shift &= ~1; // Bit 0 löschen (&0xFE) > > // kürzer > if(KEY_in == 1) shift |= 1; // Bit 0 setzen falls nötig.Default=0 > > // noch kürzer
-
Thread
I2C Adresse ermitteln
7 bit und 7 bit sind 7 bit und mit 7 bit lassen sich Adressen von 0..127 abdecken. Eine Adresse 0xA? ist keine 7-bit-adresse ist keine 7-bit-adresse weil sie sich mit 7 bit nicht adressieren lässt.
deine Aussage ganz Falsch. > I2C_Adr = 0xA0 > Beim lesen ist I2C_Adr | rw_bit > Beim schreiben nicht mal das. > Und warum du die Adresse nach rechts schiebst, ist mir ganz unklar. ich schiebe nicht nach rechts, sondern (gemäß Spezifikation) nach links, und setze dann Bit
-
Thread
Hz in Bit umwandeln?
mikrocontroller der mir das signal, mit min doppelter abtastfrquenz abtastet und dann umwandelt (in bit?). so, wie geschiet diese umwandlung? ist die Hz Zahl gleich der bit zahl zu setzen? (habe mal was von parallelen AD wandlern, sukssesive aproximation gehört, ist das das was ich dafür brauche?),
1 MHz entspricht in aller Regel 135 bit pro Volt
-
Thread
RF01 und RF02 433 MHz Funkmodul
Bits. Bei diesem Problem weiß ich gerade überhaupt nicht weiter. Hat jemand eine Idee?
liest also den Status aus wenn ich das richtig verstehe und prüfst in der while Schleife ob das erste Bit eins ist, denn dieses Bit zeigt an ob im Fifo was ist. Dort hänge ich dann weil scheinbar nichts empfangen wurde. Um aber zu prüfen ob das erste Bit 1 ist, sollte man den Status Read Befehl doch dauernt
-
Thread
LCD nicht nur für einen Port in C
Ahnung vom AVR (Kenne nur 8051, wo man mit sbit RS=P1^2; > und dann RS=1; einzelne Portleitungen setzen kann) und weiß nicht wie > das bei Atmel geht Eigentlich ganz genau so, wie beim 8051, nur daß man noch die Direction-Bits setzen muß. Die Bitzugriffe kann man mit einem Macro (SBIT) definieren. Anbei mal ein Beispiel für 2*40 LCD im 4Bit-Mode mit jedem beliebigen Pin. Peter
-
Thread
ADC 24 Bit äußere Beschaltung.
Ein weiterer Punkt wäre das Auslesen des ADCs. Ich verwerfe das LSB des 24-Bit ADC (dies ist ja das Status Bit) und lass mir die 23 Bit als Integer anzeigen. Dies müßte korrekt sein. gel? Also hat der 24 Bit ADC im Prinzip nur eine Auflösung von 23 bit?
Beitrag #3890687: > Habe leider die Schaltung hier nur auf dem Steckbrett. Autsch, und das bei 23 bit…das wird ja schon bei 16 bit nix damit da nix zappelt und du willst es auf 23 bit bringen? Also ich fände ja jetzt interessant wofür du 23 bit brauchst. However, auf dem Steckbrett kannst du locker
-
Thread
24 bit Rechtgenerator mit feiner Auflösung
Beispiel für einen 16-bit Zähler auf einem µC: Ein wenig pseudocode nenne ich es mal ;) Für deine Zahl, nehmen wir mal 200.000. uint32_t max = 200000; jetzt teilen wir die Zahl auf und setzen das Compare-Register des
Was ist denn mit einem AVR Xmega? der Kann z.B. 2 16-Bit Timer hardwareseitig zu einem 32 Bit Timer/counter zusammenschalten. Und die Auflösung ist auch kein Problem
-
Thread
Define Makros in C
connections */ #define HD44780_RS C, 6 #define HD44780_RW C, 1 #define HD44780_E C, 0 /* The data bits have to be in ascending order. */ #define HD44780_D4 D, 2 [/c] hd44780.c hat dann: [c] #define GLUE(a, b) a##b /* single-bit macros, used for control bits */ #define SET_(what, p, m
für Pinset/-clear, da man zweimal auf den lahmen IO-Bus muss (erst Pinstatus einlesen, danach Setzen oder Löschen).
-
Thread
Unklarheiten bei einem C Programm
Bwiwrkt beides dasselbe, ich weiss auch nicht was das soll. Falls der Programmierer lediglich das Bit vom dem if Statement wieder auf 0 setzen wollte, hat er es falsch gemacht, er setzt alle Bits auf null. Womöglich wollte der Programmierer folgendes: [c] if(ACSR & (1<<ACO)) { PORTC |= (1<
konfiguriert werden sollte, hätte er DDCR statt PORTC schreiben sollen. Wollte er einfach Bit0 auf high setzen, hätte er besser PC0 statt DDC0 geschrieben. */ PORTC |= (1<<DDC0); } else{ /* Wie schon Vorredner geschrieben: gewiss wollte der Autor
-
Thread
RGB Tastenfeld in 5x4 Sonderform
while(customKeypad.available()){ keypadEvent e = customKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == KEY_JUST_PRESSED) { Serial.println(" pressed"); uint8_t row = e.bit.ROW; uint8_t col = e.bit.COL; Serial.print("Row: "); Serial.print(row);
while(customKeypad.available()){ keypadEvent e = customKeypad.read(); Serial.print((char)e.bit.KEY); if (e.bit.EVENT == KEY_JUST_PRESSED) { Serial.println(" pressed"); uint8_t row = e.bit.ROW; uint8_t col = e.bit.COL; Serial.print("Row: "); Serial.print(row);
-
Thread
Zufrieden mit Syntax-Highlighting?
[vhdl] architecture EXAMPLE of SLICES is signal BYTE : bit_vector (7 downto 0); signal A_BUS, Z_BUS : bit_vector (3 downto 0); signal A_BIT : bit; begin BYTE (5 downto 2) <= A_BUS; BYTE (5 downto 0) <= A_BUS; -- wrong Z_BUS (1 downto 0) <= `0` & A_BIT; Z_BUS <= BYTE (6 downto 3); Z_BUS (0 to 1) <= `0` & B_BIT; -- wrong A_BIT <= A_BUS (0); end EXAMPLE; [/vhdl] Wird noch optimiert.
-
Thread
Warum "uint8_t" statt "char" Gesperrt
#3021859: > Ich schreibe uint8_t, weil ich die Trivialnamen hasse. Man sieht sofort, > dass das 8bit sind. mf Da setze ich noch eine drauf. Ich benutze bei uC nie die Namen mit "_t", sondern nur U8, S8, U16 ...
einem einzigen Programm plötzlich 4 verschiedene Namen plus "int" für eine vorzeichenbehaftete 32-Bit-Ganzzahl. _Das_ ist unleserlich... _t schrieb im Beitrag #3022124: > Da setze ich noch eine drauf. Ich benutze bei uC nie die Namen mit "_t", > sondern nur U8, S8, U16 ... ... dankeschön. Hoffentlich
-
Thread
STM32 EXTI Pin auf 0 setzen?
Hi, ich habe glaube gerade ein Verständnisproblem. Ich arbeite mit einem ADS7843 Touchscreen-Controller, dessen #PENIRQ Ausgang mit einem EXTI-Pin verbunden ist. Der #PENIRQ Pin am ADS7843 hat auf dem Display-Board einen 100k Pullup. Wenn ich nun nur eine Interrupt-Routine habe, in der *nicht* ausgelesen wird, dann funktioniert das soweit auch. Wenn ich nun den Chip auslese, dann werden gleich ganz viele wirre Interrupts ausgelöst, egal ob in main() oder ISR ausgelesen wird. Der #PENIRQ Pin ist intern über eine Diode an einem der analogen Eingänge. Wenn da nun gemessen wird und die