-
Thread
MSP430 PIN-Abfrage immer True
Zeile: >P1SEL &= ~BIT1 + ~BIT2; // P1.1/.2 Selected sicherlich möchte der TO hier die beiden select-Bits auf Null setzen, aber: BIT1: 00000010 ~BIT1: 11111101 BIT2: 00000100 ~BIT2: 11111011 11111101
USB-Verbindung über einen 1k Widerstand. wv schrieb im Beitrag #3822359: > Die Interrupt-Enable-Register-Bits braucht man auch nicht setzen, da > hier die Interrupts garnicht mit einer Interrupt-Routine behandelt > werden, es wird ja nur der P1IN in der Hauptroutine abgefragt, das hat > mit Interrupts nichts
-
Thread
Problem mit Pollin Board, ATMega16 und USB - Seriell
einfach mal das Test-Programm aufzuspielen. Ich kann aber nicht einmal über Edit ==> Modify Security Bits die Fuses setzen, da der Punkt "Modify Security Bits" nicht vorhanden ist. Soll ich vllt. statt dem USB ==> Seriell eine interne PCI ==> Seriell Karte probieren? Besser wäre es für mich natürlich mit
gast schrieb: > Ich kann aber nicht einmal über Edit ==> Modify Security Bits die Fuses setzen, da der Punkt "Modify Security Bits" nicht vorhanden ist. Das liegt daran, dass Du noch keinen Chip unter Device ausgewählt hast.
-
Thread
LCD Ansteuerung im 8 Bitmodus
8 bit Modus ist nur was für Leute, die in C programmieren können. Alle anderen, zu denen ich mich auch zähle, nehmen den bewährten 4 bit Modus.
LCD_PORT |= (data>>(4-LCD_DB)); // Bits setzen lcd_enable(); } //////////////////////////////////////////////////////////////////////////////// // Initialisierung: muss ganz am Anfang des Programms aufgerufen werden. void lcd_init
-
Thread
Suche besseren C-Code
ist mir Michael noch zuvor gekommen...:) Die Lösung sieht aber auch etwas anders aus. Falls nur 11 Bit zum Auslesen sind, dann reicht eine 16-Bit-Variable. Je nach Hardware müsste man vor dem Setzen von PinClk die Daten zuerst auslesen. Kenne das Verhalten Deiner Hardware aber nicht. Je nach Compiler
Man kann auch ohne Schieben auskommen. Angenommen, man möchte im Ergebnis Bit 0 setzen, wenn in der Quelle Bit 5 gesetzt ist: Data |= (Quelle & 0x20) ? 1 : 0; (oder für die Bitzählfreunde unter uns) Data |= (Quelle & (1 << 5)) ? 1 : 0; Wobei man sich natürlich
-
Thread
Digitales Potentiometer (Poti) AD8400 erwartet 10bit von ATMEGA128 über SPI
nur eine 8bit-Nachricht (SPSR) ausgeben kann, habe ich die Nachricht in 2x8bit aufgeteilt. In der ersten 8bit-Nachricht sind lauter NULLEN und in der 2ten-8bit-Nachricht der einzustellende Wert. Leider übernimmt
********************/ unsigned char poti_init = 0; // unsigned char poti_adress = 0b00;//0 in 8Bit //unsigned char poti_data = 0b11001100;//127 in 8Bit //unsigned char poti_adress = 0;//0 in 8Bit unsigned char poti_data = 25; //127 in 8Bit void SPI_MasterInit(void) { /*Set SS(PB0),
-
Thread
LCD 204B-NLW & AtMega32
programmed." Ich nehme mal an, dass man sich hier über den MCUCSR Fusebite hermachen und dort das bit JTD zu null setzen muss. In der Registerübersicht findet sich weiter folgendes: [code] Address | Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 $34 ($54) | MCUCSR
wirklich was zu tun. Alex44 schrieb im Beitrag #2225596: > Jetzt müsste ich eigentlich nur das Bit von der Addresse holen und das > Entsprechenden Null setzen. Nein, das Flag heißt nicht umsonst JTD ("JTAG Disable"). Du mußt es auf 1 setzen. Im Deinem angedeuteten Sourcecode ist es allerdings
-
Thread
TWI-Interrupt wird nicht aufgerufen
würde nicht mal etwas bringen, wenn dort ne 1 stehen würde, jedenfalls mit |=. Aber nochmals: Die Bits werden so gesetzt, wie ich es will. Die Frage ist jetzt: Setze ich die richtigen Bits für ein funktionierendes TWI?
Moin, [c] //Prescaler setzen TWSR = 0x02; //Bit-Rate setzen //für ~100kHz : 0x05 bei Prescaler = 2 TWBR = 0x05; //Start senden TWCR = (1<<TWINT) || (1<<TWSTA) || (1<<TWEN) || (1<<TWIE); [/c] damit sollte eine Start-Condition
-
Thread
Programmierung einer LED-Anzeige zu langsam
darüberodern? Eine Oder-Operation. Mittels PORTD |= ( 1 << PD0 ); würdest du PD0 auf 1 setzen. Mittels PORTD |= ( 1 << PD0 ) | ( 1 << PD1 ); würdest du PD0 und PD1 auf 1 setzen. Mittels PORTD |= MaskeD[Wert]; würdest du die Bits 0 bzw 1 auf 1 setzen, je nachdem ob sie
, wie ich das jetzt am > besten setze. Weil du hier Dinge kombinieren musst. 2 Grundtechniken (Bit setzen, Bit löschen) zu einer Einheit zusammenbauen.
-
Thread
PIC 10F202 I/O Problem
So, habe mir das Datenblatt angeschaut. 1. Musst du im Option-Register bit5 = 0 setzen (Timer Clock Source Select) => OPTION = 0b11011111; 2. Musst du im CMCON-Register (Comparator Control) bit3 = 0 setzen => CMCON = 0b11110111; Dann sollte es klappen...
Hallo Alex, ich habe deinen Ratschlag befolgt. Den Comparator kann ich aber nicht setzen, da der PIC 10F202 gar keinen besitzt. OPTION habe ich gesetzt, das gewünschte Ergebnis ist leider ausgeblieben. Muss ich vorher noch etwas an CONFIG-Bits setzen? Mein aktueller Quellcode:
-
Thread
Akku Spannung für 40W LED Lampe Kontrollieren
--------------------------- zu ADLAR: Wenn du ADLAR setzt und nur ADCH ausliest nutzt du nur 8 bit des Ergebnisses und dein höchster ADC-Wert ist 255. Wenn du 10 Bit (0..1023) willst setze ADLAR auf 0 und lese "ADCW" aus. //--------------------------------------------------------- void adc_setup
----------------------- >>zu ADLAR: >>Wenn du ADLAR setzt und nur ADCH ausliest nutzt du nur 8 bit des >>Ergebnisses und dein höchster ADC-Wert ist 255. >>Wenn du 10 Bit (0..1023) willst setze ADLAR auf 0 und lese "ADCW" aus. habe mir das mal durchgelesen, da steht ja so gesehen das man linksbündig
-
Thread
Zweite Zeile LCD Display
wenn Du im 4-bit-Modus bist, musst Du immer 2x4 Bit (HI-LO) übertragen, damit der Befehl komplett ist. Du übeträgst nur 1x 4 Bit. Steht alles bei sprut unter "Beispiel für eine Initialisierung mit 4-Bit Interface
Fussgänger ... Probier mal folgende Muster, damit initialisiere ich immer: b'00110000' ; 8-bit-interface b'00110000' ; 8-bit-interface b'00110000' ; 8-bit-interface b'00100000' ; 4-bit-interface b'00101000' ; 4-bit / 2-zeilig / 5x8 b'00000110' ; cursor increase, display shifted b'00001100
-
Thread
Probleme bei Programmierung von Lichtschranken-Stoppuhr
bereits geschrieben, wenn ich dir noch einmal erkläre, warum ich die Ports immer erst einlese, dann die Bits setze und dann wieder ausgebe, werd ich mich nicht an den vorgeschlagenen Code von Spess halten. [avrasm] ;*************************************************** ; Selektieren und ansteuern von 7 Segmentanzeigen
bei den externen Interrupts scheint noch irgendetwas nicht so richtig zu stimmen. Egal wie ich die Bits im Register MCUCR setze, INT0 wird nur ausgelöst wenn ich Masse an den Pin halte und INT1 wird nur ausgelöst wenn ich 5V daran halte. Das ändert sich auch nicht wenn ich die Bits in MCUCR auf steigende
-
Thread
Fusebits lassen sich nicht setzen (neuer ATMEGA328P)
arduino -P COM3 -b 115200 -p m8 Detected 1e950f = ATmega328P). Laut AVRDUDESS stehen alle Fuse-Bits auf 0x00. Soweit ich der Anleitung des Mega entnommen habe, sollten diese auf L 0x62, H 0xD9, E 0xFF und LB 0xFF stehen. Möchte ich diese jedoch programmieren, erhalte ich die Fehlermeldung: >>>
NEO_KHZ800); void setup() { strip.begin(); strip.setPixelColor(0, strip.Color(255, 0, 0)); // Setze die erste LED auf Rot strip.show(); // Anwenden der Änderungen } void loop() { // Nichts weiter machen }[/c] Data-Pin und Pixel sind angepasst, Übertragung läuft ohne Fehlermeldung.
-
Thread
STM32 BSRR Reset
Bit i+16 in BSRR auf 1, wird Pin i auf Low gesetzt. BSRRL ist das gleiche wie BSRR, aber als 16bit-Register definiert. Man kann also nur Pins setzen. BSRRH ist ein 16bit-Register mit der selben Adresse
definiert. Man > kann also nur Pins setzen. > BSRRH ist ein 16bit-Register mit der selben Adresse wie das obere > 16bit-Word von BSRR. D.h. wenn man Bit i in BSRRH setzt ist das exakt > identisch zum Setzen von Bit i+16 in BSRR, d.h. Pin
-
Thread
Erster Schaltungsentwurf - ATtiny Programming Board
JP5 -90 Grad drehen und rechts neben U1 setzen
C1, U2, JP2 zusammen 90 Grad drehen und unter JP1 setzen
-
Thread
PIC 16F628 Fehler im Lauflicht
wenn du den 1.er rausschiebst, das hast du nicht drinn. > > Durch den rlf schieb ich doch Alle Bits in der Speicherzelle um eine > Position nach links. Das Lauflicht läuft von Bit0 nach Bit7, dann kurz > Pause und es fängt wieder von vorne an. > Die Bitschiebebefehle (rlf und rrf) schieben zwar alle Bits nach links oder rechts, sie schieben aber auch immer das aktuelle Carry-Flag mit rein (bei rlf wird das Carryflag auf Bit0 geschoben, bei rrf auf Bit7). Gleichzeitig wird das Bit welches rausgeschoben
-
Thread
PIC12F675 GPIO-Ports
also eine Variable, die an Stelle des GPIO in Deiner Software genutzt wird. Alle Aktivitäten, also Setzen und Löschen von Bits erfolgen in diesem Schattenregister (Variable), die Du dann als ganze VAriable auf den Port schreibst. Somit werden IMMER alle Pins geschrieben. Ich habe seitdem nie wieder
MAIN bsf LATIO, 2 ;bsf GPIO, GP2 bsf LATIO, 4 ;Anstatt die Bits in GPIO zu setzen/löschen bsf LATIO, 5 ;werden die Bits im Data Latch gesetzt, movf LATIO, w ;und dieses anschliesend auf den Port geschrieben. movwf GPIO
-
Thread
Bit folge einlesen
= 0; BitIndex < 8; BitIndex++) { // Zu sendendes Bit ausmaskieren und prüfen ob es gesetzt ist if (MeinArray[ArrayIndex] & (0x01 << BitIndex)) { PortC |= 0x01; // Bit 0 setzen }
sein, ist ja einfach umgekehrt: [c] for (ArrayIndex = 0; ArrayIndex < 3; ArrayIndex++) { for (BitIndex = 0; BitIndex < 8; BitIndex++) { if (PortC & 0x01) { MeinArray[ArrayIndex] |= 0x01 << BitIndex; } else { MeinArray[ArrayIndex] &= ~(0x01 << BitIndex);
-
Thread
MCU mit 16 Bit DACs?
und von dem nur die oberen 16 Bit benutzen. Schon hat man das.
geschrieben. Ueber die "kapazitive Entkopplung" muss er sich keine Sorgen machen. Und er will 16 bit. Warum und wie auch immer. Wenn hier schon die Vorschlaege mit PWM (also 1bit) und Tiefpassfilter kommen, dann schlag' ich halt mal vor, 12bit Wandler zu nehmen und nur 4 bit per Filter dazuzumauscheln
-
Thread
Wer kennt sich aus mit Timern???
inc rjmp stop inc status ldi reg,0b00000010 ;Timer0 mit vorteiler 8 starten out tccr0,reg ;8bit Timer0 läuft reti stop: clr reg out tccr0,reg ;8Bit Timer0 anhalten in test,tcnt0 out tcnt0,reg ;Zählerregister auf 0-setzen dec status ;**************
auf 0-setzen Nicht das "out tccr0,reg ;8Bit Timer0 anhalten" tcnt0 löscht. mfg Uwe
-
Thread
<< -Verständnisproblem
, wird eine 1 um BitNo Stellen nach links verschoben. Das kann schon der Compiler und es wird kein ASM-Code zusätzlich erzeugt. Will man einige Bits in einem Register setzen, alle anderen rücksetzen, dann macht man das mit der Oder-Verknüpfung der einzelnen Masken: TWCR = Maske1 | Maske2 | Maske3 = (1<<BitNo1) | (1<<BitNo2) | (1<<BitNo3) Das weist dem ganzen Register neue Bitwerte zu! Nur einzelne Bits setzen ohne die anderen zu ändern: TWCR |= Maske1 | Maske 2 oder TWCR = TWCR | Maske1 | Maske2
-
Thread
[winavr] _delay_ms dauert zu lange
anderes als das was im Datasheet steht (Boot Loader../Self Programming.../Reading the Fuse...). Die 2 Bits setzen und innerhalb von 3 Takten das entsprechende Byte per LPM lesen.
_t ef = boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS); uint8_t lk = boot_lock_fuse_bits_get(GET_LOCK_BITS); } [/c] Grüße Oliver
-
Thread
keine Ausgabe am LCD mit ATmega32
in Ordnung (indem Du 3 statt 2 reinschreibst, wird auf 8 Bit statt 4 Bit gestellt).
Code versuchst, dann darf das keine Schwierigkeiten machen. Das ist eine Standardversion von: Das Bit LCD_EN1 am Port LCD_EN1_PORT auf 0 setzen. So was musst du auf Anhieb erkennen, wenn du kopfüber von einem Baum hängst, mit Honig eingeschmiert und Ameisen auf dir krabbeln. Ein Blick muss genügen.
-
Thread
AVR Timer 1 Normal/CTC Mode ?
genau verstehst du unter 'alles'? Die Pins werden nicht zurück gesetzt. Die hast du mittels COM Bits so eingestellt, dass sie vom Compare Match getoggelt werden. Und genau das machen sie auch. VOn eiem 0-Setzen bei Timer Overflow steht da nichts. Du liest Dinge aus dem Datenblatt heraus, die da
1 Overflow Interrupt PORTB &= ~(1 << 5); // Pin von A zurück auf 0 setzen, Port.B.Bit5 = OC1A PORTB &= ~(1 << 6); // Pin von B zurück auf 0 setzen, Port.B.Bit6 = OC1B // Pin von B zurück auf 0 setzen, Port.B.Bit7 = OC1C OCR1A = 16384;
-
Thread
Picoboard, Arduino, Gpio / Port direkt per Register-Zugriff steuern?
geht das so?: 0x40014000 = 0x1000 //bit13 setzen, Dann ist GPIO0 als Ausgang definiert :-D ?
Epi K. schrieb im Beitrag #7401091: > geht das so?: > > 0x40014000 = 0x1000 //bit13 setzen, > > Dann ist GPIO0 als Ausgang definiert :-D ? Nein. So aber vielleicht: *((unsigned int *)0x40014000) = 0x1000; Wenn da wirklich ein Register liegt die auch mit 32 bit beschreibbar
-
Thread
vb.net RS232 Protokoll
RICHTIGEN Steuerbits. Bei dir fehlt z.b. die PARITY Was bedeutet : Grundsätzlich werden immer 10 !!! Bits übertragen. 8 echte, ein Prüfbit, und ein Stopbit. Das Paritybit entscheidet ob die Anzahl der 1 er Bits gerade oder Ungerade ist. Bei gerader Parity und ungerader Anzahl der 8 Bits wird das Prüfbit
und mach direkt in Button1_Click nach dem /Write/ ein /ReadByte/ (Timeout des SerialPort auf 1sec setzen).
-
Thread
Elektronik Lager und die vielen Kisten (Verwaltung)
Problem liegt an der 64-bit Version von linux, werde das gleich noch auf einem 32 bit system testen. Vielleicht hat ja jemand schon eine Idee. Gruß Peter
Wenn Du einfach die libmysqlclient.so*** Datei vom 32-Bit System in das 64-Bit System nach /usr/lib64/ kopierst? Ist zwar eine 32-Bit DLL, aber der Linux-EXE sollte das egal sein.
-
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
Kleines Tiny13 Sensorboard
hinaus bis kurz vor der nächsten LH-Flanke gültig. > - das Telegram ist wie folgt zu codieren (die Bits sind im Folgenden > durchnumeriert, 0-23. Das Telegram soll MSB first ausgegeben werden) > - Bits 23-14: AINP-CHANNEL1 > - Bits 13- 4: AINP-CHANNEL2 > - Bit 3: DINP1-LOW > - Bit
- Bit 16 - 17: AINP-CHANNEL1, höherwertige 2 Bits - Bit 18 - 19: AINP-CHANNEL2, höherwertige 2 Bits - Bit 20: DINP1-LOW - Bit 21: DINP2-LOW - Bits 22-23: Checksumme über das Datentelegram
-
Thread
Timmer Interrupt zu langsam.
setzen INTCON2 = 0b00000000; // Interruptregister setzen //Timer 0 Konfiguration + Starten T0CON = 0b11000000; return 0; // Rückgabewert (void
= 0x00; // PORT C auf Null setzen LATC = 0x00; // PORT C Latchregister auf Null setzen // TIMER-INTERRUPT konfigurieren INTCON = 0b11100000; // Interruptregister setzen
-
Thread
Hat schonmal einer ein Opel TID ->erfolgreich<-angesteuert ?
die Bits 1-7 sind die ASCII-Tabelle, Bit 0 ist das Parity-Bit. so hab ich das zumindest in Erinnerung.
Partity = 0 // Parität wird online berechnet BitCnt = 0 // Zähler für ausgegebene Bits WIEDERHOLE solange BitCnt < 7 // Die Bits 6-0 einzeln ausgeben RotateLeft (ByteOut) // Das oberste Bit fällt raus und ist
-
Thread
ENC28J60 Basics[Beispielprogramm in AVRGCC für atmega8]
beschreiben dieses Registers rehalte ich immer nur den Wert 0x0 (iwe nach Reset) zurück. Gibt's da noch ein Bit, das ich setzen muss, um es beschreiben zu können? Was muss alles initialisert werden, um nur die LED's blinken zu lassen? Danke für die Hilfe.
ist, kann man im prinzip raus nehmen hier, ist bestimmt noch vom debuggen. Das SREG wird wegen dem I-Bit gesichert, damit man nach einem ISR-durchlauf wieder den alten zustand inklusive I-Bit hat. CA Dirk und THX
-
Thread
Echo HC-SR04 auswerten
rising Ereignisses aufgerufen wurde. Wenn RisingEdge: 1. Am Anfang zwischengespeicherten 16Bit Wert für Rising ( aus ICR1L und ICR1H) z.B. im SRAM speichern. 2. Ein StstusBit für RisingCaptureDone setzen 3. Umschalten auf FalingEdgeCapture hierbei nicht vergessen das ICF Bit in TIFR1 zu löschen
setzen 3. Umschalten auf RisingEdgeCapture. After a change of the edge, the Input Capture Flag (ICF) must be cleared by software (writing a logical one to the I/O bit location) 4. Prüfen ob TimerCounter
-
Thread
Atmega48PA RS232 Problem
Ich habe mal die Baudrate auf 4800 gesetzt und dasselbe auch in HTERM gemacht, anstatt mein U2X0-Bit in UCSR0A zu setzen. Aber trotzdem sendet mein Atmega nichts.
Nur die Geschwindigkeit ist auf 9600 Baud gedrosselt. Wenn ich dieses eine Bit setze, damit der Chip doppelt so schnell arbeitet, klappt das nicht, aber egal.
-
Thread
Interupt schaltet nicht alles ab?
zeitrelevante SChritte auswertest. Etwa so: Timer_ISR: Inc Zeitzähler Zeitzähler = 10 Setze Flag 10 msek Zeitzähler = 100 setze Flag 1/10 Sek Zeitzähler =1000 setze Zeitzähler zurück und setze Flag 1 Sek. Ende Interrupt Was macht nun das Hauptprogramm ? Hier noch einmal das
[avrasm] LDS r16, Prg_Ctrl ; Programmsteuerkontrolle ANDI r16, 0b00010000 ; Bit Verzögerung für Abschnit "x" starten ? BREQ Weiter_1 LDS R16,50 ; Verzögerungszeit setzen STS Zeit_Zaehler, R16 ; und im Zähler ablegen LDS r16, Prg_Ctrl
-
Thread
STM32 und ks0108-Display - keine Anzeige
NOP schrieb: > Wie lautet der Opcode für den 32-Bit nop ? 16bit: 0xBF00. 32bit: 0xF3AF8000, offiziell NOP.W
Bits drehen, dafür hab ich was: [c]// Bits drehen u32 revbit32(u32 uidata) { asm("rbit r0,r0"); return uidata; };[/c] der Assembler-Befehl rbit macht 32 Bit.
-
Thread
Double=16Bit?
, ich habe eine Frage zum Datentyp Double. Irgendwie habe ich früher angenommen, dass Double 16 Bit lang ist. Aber jetzt lese ich, dass double irgendwie 64 Bit lang sind! Warum funktioniert dann meine TWI-Kommunikation, indem ich 16 Bit versende und empfange und die Zahlen sind korrekt!
Wenn in einem 8-bit Kontext programmiert wird sind 16-bittige Doubles üblich. Bei einem 32-bit-System sinds dann eben 64-bit für ein Double. bye Frank
-
Thread
AtMega 48 Timmer
nächstes Element laden // Schleife über 6 Bit/Eingangsbyte for (bit_count_in=0; bit_count_in < 12; bit_count_in++) { if (byte_in & 0x0200) byte_out |= mask_out; // Prüfe Bit #12, wenn ja in den Ausgangsdaten setzen
nächstes Element laden // Schleife über 6 Bit/Eingangsbyte for (bit_count_in=0; bit_count_in < 12; bit_count_in++) { if (byte_in & 0x0200) byte_out |= mask_out; // Prüfe Bit #12, wenn ja in den Ausgangsdaten setzen
-
Thread
Pullup aktivieren in AVR-Assembler
funktioniert, aber ginge das mit Abfrage des bisherigen Status auch kürzer? Oder auch: kann man einzelne Bits da draussen ausserhalb von R16-R31 auch direkt setzen? lds r16,PORTB_PIN2CTRL sbr r16,8 ;Bit 3 für Pullup enable setzen sts PORTB_PIN2CTRL,r16 ;Pullup aktivieren PB2 Und weiter - Statusabfrage
Noch ein Tipp zur Schreibweise, einiges kann eindeutiger schreiben: [c]; alt sbr r16,8 ;Bit 3 für Pullup enable setzen ; besser sbr r16,(1<<3) ;Bit 3 für Pullup enable setzen [/c] Auch verwende ich sehr viele Macros, die die Arbeit im Code erledigen. Auch kann man über je ein Macro
-
Thread
DS18B20 1-Wire Implementierung - Timing-Probleme
Logik-Analyzer verwendet. Ich bin nun an einem recht frustrierten Punkt: Ich kann zwar den internen 64-bit ROM-Code auslesen (bzw. das was mir der Logic-Analyzer anzeigt sieht gut aus) - allerdings werden einzelne Bits falsch eingelesen (obwohl im Logic Analyzer alle 1er Bits bzw. 0er Bits identisch aussehen
Leben schwerer machst als nötig. Das einzig wirklich interessante Timing ist das eines einzelnen Bits.
-
Thread
Msys2 make und g++ nicht gefunden unter windows10
Alternativ kann die DLL in das zur ausführbaren Datei passende System-Verzeichnis kopiert werden. Bei 32-Bit-Binaries unter 64-Bit-Windows ist das %sysroot%\syswow64, bei 32-Bit-Binaries unter 32-Bit-Windows und bei 64-Bit-Binaries unter 64-Bit-Windows ist das %sysroot%\system32. Was ist eigentlich das
eingefallen das bestimmte Punkte mit Häkchen >> selektiert werden sollten. Aber ich habe keine Häkchen setzen können. ich glaube du verwechselst MSYS2 ständig mit den älteren 32bit Cygwin, Mingw Toolchains - die sind "einstellunglastiger" - bei MSYS2 gibt es gar keine Häkchen wenn du nicht unbedingt alles
-
Thread
uC Programmiertechniken - Gibt es da Bücher?
alle Routinen in der State Machine ab, Mehrfachdurchläufe erzeugen keine doppelten Sachen, zb das Setzen von Power/Off Bits für die Sensoren. Alles ist gegeneinander verriegelt, ON gibt es nur wenn vorher ein OFF da war usw. Fixkomma habe ich überlegt aber da wird man malle bei wenn man sowas durchziehen
relevant ist oder nicht, wird er zusätzliche Befehle einbauen müssen um > bspw. eine Zahl in einem 32-bit-Register auf 8 Bit einzuschränken. Ok, ich nehme Dich beim Wort. Wird zwar ne Menge Arbeit aber dann werde ich (fast) alles lokale auf "int" bzw uint setzen.... Ne Durchlauf Analyse mache ich derzeit
-
Thread
8x BCD-2-dec fuer 55 Outputs - Tabelle
Anwendung hat. Also im Klartext suche ich nach einer Tabelle wie sowas: um ausgang.1 auf 1 zu setzen -> A=1,B=1,C=0....F=0 um ausgang.20 auf 1 zu setzen -> A=0,B=0,C=1....F=1 um ausgang.55 auf 1 zu setzen -> A=1,B=0,C=1....F=1 usw. ewtl. hat es jemand schon in C implementiert, das waere noch
Michael Gromov schrieb im Beitrag #2414605: > um ausgang.1 auf 1 zu setzen -> A=1,B=1,C=0....F=0 > um ausgang.20 auf 1 zu setzen -> A=0,B=0,C=1....F=1 > um ausgang.55 auf 1 zu setzen -> A=1,B=0,C=1....F=1 Wesentlich einfacher wäre es, wenn du tatsächlich eine binäre
-
Thread
Scheduler für AVR
LCD_DB7); > lcd_enable_puls(); > } Was bitte ist das denn? Wer kommt hier auf die Idee jedes Bit einzeln zu setzen? [code]LCD_PORT &= 0x0F; // Pins low LCD_PORT |= data & 0xF0; //high Nibble setzen[/code]
Pins low > LCD_PORT |= data & 0xF0; //high Nibble setzen Nö, das geht nur bei eingeschränker Zuordung der Bits am Port.
-
Thread
Raspberry ADC 0-5V Input
Manfred schrieb im Beitrag #7259603: > Du musst den ADS1115 per Software auf einen Meßbereich setzen, das > können 256mV - 512mv - 1,024V - 2,048V - 4,196V - 6,144V sein. Bei > Deinen 3,3V Versorgung machen 4 und 6 V keinen Sinn, also 2,048V setzen. > Jetzt einen Spannungsteiler rechnen. Ich
wären eine effektive Auflösung von 12 Bit. Aus dem Datenblatt Tab.1 und 2 ergibt sich bezogen auf den Rauschlevel eine effektive Auflösung von 16 Bit. Sofern die Angaben im Datenblatt nicht gelogen sind, gibt es dann möglicherweise noch Luft
-
Thread
AVR-C Anweisungsreihenfolge NICHT dem Compiler überlassen..
Besonders wenn es nötig ist; ich weiß noch nicht genau: Muss ich jetzt in der main() cli() und sei() um >8bit-volatiles, die in der ISR benötigt werden, setzen? ..Damit sie nicht von der ISR zerpflückt werden? >Konsequenz: Beschäftige dich mit lockless queues o.ä. Werd ich mir anschauen, danke. Kennt
Priorität... Hans W. schrieb im Beitrag #5429872: > Muss ich jetzt in der main() cli() und sei() um >8bit-volatiles, > die in der ISR benötigt werden, setzen? ..Damit sie nicht von der ISR > zerpflückt werden? Ja, denn alles, was nicht inhärent atomisch ist, muss vor asynchronen Zugriffen geschützt
-
Thread
Kopieren von 64bit werten unterbrechbar?
habe einen Shared-Memory-bereich, der von zwei Programmen aus manipiliert werden kann. Es sollen 64 bit Werte in diesen Bereich geschrieben und gelesen werden. Die Frage die sich mir stellt: werden die 64 bit in einem Rutsch geschrieben/gelesen, oder 2x32Bit? Wenn 2 x 32 Bit geschrieben werden, ist der
diese intern in 2 64-Bit Zugriffe zerlegen, andere nicht.
-
Thread
LCD Ansteuerung im 4bit-Modus
Hallo, Ich hab eine einfache LCD-Routine für KS0070 und HD44780 LCD-Controller , welche im 4Bit Modus betrieben werden, geschrieben. Ich steuere damit einen 2 Zeilen Display mit jeweils 16 Zeichen an.
Wenn es auch ne dumme Frage ist, aber wo kann man den port und bit-nr. einstellen? ich find irgentwie nicht ;)
-
Thread
STM32 "SPI"-Slave 24 Bit ohne Chip Select
wurde. Im SPI_CR1 SSM auf 1 setzen (=SSI Bit = nCS) und SSI auf 0 (nCS LOW). Das Problem ist jetzt das Einrasten in die 24Bit Frames. Dazu muss man dann wohl wirklich einmal nen Timer starten und abtasten wielange da Ruhe ist auf
Mw E. schrieb im Beitrag #5945742: > Im SPI_CR1 SSM auf 1 setzen (=SSI Bit = nCS) und SSI auf 0 (nCS LOW). Mit dem Timeout den Chip Select beeinflussen. Die Idee klingt gut. Dann ist immer direkt alles richtig ausgerichtet. Als Timeout-Bedingung sollte die Bedingung
-
Thread
LED1 OK. aber LED2 blinkt nicht mit voller Helligkeit
DDRB = (1 << PB0); // Endlosschleife for (;;) { PORTB |= (1 << PB0); // bit im Portregister auf 1 setzen => LED leuchtet _delay_ms(100); // warten PORTB &= ~(1 << PB0); // bit im Portregister auf 0 setzen => LED aus _delay_ms(5000); // warten PORTB |= (1 << PB1); // bit im Portregister auf 1 setzen => LED leuchtet _delay_ms(500); // warten PORTB &= ~(1 << PB1); // bit im Portregister auf 0 setzen => LED aus _delay_ms(500); // warten