-
Thread
Analogmux am µC - was läuft schief?
PINA3)); Port A hat also immer auf P1..P2 eine 0. Du setzt sie nie auf 1 Mit &= kannst du keine Bits setzen nur löschen.
#3413813: > Port A hat also immer auf P1..P2 eine 0. Du setzt sie nie auf 1 > Mit &= kannst du keine Bits setzen nur löschen. das stimmt, ich lösche die bits, damit für Y0 am Port eine 0b000 anliegt, für Y1 lösche ich alle bis auf PinA1, das setze ich ja danach mit |= Alex schrieb im Beitrag #3413732
-
Thread
PAL Kopieren
ausgangszustand++){ for (int n = 0; n < 10; n++){ //for-schleife um ausgänge zu setzen if (bitRead(ausgangszustand,n) == 1){ //ausgänge setzen wenn bin wert an stelle n=1 ist digitalWrite(ausgange[n], HIGH); } else{
Wincupl formatierte ausgabe Serial.print("/t'b'"); for(int i = 0; i<10; i++){ //jedes bit einzeln schreiben Serial.print(bitRead(ausgangszustand, i)); } Serial.print("/t=>/t'b'"); for(int i = 0; i<8; i++){ //jedes bit einzeln schreiben Serial.print
-
Thread
PIC 18F2550 Interrupts in C18
LATA0 > gemacht. Habe RA0 nur jetzt im letzten versuch probiert. Ich meinte damit: Konntest Du Bit 0 von Port A setzen, so dass Du am Pin des Controllers ein logisch 1 Signal messen konntest? Also hat das Setzen eines Pins funktioniert? Dies im Hauptprogramm, nicht in der ISR. > Öhm ja, aber
} } void main(void){ TRISA = 0x00; LATA = 0x00; TRISB = 0xFF; T0CONbits.T08BIT = 0; T0CONbits.T0CS = 0; T0CONbits.PSA = 0; T0CONbits.TMR0ON = 1; INTCONbits.TMR0IE = 1; INTCON2bits.RBIP = 1; INTCON2bits.INTEDG0 = 1; INTCONbits.GIE = 1; while(1
-
Thread
8051 Chip für Einstieg
also keinen extra Programieradapter. Im PLCC-44 kann man ihn auch bequem auf eine Rasterplatine setzen.
Via ICP/ISP/IAP zu programmieren 2-Takter mit 18MHz, 8k Flash, 256+512Byte RAM, 512Byte EEPROM, 8Bit DAC + ADC, 23Bit Timer, I²C, 2,4-3,6V !, kann LEDs direkt treiben, uvm. Gerne habe ich mit dem SAB80C535/7 gearbeitet - aber den gibt es ja nicht mehr ... Gruß Jobst
-
Thread
FPGA dazu geeignet?
Mehmet K. schrieb im Beitrag #4997560: > Was ich braeuchte: > - 32-bit I/O tri-state faehig (Bus) > - 12-bit Inputs für Adress- und Steuer-Signale Wieso ein 32 Bit Bus für nur 64 IO? Ich würde da eher auf eine parallele SPI Schnittstelle gehen, so wie bei SD Karten
RS485-SPI Kombination: http://www.deathbylogic.com/2014/10/spi-over-long-distances/ Wieviele bits brauchst du pro Ausgang? mit 1/0/Tri sind 2 Bit notwendig. Wenn du dann noch pro 128 bit eine 16 Bit Prüfsumme mitlieferst pro Ausgangsmodul wärst du bei 2304 Bit pro Testmuster. Bei 512 Kbit/s hast
-
Thread
Suche TTL-Logikschaltung (Datumslogik)
jetzt mal davon aus, dass dur nur das Datum anzeigen willst. Brauchst Du: Einen Zähler 0...31 (5 bit) Einen Zähler 0..12 (4 bit) Einen Zähler 0..2048 (11bit) Also bestenfalls 4 8bit Zähler die man auch preloaden kann sonnst wird das mit dem Jahr lange dauern bis Du das nach einem spannungsverlust
6A66 schrieb im Beitrag #3513421: > Einen Zähler 0..2048 (11bit) Dafür benötigt man 12 Bit. Mit 11 Bit kann man höchstens einen Zähler 0..2047 realisieren.
-
Thread
Heatronic 3 Adapter (Junkers Heizung) fuer Raspberry Pi
lauffähig oder nicht. Eins der Details ist z.B. das Polling-Byte des Bus-Masters: bei Buderus ist Bit7:=1; bei Junkers ist Bit7:=0, das Gerät antwortet bei Buderus mit Bit7:=0; bei Junkers mit Bit7:=1. (Wie gesagt: gleicher Stall, physikal Layer seriell, asynchron, 9600 8N1; klar der Rest soll ja nicht
Hallo Nils, > Hab ich in einer Konfiguration ggf. was vergessen zu setzen? Dein Heizsystem hat zwei Heizkreise, somit musst Du die Anzahl der Heizkreise im Konfigurations-File entsprechend setzen: <anzahl_heizkreise>2</anzahl_heizkreise> Weiterhin VERMUTE ich das
-
Thread
ATmega mit mehr Leistung?
> Min. 10 ADC Kanäle mit min. 11 Bit Auflösung bei 5V. Schlecht und schon verloren. Der ATMega kommt über 10 Bit nicht hinaus.
so schnell ändern wie das LCD-Panel erlaubt, es entfallen alle Wrapper für den externen Bus, das Setzen eines Pixels ist äquivalent mit dem Schreiben von 24bits in den RAM (1 Speicherzugriff) - Wahrscheinlich auch noch geringster Preis - externer Controller entfällt, SDRAM ist billig Das funktioniert
-
Thread
Wenige 100kb aber alles drin?
habe es noch mit Visual Studio 2022 ausprobiert: Läuft. Allerdings hat die statisch gelinkte 32 Bit Version statt 28 kByte 74 kByte. Die dynamisch gelinkte 32 Bit Version hat dafür gerade mal 12 kByte. Mit dem 64 Bit WinDDK 7.10 Compiler - der mit der alten MSVCRT linkt - hat die statisch gelinkte 64 Bit Exe 41 kByte, und die dynamisch gelinkte 9 kByte. Gruss, Udo
-
Thread
Bitmanipulation in C# Programm (Visual Studio)
); // Setze das erste Bit } [/c] Kann man das ganze irgendwie casten auf 8Bit?
{ cmd &= (byte) ~(0x03); // Loesche die ersten beiden Bits cmd |= (byte) (0x02); // Setze das zweite Bit }[/c]
-
Thread
Nochmal Frage zum Assemblerporgramm ATmega16
schieb > eine Abfrage > CPI schieb, 0b11111111 > sinnig oder unsinnig wird. > Stichwort carry-bit... Drum sagte ich auch, dass es Zufall ist, dass sein Programm funktioniert. Die 'warten' Subroutines setzen das Carry Flag. Ich brenn das ganze jetzt mal in einen Mega16. Eine Frage noch
sagte ich auch, dass es Zufall ist, dass sein Programm >funktioniert. Die 'warten' Subroutines setzen das >Carry Flag. Nein, tun sie nicht. DEC beeinflusst kein Carry-Bit. Dafür gibt es SUBI.
-
Thread
Schritt für Schritt zum Programierer!
r18,8 L2: sbrc r16,0 rjmp OFF rjmp ON ON : sbi portb,1 rjmp BitD OFF: cbi portb,1 rjmp BitD BitD: ldi r17,38 D5: dec r17 brne D5 lsr r16 dec r18 brne L2 cbi PORTB,1 ldi
Bitposition nach rechts geschoben. Na wenn das nicht damit zusammenhängt, dass weiter oben abhängig vom Bit 0 ein Ausgang gesetzt wurde. Mal logisch überlegen. Durch das rechtsschieben kommt jetzt das ursprüngliche Bit 1 an die Position von Bit 0 und der Codeteil weiter oben würde abhängig von dem Wert an
-
Thread
Heizungssteuerung Trovis 5575 auslesen
C06/F03 = 1 Station (PA6) = 10 Einstellung am Laptop: Schnittstelle (COM) auf kleine Zahl setzen (COM3) Einstellung in Trovis View: Schnittstelle setzen Direkte serielle Schnittstelle Station setzen Baudrate 19200 Damit klappt es! Nächster Schritt ist die Verbindung unter Python vom
Danke, probiere mal mit nem kürzeren Kabel. Die 8+1 bit verlangen wohl nach 9 bit Einstellung bei bestimmter Software? danke
-
Thread
Setzen des GIE-Bits nach EEPROM Schreibvorgang (PIC18F4550)
obengenannte Zeile streiche, funktioniert alles einwandfrei. Es kommt für mich aber nicht in Frage, das Setzen des Bits dem USB-Framework zu überlassen. Fällt euch etwas auf, das falsch ist / sein könnte ? Grüsse Toubi
dem Steckbrett und benutze die Interrupt-on Change PINs an PB4 u.5. Wenn ich vor der ISR das GIEH bit setze, verschwindet es während des Interrupts und wird nicht wieder gesetzt. Ich muß es in der main loop permanent setzen. Ich kenne dieses Phänomen vom alten 452 nicht. Auch n Ding.
-
Thread
32Bit Variable Abfragen geht nur bis BIT 15, was läuft hier falsch?!
c] Das klappt genau bis Bit 15, danach ist Feierabend. Wo liegt mein Fehler?!
. EDIT: Ich habe es jetzt doch. Ich dussel habe nur in der Abfrage den 32-Bit Cast gemacht, aber nicht beim Setzen des Bits. Jetzt geht es! Danke! Bei sowas wäre das klug, wenn der Compiler das bemerken würde. Tricky Falle!
-
Thread
PWM Erzeugung mit ATTiny25 mit fester Auszeit
Modus bei dem man den Top-wert einstellen kann? (beim atmega48 wären das z.B. Mode 5 oder 7 bei den 8bit-Timern)
Das GTCCR Register habe ich bisher nicht beachtet. Diese Bits stehen also auf "0". Grüße Karsten
-
Thread
DCF77 Uhr in C mit ATtiny26
Teiler für Timer0 auf 256 reduziert. Um die Toleranz zu erhöhen habe ich die beiden Zeitgschranken zum Bit erkennen jeweils um +1 und -1 vergrößert. Die Hauptschleife besteht nur aus ein paar if Abfragen zum Port setzen und andschließendem aktivieren des Idle Modus des Controllers.
Der Gedanke ist: Timer0 Frequenz = 1024Hz; Das DCF Signal nur in jedem 16. Durchlauf prüfen. (8Bit Variablen) Zum Verständnis "richtigerweise" müßte doch die DCF77 Abfrage nach dem setzen von TCNT0 geschehen. Ich sehe ein das die paar Takte um das dcf Signal abzutasten an der Genauigkeit so gut
-
Thread
Spannungsmessung ADC
Danke ich habe es mir durchgelesen.Ich habe bis jetzt nicht ganz verstanden warum ich ein ADSC Bit brauche. Kann ich diesen Bit (Bit 6) auf Null setzen?
Vielen dank für die Antwort. Heißt das, (2.) wenn ich den Bit 6 im ADSCR Register nicht setze (ADSC=0), keine Messung vorgenommen wird. Muss ich immer diesen Bit setzen (ADSC=1)?
-
Thread
China SUPER Bauteile-Schnäppchen Thread
mir keinen LWLA1016 (z.B. ebay 310682715636) für 86€ kaufen > sollen. :-( naja, der hat aber 16 Bit und nicht nur 8 Bit.
2 x 8 Bit, also wäre ein 8-Bit µC auch nicht von Nachteil. Datenblatt: http://read.pudn.com/downloads91/sourcecode/others/348230/e61505_103a.pdf
-
Thread
8051 & Seiko L2432 mit HD44780A00 Chip
BIT LCD_Port.3 ;LCD_D5 BIT LCD_Port.2 ;LCD_D6 BIT LCD_Port.1 ;LCD_D7 BIT LCD_Port.0 ;LCD_buffer
hoffe dir ist schon klar das man pro Datenbyte/Befehl das High und Low- nibble senden musst. Also im 4-Bit-Modus. Und jweils dann das Enable setzen und wieder rücksetzen. Das Busyflag würd ich jetzt als Anfänger noch nicht abfragen, weil wenn die Busyflagabfrage nicht richtig funzt bleibt der µC in dieser
-
Thread
Bei lcd-lib nur PD2-PD7 verwenden
4 bit modus und einen shift-operator beim LCD-PORT define.
ich schon... [c]... LCD_PORT |= temp1; // setzen ... LCD_PORT |= temp2; // setzen [/c] mfg ;)
-
Thread
16-Bit Timer ATmega16 Problem bei Compare Match Betrieb
Dann lass das doch nicht den Hardwarepin des OCA1 machen, sondern setz/lösche den Pin doch gleich in der Interruptroutine. Vorteil du kannst jeden Pin nutzen und bist flexibel. 0. externen takt auf TCNT1 geben 1. TCNT1 < OCR1A ? ja Int löst aus setze mit 2. fort nein mache weiter Hauptprogramm oder sonst was 2. Int OCR1A löst aus, PinY, X setzen/löschen 3. Setze Programm fort bevor der Int ausgelöst hat und warte wieder auf INT OCR1A
-
Thread
unsigned long in gepackte BCD Zahl konvertieren
Ended * *Paramter: keine *Rückgabe: keine */ void init_ADC(){ ADMUX|=(1<<REFS0); //Das Bit 6 des ADMUX Registers auf 1 setzen (Interne Spannungsreferenz 5V) ADMUX&=~(1<<ADLAR)|(1<<MUX4)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0); //Die Bit's 5 bis 0 des ADMUX Registers auf 0 setzen (ADC0
Ended * *Paramter: keine *Rückgabe: keine */ void init_ADC(){ ADMUX|=(1<<REFS0); //Das Bit 6 des ADMUX Registers auf 1 setzen (Interne Spannungsreferenz 5V) ADMUX&=~(1<<ADLAR)|(1<<MUX4)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0); //Die Bit's 5 bis 0 des ADMUX Registers auf 0 setzen (
-
Thread
[PIC] Assembler Problem Sprungtabelle in Externer ASM Datei
Habe Problem Sprungtabelle in Externer ASM Datei [code] movf STATE,w addwf PCL,f goto ReadBit_01 goto ReadBit_02 goto ReadBit_03 goto ReadBit_04 goto ReadBit_05 [/code] Laut Disassembly beginnt der Code an 44A. Das Programm springt aber immer in einen Adressen Bereich von 000 bis 0FF
Fall müsste das 0x04 sein. [code] movlw 0x04 movwf PCLATH movf STATE,w addwf PCL,f goto ReadBit_01 goto ReadBit_02 goto ReadBit_03 goto ReadBit_04 goto ReadBit_05 [/code] Dann sollte er auch an die Richtige Stelle springen.
-
Thread
[STM32] CMD0 liefert immer 0xFF zurück
in der LIB bzw. der stm32f10x.h, quasi eine Geschmacksfrage: Im jeweiligen BSRR sind die unteren 16 bit für das Setzen und die oberen 16 bit für das Rücksetzen des jeweiligen bits zuständig. Also kann man alles mit dem BSRR machen und braucht das BRR gar nicht. Die Unterscheidung erfolgt über die defines [c] #define GPIO_BSRR_BS12 ((uint32_t)0x00001000) /*!< Port x Set bit 12 */ #define GPIO_BSRR_BR12 ((uint32_t)0x10000000) /*!< Port x Reset bit 12 */ [/c]
-
Thread
8051 Bit Befehl durch Byte Befehl ersetzen
löschen tust du so: ANL A, #11111001b //Bit 1 und 2 gelöscht und setzen so: ORL A, #00000110b //Bit 1 und 2 gesetzt Dabei bleiben alle anderen Bits im Akku unangetastet.
Bit setzen mir ORL x,1 Bit löschen mit ANL x,0
-
Thread
AP7000 und ICnova ADB1000: Bisschen wenig?
> oder wenn das LCD 24 bit emuliert Wie ich oben schon ausgeführt habe: Die müssen sich bei IC-Nova in dem Datenblatt geirrt haben. Da ist nichts mit 18bit! Beide Displays, die sie dort aufführen sind 24bit RGB Displays
64MB Mobile SD-RAM (32-Bit) 256MB NAND-Flash (8-Bit) 1MB NOR-Flash (16-Bit) • In mtdblock0 liegt der Linux-kernel • In mtdblock1 liegt das Root-Dateisystem • mtdblock2 ist z.Z. unbenutzt
-
Thread
PC8583 max Jahr oder doch was anderes?
RTC nehmen (2) pluss die bits die man intern hat (3?). Daraus baut man halt den 5 bit wert. Wieso 5 bits? Wieso dann nicht 8? Oder nur 4? Ich meine bei einer 8 bit controller, wer würde dann aus einer byte dann nur 5 bits für
Ergebnis im RAM (0x89..0x8C) MSB Jahr (6 Bits) Monat (4 Bits) Tag (5 Bits) Stunde (5 Bits) Minute (6 Bits) Sekunde (6 Bits) LSB [/code] Mit dieser Zeit (RAM 0x89..0x8C) wird an vielen Stellen im Code
-
Thread
Frequenzmessung mit MSP430 im LPM3
Pin 1.4 funktioniert aber der Vergleich mit CCR1 und CCR2 wohl noch nicht. Muss ich denn das CCIE Bit setzen um im TAIV Register die Flag zu sehen? Wenn ich das mache scheint der Pin-Interrupt nicht mehr zu funktionieren?! Kann man man den Timer einfach mit [c] TA1R = 0 [/c] "reseten" oder muss man
// ACLK + Continuous Mode TA1CCR1 = minPeriod; // Compare-Wert setzen TA1CCR2 = maxPeriod; // Compare-Wert setzen _BIS_SR(LPM3_bits + GIE); // LPM3 und globale Interrupts aktivieren } #pragma vector=PORT1_VECTOR __interrupt
-
Thread
[STM32] HAL vermeiden?
es erstmal läuft. Die Feinheiten kann man dann ändern, wenn es nötig ist. Noch viel Spaß beim Bits und Beits zertreten....
Reset abgeschmiert. Auf der Suche nach der Lößung bin ich dann im RefMan auf das hier gestoßen: > Bits 12:10PPRE1: APB Low speed prescaler (APB1) > Set and cleared by software to control APB low-speed clock division factor. > Caution:The software has to set these bits correctly not to exceed 42 MHz
-
Thread
Solarsteuerung mit MSP430F436
Noch einer schrieb im Beitrag #3791787: > Bleibt die Frage - einfache Platine in Gang setzen und umbauen oder eine > neue Platine mit ADC, SD-Karte und USB kaufen? genau. Ist die Frage was am einfachsten ist. > einfache Platine in Gang setzen und umbauen es ist halt kein Schaltplan
10 bit ADC heißt 0.6° bis 70 grad und danach 1.5° reale Auflösung. Kann natürlich auch noch optimiert werden. Dies ohne opv. Für eine Solaranlage reicht dies locker. Mit 16bit timer schafft man es besser
-
Thread
16 bit Mikrocontroller mit CAN
Nur so aus Neugier: womit sind denn die 16Bit-Prozessoren begründet?
auf "viel rechnen" für größer 8-Bit. Peter
-
Thread
put Pixel für dotmatrix Display
nicht ganz wie ich den Displayspeicher auslesen soll, obwohl mir die Idee schon klar ist. Überprüfe 16Bit und merke wie die nicht zu setzenden 12 Bit belegt waren. Schreibe diese 12 Bit wieder und manipuliere nur die neu zu setzenden 4 Bit? Eine andere Idee wäre immer 3 Byte, also 24 Bit oder 6 Pixel
> ich den Displayspeicher auslesen soll, obwohl mir die Idee schon klar > ist. > Überprüfe 16Bit und merke wie die nicht zu setzenden 12 Bit belegt > waren. Schreibe diese 12 Bit wieder und manipuliere nur die neu zu > setzenden 4 Bit? > > Eine andere Idee wäre immer 3 Byte, also 24 Bit
-
Thread
Servo mit 16Bit PWM ansteuern
ich möchte ein Servo mit dem 16Bit Timer per PWM ansteuern. Dazu habe ich folgenden Code geschrieben. [c] #include <avr/io.h> #include <util/delay.h> #define F_CPU 1000000 // CPU-Frequenz = 1MHz (1 Clockzyklus
PWM, Top = OCR1A, Prescaler = 1 ICR1 = 19999; // compare match auf 19999 setzen while(1) { OCR1A = ICR1 - 800; // Servo nach rechts drehen _delay_ms(100); // 100ms warten OCR1A = ICR1 - 2200; // Servo nach links drehen
-
Thread
DOGM Display an STM32
GPIO_SetBits(LCD_CSB); // LCD_CSB = 1 // GPIO_SetBits(LCD_SCK); // LCD_SCK = 1 delay(500); // Wartezeit nach POWER-ON bis VCC stabil ist // Grundinitialisierung (SPI, wie im 8-Bit
// LCD_CSB = 1 GPIO_SetBits(GPIOA, GPIO_Pin_4); } // *********************************************************************** // Lِschen des LCD-Display // und Kursor auf Position 0,0 setzen // *************************
-
Thread
STM32 Sleepmode 24h, LSI und HSI zu ungenau
generiert), > das läuft durch einen Prescaler von 24000 (=23999), also 1000 Pulse pro > Sekunde, dann setze ich den Timer-Reload auf 999, somit habe ich einen > Timer-Interrupt pro Sekunde. Mach es noch simpler: Lass die PLL weg, die kostet nur Strom. Nimm als Timer den SYSTICK, der hat 24 Bit, damit
ich mit dem TIM16 auch, indem ich den Reload-Wert nicht auf 999 sondern > z.B. auf 998 oder 1000 setze. Der Fehler des HSI ist noch der gleiche. Der Unterschied ist, wie fein du den Fehler ausgleichen kannst. Mit dem TIM16 ist die kleinste Stufe 1/1000, ±86.4 Sekunden/Tag. Mit den 24 Bit vom SYSTICK
-
Thread
empfangen von Daten im Pic
Das Interupt-Flag wird durch lesen von RCREG gelöscht. Das ist richtig. Das Framing-Error Bit wird beim Lesen auch gelöscht, da lag ich eben falsch. Möglicherweise tritt ein Overrun ein, der muss dann durch die Software gelöscht werden (CREN löschen und wieder setzen). Sonst können keine Daten
Auszug aus dem Datenblatt: "RCIF is a read-only bit, wich is cleared by the hardware. It is cleared when the RCRREG register has been read and is empty." Ich setze den 16F628 ein. Daher kann ich die Richtigkeit bestätigen. Mir ist aber noch etwas
-
Thread
Bringt ein STM32 mehr?
schrieb im Beitrag #1666335: > Wer sagt, dass ich 0.02%-Widerstände nehme? Das sagt Deine Angabe: 12Bit. 2^12 = 4096 1/4096 = 0,0244% Bei schlechter als 0,02% sind Deine 12Bit nur ne Lüge. Peter
darueber im klaren sein welchen Wertebereich deine Variablen annehmen koennen. Ich hab das alles mit 16Bit Variablen gemacht die teilweise unterschiedlich skaliert waren. An dem Punkt ist natuerlich ein 16Bit oder ein 32Bit Controller einem 8Bit Controller ueberlegen. Ein weiterer Punkt ist natuerlich das
-
Thread
attiny usart Ende der Datenübertragung
Wenn du mit dem UDRE-Interrupt arbeitest, musst du vor dem > Senden jeder Zahl mit CR, LF das TXC-Bit löschen. > Sonst musst du vor jedem zu sendenden Byte das TXC-Bit löschen. > - Dann zeigt das TXC-Bit den AKTUELLEN Zustand. nein. Es muss es nur einmal auf 0 setzen, wenn er es abgefragt hat und
c-hater schrieb im Beitrag #5205506: > Man hätte statt dessen natürlich auch ein TCXRST-Bit in irgendeinem > zusätzlichen IO-Register definieren können. Man hätte es auch einfach logisch machen können, wie es z.B. beim 8051 der Fall ist. D.h. 0 setzen löscht das Bit, 1 setzen setzt es.
-
Thread
Debounce-Makro von Peter Dannegger - MSP430
MaWin schrieb im Beitrag #6228498: > #define T_SET BIT1 müsste dass dann icht BIT2 sein?
werden? z.B. P2IFG, als ob es ein Interrupt gab? und zweitens: for(;;){ > if( debounce( P2IN, BIT 2 ) ) > P2OUT ^= 1<<BIT 3; > if( debounce( P2IN, BIT 1 ) ) > P2OUT ^= 1<<BIT 4; das ist die Logik dafür, daas wenn ein Drücken erkannt wurde, etwas passiert?
-
Thread
MiniLA Version MockUp
-Signal, klassischerweise 8 bit und clock bei 27 MHz, mit inline-framing (bit-codiert). Oder alternativ dazu ein RGR565 (16 bit) plus sync (HSYNC, VSYNC, clock, evtl. DE). Konkreter Fall von zwei Monaten: Video-ADC, macht aus einem
man an die Ports auch einen ADC anschliessen und ein DSO draus machen? Das wäre doch der Hammer: 32 bit wären 4 Kanäle mit je 8 bit Auflösung!
-
Thread
while( ) >>> mit Bedingungen
Was spricht eigentlich gegen die Verwendung der Makros "bit_is_set" bzw. "bit_is_clear"? [c]bit_is_set(PINB, PB5)[/c] Könnte doch einige Verwirrung vermeiden. Und wenn man partout den Programmablauf unterbrechen will gibt es "loop_until_bit_is_set" bzw. "loop_until_bit_is_set".
-
Thread
Frage: 328p und Timer2/GPIO in assembler
mit dem Kehrwert des zu löschenden Bits verUNDen sts dummy, TCCR2A ; und wieder ins Register schreiben. ; zum gezielten Setzen im Register, ohne den restlichen Inhalt zu zermanschen lds dummy, TCCR2A ; derzeitigen Inhalt des
sollte, wie der Pin vorher stand :-) Naja, es ging ja explizit ums Toggeln. Wenn man ein einzelnes Bit direkt setzen oder löschen will, nimmt man halt 'SBI PORTx, b' bzw. 'CBI PORTx, b', damit geht es auch in einem Takt.
-
Thread
BME280-Modul mit Adresse 0x77 anstatt 0x76 (ohne selberfummeln)
und dem R/W-Bit zusammen setzt.
: "The 7-bit device address is 11011x. The 6 MSB bits are > fixed. The last bit is changeable by SDO value and can be changed during > operation" > > Und etwas weiter hinten dann die Fig. 9 mit den Bytes,
-
Thread
Atmega32 Timer mit CTC-Modus
Verdacht nicht los, dass da noch etwas fehlt. Im Datenblatt steht da etwas von einem "I-flag": • Bit 3 – OCIE1B: Timer/Counter1, Output Compare B Match Interrupt Enable When this bit is written to one, and the I-flag in the Status Register is set (interrupts globally enabled), the Timer/Counter1 Output
ist denn der Nachteil von volatile und was ist denn der atomare Zugriff? Im Tutorial ist der 8-Bit Timer mit Beispielen gut beschrieben, diese fehlen meiner Ansicht nach bei dem 16-Bit Timer. Solche Beispiele fördern einfach das Verständnis für die Anwendung der im Datenblatt einzeln erklärten Parameter
-
Thread
Ein DSP - aber 2 Multiplikationen. David Copperfield?
geringere Frequenzen geht das kompakter. Bei den hiesigen Zahlen sähe es so aus: a*b als 10 Bit in LUT: 111 a*a als 10 Bit in LUT: 90 a*b als 16 Bit in LUT: 292 a*a als 16 Bit in LUT: 261 a*b als 24 Bit in LUT: 626 a*a als 24 Bit in LUT: 575 Gilt für 100MHz mit einem Wrapper, dass
sein sollte. Das kriege ich aber aus der Xilinx-Synthese momentant nicht raus: a*b*c*d mit 16 Bit = 64Bit : 1876 LUTs a*a*a*a mit 16 Bit = 64Bit : 1843 LUTs Beides über physische Resynthese.
-
Thread
Timer 1 OC1A Pin taktet nicht (ATtiny841)
Hallo, nochmal. Eigentlich steht im Tabellenkopf TOCCnSxx. xx steht für ... Bit1 Bit0 Jetzt lese ich in der Spalte für OC1A oben "01". Heißt für mich Bit 0 muß auf 1 gesetzt werden. Ist aber falsch, dann taktet nichts. Setze ich alles auf 0 taktet es wie gewünscht. Kommt
ich in der Spalte für OC1A oben "01". Genau. Du musst also TOCC5S1:TOCC5S0 in TOCPMSA1 auf 01 setzen. Beachte: das sind nicht Bit 0 und 1 in diesem Register, sondern die Bits 3 und 2!!! Zusätzlich musst du auch noch TOCC5OE in TOCPMCOE setzen. Also kommen für das Mapping folgende Anweisungen raus
-
Thread
Comparator Attiny841
Noch ein Hinweis: Es reicht nicht, nur Bits zu setzen wenn einige auch gelöscht sein müssen (z.B. ADMUXA, ACSR1B, ...).
Die Register die bereits auf 0 stehen brauche dabei nicht zu ändern. > Meinst du das? Nein. Bits, die du auf 0 haben möchtest (z.B. MUX0), musst du auch auf 0 setzen - mit |= geht das nicht. Der Unterschied zwischen: [c] ADMUXA |= (1<<MUX5)|(1<<MUX4)|(1<<MUX2); // MUX0/1/3 unverändert
-
Thread
LED-Cube / LED's werden ungewollt gleichzeitig angesteuert.
über Hex- oder Binärzuweisungen, nur wenn ich nur ein Bit manipulieren will, dann wiederum mache ich das gerne über OR und AND auf das entsprechende Bit, dann sehe ich auf einen Blick was da los ist (und veränder im Zweifelsfall nichts an den sonstigen Bits
1 am zugehörigen Portausgang) und zusätzlich > nur einen Portausgang (für eine LED) auf log. 1 setzen, alle anderen > Portausgänge log.0. Genau das mache ich ja auch. Da liegt ja der Hund begraben, dass OBWOHL ich nur zwei Pins aktiv setze, sprich einen Transistor und eine LED ansteuere, trotzdem
-
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]