-
Thread
Probleme mit Aufgabe für Bitoperationen
Googeln nach c bits setzen löschen sollte weiterhelfen.
unsigned char Status = 0; ... [/c] hast du bereits die Speicherfläche für 8 Bit. Die Zuweisung von 0 sorgt einfach nur dafür, dass an dieser Stelle alle 8 Bits gezielt auf 0 sind. Du musst sie nur noch gezielt einzelne Bits auf 1 bzw. auf 0 setzen, bzw. entsprechend abfragen.
-
Thread
Unbenutztes Register im 8-Bit Atmel?
Es gibt ja genug Teilnehmer hier. Wenn jeder ein Bit auftreibt -- oder auch nur ein halbes, sind genug Leute hier --, dann haben wir rucki-zucki die erforderlichen 16 Bits zusammen! Ich fang mal an: Das T-Bit im SREG. Wird nicht gebraucht. Rede
rjmp-Sprungziel angeben, ...? > Ab 16 KiB Flash muss dafür ein > jmp verwendet werden, der 32 Bit braucht, demnach sind die Vektoren 2 > Words (32 Bit) groß. Also jetzt z.B. beim Atmega16 mit 16KB Flash? Aber da sind laut Datenblatt zwischen zwei Interruptvektoren doch auch nur 2 Bytes Platz
-
Thread
Bizarrer Firmware crash - ATmega4808. Wie Debuggen?
Niklas G. schrieb im Beitrag #8074088: > Nick schrieb: >> Setz mal den Stack hoch > > Hat das irgendeine Auswirkung auf dem AVR?! Eigentümliche Frage. Dadurch wird dann ein 57 Bit-Prozessor daraus? Oder wie willst du das interpretiert haben? Ersatzweise
Nick schrieb im Beitrag #8074096: > Eigentümliche Frage. Dadurch wird dann ein 57 Bit-Prozessor daraus? Oder > wie willst du das interpretiert haben? Was verstehst du überhaupt genau unter "Setz mal den Stack hoch" ? Ich schätze mal, im Linkerscript das Symbol für den minimalen Wert
-
Thread
AVR ATtiny26 - 3Channel PWM
== 0) { PWM_PORT = tmp; // Ports setzen zu Begin der PWM // zusätzliche PWM-Ports hier setzen pwm_cnt++; } else { PWM_PORT &= tmp; // Ports
das die Helligkeit repräsentiert, Also zum Beispiel: Bit 0 gesetzt -> 1 ms lang high Bit 1 gesetzt -> 2 ms Bit 2 gesetzt -> 4 ms ... Bit 7 gesetzt -> 128 ms damit kann man dann die Gesamtzeit in 1 ms Schritten einstellen und braucht dennoch nur 8
-
Thread
Hattet ihr in eurem PC mit < 80486DX Prozessor einen separaten Co-Prozessor?
Intels i386DX 32-bit Daten- u. Adressbus bis 40 MHz i386SX 16-Bit Daten- 24-Bit Adressbus bis 25 Mhz i386SL mit Cache u. ISA Bus-controller 20/25Mhz .... AMD Am386DXL (L - Low Power) statisch ;) AM386DXLV
Der 386 DX hatte keinen integrierten Co-Prozessor. Der Unterschied des 386 SX zum DX waren der 16 Bit-Datenbus und der 24 Bit-Adressbus für den Speicher (= max. 16 MB). 386 DX: je 32 Bit.
-
Thread
SVPWM Ansteuerung eines BLDC
einige Variablen, die mit dem Beobachter zu tun haben zu NaN wenn ich die Variable < 0.15 und > 0 setze. An anderen Stellen werden keine Divisionen gemacht. Setze ich diese Variable negativ, werden einige Variablen nicht Nan sondern Infinity. Könnte es sein, dass die float Verarbeitung bzw. die FPU
Ok das sieht doch so aus als wenn die Chinesen das ganz gut gemacht hätten. die letzten 2 Bits scheinen zuwackeln du hast also gut 10Bit Auflösung, Mehr hat der VESC auch nicht. Läuft der Beobachter aus dem Paper schon?
-
Thread
Byte aus Bits zusammenbasteln
Kann man ein Byte aus einzelnen Bits zusammenbasteln? also z.B. PB1,PB2,PC1,PC3,PD0,PD1,PD3,PD4 = MyPorts, so dass ich dann mittels einer einzigen Zuweisung, z.B. Myports = char_irgendwas; den Inhalt eines Bytes den Ports zuweisen
einen Zeiger auf die Union machen, den dann auf PORTx umbiegen und dann direkt die Pins am Port setzen. Ist halt 'etwas' langsamer, da jedesmal ein zeiger ausgelesen werden muss. lg Peter
-
Thread
Energiesparende 1-Bit Anzeige gesucht
Was mit bei einer 1 Bit Anzeige sofort einfällt: eine dumme kleine LED. Und wenn's stromsparend sein soll, dann low-current...
kleinen Solar-Panel versorgen lassen. Beim Türschloss selbst würde ich aber nicht nur auf ein Panel setzen, sondern auch eine andere zuverlässigere Versorgung vorsehen. Gruß, Ulrich
-
Thread
AVR8ASM TWI Interrupt
devices, always write this bit to zero when writing the UCSRA Register. " Was meinen die jetzt mit " write this bit to zero ... " ? Das übliche, dieses Bit durch "setzen" zu löschen, also beschreiben mit einer Eins oder wirklich
C9. Spalte 5 = Z-Achse vom Beschleunigungssensor. ?Wert = $C0. Spalte 6 = Die beiden unteren Bits der 3 Achsen des 10Bit -Beschleunigungssensors( jeweils Bit 1&0 ) und die Taster C & Z. Die RS232-Aufnahme zeigt die " Neutralstellungen ". Durch schütteln werden auch die maximal und minimal
-
Thread
Lauflicht Pic 16f877
Loop DIese Schleife läuft unendlich, das ist schon mal der richtige Start. Du setzt nun vorher das Bit ganz rechts, und schiebst es im ersten Durchlauf nach rechts raus. Also erstmal rlf nutzen, oder vorhher das Bit ganz links setzen. Dann musst du noch dafür sorgen das es wenn es ganz links angekommen
,Bit call Funktion goto Label_x dabei musst nur bedenken dass am ende immer zum Label_x gegangen wird, egal wie das Bit steht, denn call kommt aners als ein goto an die stelle zurück :-) Zur
-
Thread
Atmega8, Carry-Flag
natürlich, daß nur bestimmte Befehle Bits setzen. Z.B. überlebt das C den INC-Befehl und das H den ADIW-Befehl. In der Praxis kann es daher passieren, daß der Sprung einige Befehle später erfolgt.
Johann L. schrieb im Beitrag #5310862: > CBR/SBR können aber mehr als nur /ein/ Bit auf 0/1 zu setzen. Bei Angabe > von Bits bei SBR Rd,0xaa müsste man SBR Rd,1,3,5,7 hinschreiben. Könnte man macher, aber ANDI/ORI ist ja nicht verboten, bloss weil es CBR/SBR gibt.
-
Thread
AVR-Tutorial: ADC
sbr Temp1,1<<ADSC sts ADCSRA, Temp1 wait_adc: ; wenn der ADC fertig ist, wird dieses Bit gelöscht lds Temp1,ADCSRA sbrs Temp1,ADSC rjmp wait_adc ; Cursor auf die 5 Stelle in Zeile 4 setzen ldi Temp1, 0b11011000 rcall lcd_command ; ADC einlesen: ldi xl,
sbr Temp1,1<<ADSC sts ADCSRA, Temp1 wait_adc: ; wenn der ADC fertig ist, wird dieses Bit gelöscht lds Temp1,ADCSRA sbrs Temp1,ADSC rjmp wait_adc ; Cursor auf die 5 Stelle in Zeile 4 setzen ldi Temp1, 0b11011000 rcall lcd_command ; ADC einlesen: ldi xl,
-
Thread
16bit-Software-Timer mit 8bit-Hardware-Timer
Ich brauche einen 16bit-Timer, habe aber nur einen 8bit-Timer frei (ATMega644). Kann man aus einem 8bit-Hardware-Timer verlässlich einen 16bit-Software-Timer mit zwei Compare-Match-Interrupts machen? Ich habe den Code, wie
gleichzeitig kommen und der Compare-Match wegen der Interrupt-Priorities zuerst ausgeführt wird). Der 8bit-Timer wird immer im Kreis laufen, das Setzen der nächsten Compare-Match-A/B-Werte erfordert also Auslesen des Timer-Stands - dafür die Funktion timer_get_TCNT0(). Zum Zeitunkt, in dem das passiert,
-
Thread
C: Bit in einer Variable eigenen Namen geben?
Du könntest auch für jedes Bit folgendes machen: #define BIT0 0x01 #define BIT1 0x02 ... #define BIT7 0x80 und dann in deinem Code Dinge wie var = BIT0 | BIT1 | BIT7; schreiben um Bits zu setzen, oder var ^=
Wenn man einen char mit 8 bit überlager, ist einem recht egal, wo diese stehen. Ausserdem ist es dann wesentlich einfacher, ein Bit zu setzen: [c] foo.bit3 = 1; foo.bit4 = 0; [/c] Das rumbasteln mit Masken und und und
-
Thread
STM32 CAN Reset Bug Workaround geht nicht
Dann ist er aber noch nicht im Bus-Off-Mode. Heinz M. schrieb im Beitrag #5748337: > Ist das ABOM Bit setzen so richtig?CAN->MCR |= 1<<6; Wie wärs mit CAN->MCR |= CAN_MCR_ABOM? Gleich viel besser lesbar. Heinz M. schrieb im Beitrag #5748337: > Bei Registern will ich nicht rumprobieren Dann
aufgefallen, dass ich anfangs trotz des Lesens vieles übersehen oder vergessen habe die richtigen Bits zu setzen. Zb bei den Timern das MOE Bit welches bei advanced irgendwie gesetzt werden muss, bei anderen wiederum nicht etc. Da blickt man anfangs nicht so durch und es fehlt einem einfach an Erfahrung
-
Thread
ATmega163 Protection-Bits löschen
NACHTRAG: Naja diese Lock Bits haben ja auch denn Sinn, eben den Inhalt des Chips vor Nachahmern zu schützen. und wenn man die einfach wieder wegklicken könnte, dann könnt ja jeder wieder lesen. Die Lock-Bits werden wie gesagt nur
Im seriellen Modus kann man das "Serial disable" bit doch gar net ändern?! Bei dem Reset disable weiss ich net wies ist, hatte noch kein Mega bei dem man das setzen/löschen konnte.... aber wär ja wiedersinnig wenn man softwaremäßig nen Chip "fetzen" könnte
-
Thread
Welchen Mikrocontroller für Millisekunden-Stoppuhr?
AVR Datasheet: "Two 16-bit Timer/Counter Type B (TCBn) can be combined to work as a true 32-bit input capture." Damit kann man sehr lange Millisekunden zählen.
Die > 32-Bit CPU ist keinen Verschwendung, weil man für die 32-Bit Zähler > nicht aufpassen muss. ... Bauform B. (bauformb) hat den Mikrocontroller STM32C011J4M6 vorgeschlagen. Der scheint die von mir gestellten
-
Thread
Hausdrainage-Kontrolle mittels DuoLED und Levelsensor - Anfängerprojekt!
; Der Befehl sbic ("skip if bit cleared") überspringt den rjmp sensor_alternative ; darauffolgenden Befehl, wenn das angegebene Bit 0 (low) ist. sbi PORTB, 1 ; PB1 auf high setzen, grüne LED
1 ; Der Befehl sbic ("skip if bit cleared") überspringt den rjmp sensor_alternative ; darauffolgenden Befehl, wenn das angegebene Bit 0 (low) ist. sbi PORTB, 1 ; PB1 auf high setzen, grüne
-
Thread
SPI Master Dataübertragung über MISO avr-mc(Atmega2560-Atega328u)
SS als Ausgang > definiert, dass bei Datenübertragung SS auf LOW und danach wieder auf > HIGH setzen. PORTL|=(1<<PORTL3); habe ich auch in meiner Code nach der > SPI-Funktion. Sorry, übersehen. Aber du kannst trotzdem beim Master MSTR bit in SPCR checken. Ansonsten wirklich vorerst so langsam
(1 << CPHA)); SPSR &= ~(1 << SPI2X); // SPI2X = 0 PORTB |= (1 << PORTB0); // SS auf HIGH setzen } void READ_Data_NANO(uint8_t DW) { SPDR = DW; // auf MOSI-Leitung erstes Byte zu MCP3204 senden (start Bit,D2-Bit gesendet) while (!(SPSR & (1 << SPIF))); // warten bis Übertragung
-
Thread
8x8 Matrix Laufschrift
i++ ) { tmp.V16Bit = pgm_read_byte(&charMap[ZEICHEN][i]); tmp.V16Bit = V16Bit << scroll;//nach lins schieben VRAM[i] &= tmp.V8Bit[0];//die rechte Seite ausgeben } } Hilft das weiter?
bit15 des words die linke Kante deiner Ledmatrix, die dann bis bit8 den Inhalt des words darstellt. Bit7 bis bit0 wäre eine Zeile des Buchstabens. Ein word ist bei mir eine 16bit-Variable.
-
Thread
Protokoll Level zusammen mit Tasks, brauche hilfe
Eric B. schrieb im Beitrag #4672376: > Dir ist bewusst, dass das parity-Bit abhängig vom gesendeten Byte > gesetzt oder gelöscht wird und du das nicht beliebig setzen kann? Ich mache eine 9bit Übertragung. Dabei kann ich das neunte Bit manuell setzen. Eric B. schrieb
im Beitrag #4672392: > Eric B. schrieb im Beitrag #4672376: >> Dir ist bewusst, dass das parity-Bit abhängig vom gesendeten Byte >> gesetzt oder gelöscht wird und du das nicht beliebig setzen kann? > > Ich mache eine 9bit Übertragung. > Dabei kann ich das neunte Bit manuell setzen. Ok, dann
-
Thread
c´t Wordclock Brennprobleme Atmega8
folgendes gefunden. [code]Define_Fuses // Override_Fuses; NoteBook = A; COMport = USB; LockBits0 = []; FuseBits0 = [CKSEL0, CKSEL1, CKSEL3, SUT0, BODEN]; FuseBits1 = []; ProgMode = SPI; ProgFuses = true; ProgLock = false; ProgFlash = true; ProgEEprom = false; [/code] Könnt Ihr mir
Schön das er jetzt lauft, aber im Pasfile steht folgendes: LockBits0 = []; FuseBits0 = [CKSEL0, CKSEL1, CKSEL3, SUT0, BODEN]; FuseBits1 = []; Also musstest du cksel1, cksel3 und boden auch noch setzen. Ich vermüte das du immer noch nicht das externe Quarz benutzt
-
Thread
ADC Conversion
Funktion adc_read(); an, wo dann die Werte ausgelesen werden sollen. In dieser Schleife wird das ADSC Bit auf ein gesetzt (also conversion gestartet) und mittels einer schleife wird solange nichts getan, bis dieses Bit wieder auf 0 ist, also die conversion beendet ist. Könnte jemand mit C-Erfahrung
ich lasse den ADC im Frerun-Mode laufen, könnte das eine Fehlerquelle sein ?? Das ich dann die MUX bits anders setzen muss,z.b. auf positive oder negative differential input ?
-
Thread
Assemberhilfe PIC 12LF1822
folgende Idee in PSEUDO Code: MAIN CLEAR arbeitsreg PIN RA 2 einlesen IF RA2 HIGH BIT 1 in arbeitsreg setzen PIN RA 3 einlesen IF RA3 HIGH BIT 2 in arbeitsreg setzen . . . das gleiche für RA4 und RA5 CALL Tabelle ZURÜCK zu MAIN es sollen ständig die
W ist was spezielles, und nicht ueber Register erreichbar, man kann da keine Bits setzen, bzw nur ueber arithmetische Operationen. Porta2-5 rrf porta,w ; schiebt porta um ein bit nach rechts und speichert es in W movwf tmp ; speichert den Wert zwischen rrf porta,w ; schiebt
-
Thread
32 Bit in 4 Byte umwandeln und 16 Bit Buffer schreiben
: buf[4] 0x0061 buf[5] 0x006D buf[6] 0x00F0 buf[7] 0x0037 Hintergund ist, dass ich den 16 Bit Buffer brauch um in einer Zelle 1 Bit für eine 9 Bit Uart setze und das funktioniert mit einem uint_t8 Buffer so ja nicht. Gruß paule
Bit?
-
Thread
AVR exakt Millisekunden zählen
Warum nimmst Du nicht einfach einen der 16Bit-Timer? Z.B. der ATmega328PB hat 3 16Bit-Timer. Exakt wird das aber auch nicht, da ja die Quarze nicht exakt 16MHz haben, sondern z.B. 16,000001MHz. Ist aber auch kein großes Problem, man kann die
Schaltjahr. OK. Wir brauchen eine Schaltmillisekunde. Aber das funktioniert genauso. Mit drei 16bit korrekturwerten (meistens kommt man mit 8bit aus), bekommt man nahezu jeden Quarz in den Griff. Es ist kein Float oder 32bit Variable notwendig. Und komplizierte Berechnungen werden zur Laufzeit auch
-
Thread
PWM 40 khz ?
mindestens 10 Pulse groß sein. Besser sind 16 oder mehr wie beim RC4. beim RC4 sind es zB. 2x 32 Pulse pro Bit. Gruß Hagen
ich dafür den timer abschalten? wenn ja wie? oder einfach den pin mit cbi oder sbi löschen oder setzen? MFG Jörn
-
Thread
Welche 8-Bit-Architekturen werden in 10 Jahren relevant sein? Gesperrt
, 4-bit and 16-bit MCUs have almost disappeared, with 8-bit and 32-bit MCUs basically sharing the entire application market. 64-bit MCU market is still in its infancy, with most applications in high-end workstations
sind die längst ausgelaufen. Und das war > für viele µC-Hersteller auch der Grund, auf MCS-51 zu setzen. Ich hab noch ein altes Datenblatt des P89C669 gefunden. Das war ein 8051 auf 24Bit Adreßraum aufgebohrt, d.h. je 8MB Code und RAM waren adressierbar. Der Zugriff erfolgte über 2 24Bit Pointer aus
-
Thread
Probleme mit SPI- PIC18
besagter Open Close Politik stabil) Das Verhalten ist tatsächlich nur durch SPIOpen (Genau genommen setzen den EN Bit) und spi Close (Rücksetzen des enable Bits) reproduzierbar. Ich erachte das ebenfalls als Unfug meiner Ansicht nach sollte ich auch SPI Einmal aktivieren und künftig nur noch durch CS/SS
besagter Open Close Politik stabil) > Das Verhalten ist tatsächlich nur durch SPIOpen (Genau genommen setzen > den EN Bit) und spi Close (Rücksetzen des enable Bits) reproduzierbar. Dann scheint es etwas mit den Statusflags zu tun zu haben. > Ich erachte das ebenfalls als Unfug meiner Ansicht nach
-
Thread
Fuse setzen beim ATmega 128 via PonyProg
Hallo, ich möchte bei meinem ATmega128 mit PonyProg die Fuse für den externen Takt setzen. Dazu habe ich mir einen STK200/300 wie auf der Homepage http://www.lancos.com/prog.html#avrisp beschrieben mit einem 74HC244 aufgebaut. Wenn ich nun bei PonyProg AVR ISP I/O angebe, ist der Probe-Test
Flash-Speicher funktioniert einwandfrei. Sobald ich aber versuche die Security and Configuration Bits auszulesen kommt die Meldung "Device missing or unknown device (-24)". Wenn ich diese Meldung ignoriere dauert es kurz, bis er dann aber letztendlich abbricht. Das Schreiben dieser Bits habe ich noch
-
Thread
PIC16F1455 treibt LCD nur mit angeschlossenem PICkit3
Viele LCD-Libs sind leider fehlerhaft und setzen nicht richtig den 4-Bit Mode. Oft fällt das nicht auf, wenn das LCD nach dem Power-On im 8-Bit Mode startet. Hier mal der korrekte Ablauf, um das LCD aus einem unbekannten Zustand sauber in den
Ob der Compiler das in "einen" Befehl packt der den Port auf einmal setzen kann? Oder kommen da tatsächlich 4 Bitsetzer raus, so das die Bits seriell am Port erscheinen?
-
Thread
AtTiny25 Status zurücksetzetn
[c]bit oldstate; // Merker void main() { DDB0_bit = 0; // Setze Eingang DDB1_bit = 1; // Setzte Ausgang DDB2_bit = 1; // SEtze
[c] bit oldstate; // Merker void main() { DDB0_bit = 0; // Setze Eingang DDB1_bit = 1; // Setzte Ausgang DDB2_bit = 1; // SEtze
-
Thread
UV-Laserdrucker II
eine xpdfbin-win-3.04 Datei gefunden. Nach dem Entpacken sind da viele PDF.... auch pdftoppm 32 und 64Bit drin.Anhand der Größe ist deine wohl eine 64Bit Version, ich hab 32Bit, geht aber leider auch nicht. trotzdem danke Gruß Klaus
Bilde ich mir das nur ein, oder fehlt beim Belichten jede 8. Zeile? Das wäre ein Bit pro Byte.
-
Thread
Pin vom Mikrocontroller in Funktion mit variablen initialisieren
flashen. Nach dem gleichen Prinzip gibt es zwar Maschinenbefehle, die ein einzelnes Bit setzen oder löschen. Aber auch hier gibt es für jedes einzelne Bit einen einzelnen Maschinenbefehl. Man kann das Bit da nicht dynamisch als Parameter übergeben. Der C Compiler kann daher diesen C
> setzen, einen anderen um DDRA zu setzen, genauso sind die > Maschinenbefehle zum setzen von PortA, PortB, ... alle unterschiedlich. > Wollte man zur Laufzeit den Port ersetzen, dann müsste man diesen
-
Thread
Aufrufen von Funktion legt auch vorherigen Teil des Programms lahm
Setzen: [c]OEC |= (1<<MeinBit);[/c] Löschen [c]OEC &= ~(1<<MeinBit);[/c] Den rest las mal den Compiler machen... Für "genaue" Zeiten könnte man mitels Assemblerdirektive die benötigte Zahl von nops
Läubi .. schrieb: > Setzen: > [c]OEC |= (1<<MeinBit);[/c] > Löschen > [c]OEC &= ~(1<<MeinBit);[/c] > Den rest las mal den Compiler machen... > > Für "genaue" Zeiten könnte man mitels Assemblerdirektive die benötigte
-
Thread
Problem mit gosub in Bascom
, ist das dann einfach durch Einfügen von weiteren Bytes zu erreichen. Da Deine Zeichen das 8te Bit nicht verwenden, kannst Du ein "Data 128" zum Schluss Deines Textes setzen und daran erkennen, daß der Text zu Ende ist. Dann halt neu beginnen oder was immer Du willst.
Incr Shifts Waitms 200 If Shifts > 4 Then Shifts = 0 Loop [/c] 3. Wie kann ich die Bits der Zeilentreiber für ein Spaltenbyte ausgeben? Ich gebe z.B. den PORTB als Freigabeport für die Zeilen an. Dort soll er mir also alle Bits auf high setzen, die für dieses Spaltenbyte benötigt werden
-
Thread
Bitanweisung Wert überschreiben
[c] uint8_t val = 0; uint8_t status = 1; val &= ~(1<< 0); // 0. Bit löschen // 0. Bit ist 0. wurde geloescht val |= status << 0; // 0. Bit setzen // 0. Bit ist 1. wurde gesetzt status = 0; val &= ~(1<< 0); // 0. Bit löschen // 0. Bit ist 0. wurde geloescht val |= status << 0; // 0. Bit setzen // 0. Bit ist 1. wurde NICHT gesetzt [/c]
-
Thread
STM32: Drama mit "Hard Fault Error"
data) { #define DELAY_595 2 for (uint8_t i = 0; i < 8; i++) { // Datenbit setzen GPIO_SetPinValue(GPIOE,HCT595_DS,(data & 0x80)); GPIO_SetBits(GPIOE,HCT595_SHCP); // SHCP -> High //wait(DELAY_595); GPIO_ResetBits(GPIOE,HCT595_SHCP); // SHCP -> LOW //wait(DELAY_595); data = data << 1; } // 8 Bit an die Ausgaenge clocken GPIO_SetBits(GPIOE,HCT595_STCP); // STCP -> HIGH //wait(DELAY_595); GPIO_ResetBits(GPIOE,HCT595_STCP); // STCP -> LOW GPIO_ResetBits(
-
Thread
Software Profibus DP-Slave in C
" Unit_Diag_Bit(6) = "reserved" Unit_Diag_Bit(7) = "reserved" Unit_Diag_Bit(8) = "Inputs of other DP LBS" Unit_Diag_Bit(9) = "Inputs of other DP 2nd LSB" Unit_Diag_Bit(10) = "Inputs of other DP 3rd LSB" Unit_Diag_Bit(11) = "Inputs of other DP 4th LSB" Unit_Diag_Bit(12) = "Inputs of other DP 4th MSB" Unit_Diag_Bit(13) = "Inputs of other DP 3rd MSB" Unit_Diag_Bit(14) = "Inputs of other DP 2nd MSB" Unit_Diag_Bit
-
Thread
IRMP-Anwendung
Panasonic passt. [code] KASEIKYO Frequenz 56 kHz Kodierung Pulse Distance Frame 1 Start-Bit + 48 Daten-Bits + 1 Stop-Bit Daten 16 Bit Hersteller + 4 Parity-Bit + 4 Genre1-Bit + 4 Genre2-Bit + 10 Kommando-Bit + 2 ID-Bit + 8 Parity-Bit Start-Bit 3,38ms H + 1,69ms L Log-0 423µs H
/www.mikrocontroller.net/articles/IRMP#PANASONIC anschaue, dann steht da: [code] Frame 1 Start-Bit + 56 Daten-Bits + 1 Stop-Bit Daten 24 Bits (010000000000010000000001) + 16 Adress-Bits + 16 Kommando-Bits [/code] Das heisst: Die Panasonic schickt 56 Datenbits, wobei die ersten 24 Bits fix
-
Thread
Frequenzmessung mit Timer0 ohne ICP
Seite 106: Für Modus 15 müssen alle WGMXY gesetzt sein. Du hast > vergessen WGM11 und WGM10 zu setzen. (Aufgepasst die sind dann in > TCCR1A, nicht wie 12 und 13 die in TCCR1B sind.) Des hab ich in den Zeilen gemacht damit das PWM Signal solange aus ist bist ich die Beiden Bits setze.
|= (1<<0); PORTC |= (1<<2);} } //dann so verwenden: alle_LEDS_setzen(1); //alle LEDs ein alle_LEDS_setzen(0); //alle LEDs aus [/c] > Das klingt so als ob mein Compiler nen Knacks hat. Der zeigt mir > wirklich keinen Fehler an. Mir hat des mal ein Kumpel installiert
-
Thread
Watchdog interrupt & sleep mode ATTINY85
Interrupt gestört. Pack das ganze sleep-Init for das sei(). Das muß man nur einmal machen, die Sleep-Bits ändern sich nicht magisch.
mich jetzt. Denn im Datenblatt steht ja etwas gegenteiliges. Da ich den Reset verhindern will, setze ich eben extra bei jedem Interrupt das WDIE-Bit wieder. Ich habe es auch mit und ohne gesetztem WDE-Bit probiert. Deine beiden Beispiele kann ich morgen erst ausprobieren.
-
Thread
RS232 mit AT91SAM7S256
init_usart0: // ----------------------------------------------------------- // Basisadresse setzen LDR r0, =PIO_BASE // zu schreibender Wert LDR r1, =BIT5 | BIT6 | BIT21 | BIT22 // Wert an Basisadresse + Offset schreiben STR r1, [r0, #PIO_PDR] // zu schreibender Wert
// Basisadresse setzen LDR r0, =USART_BASE LDR r1, [r0, #USART_US_CSR] AND r1, r1, #BIT1 CMP r1, #BIT1 BNE ready probiert, aber leider funktioniert das auch nicht. Hat jemand einen Tip? Kann es
-
Thread
ATmega 328p USART: wird TXC auch automatisch gelöscht?
etwas in UDR0 geschrieben wird, wird der TXC *erst nach diesem Byte gesetzt*. USART ist nach setzen des TXC bits *mit Sicherheit nicht aktiv*.
Marc V. schrieb im Beitrag #4885496: > USART ist nach setzen des TXC bits mit Sicherheit nicht aktiv. Wenn TXC nicht gesetzt ist, heißt das nicht, dass der USART aktiv ist...
-
Thread
16-Bit Timer beim Atmega32
Ich bin scheinbar zu blöd das Datenblatt zu lesen. Ich möchte gerne den Timer1 des Atmega32 verwenden. Ich möchte einfach gerne ständig den TIMER1 Overflow Interrrupt ausgelöst haben, der dann LEDs blinken lassen soll. Mein Problem: Der Timer läuft, springt beim erreichen des Counter-Werts 0xFFFF auch nach 0x0000 zurück. Aber irgendwie scheint der Interrupt nicht ausgelöst zu werden. TOV1 im TIFR-Register wird auch nicht gesetzt. Ich glaube den Timer so eingestellt zu haben: - clksource: clkIO (no prescaling) (hab auch schon clkIO/64 etc. probiert) - Timer Mode of Operation: Normal
-
Thread
serieller 4-Bit vergleicher
habe ich noch an der Messkarte. Also im Prinzip soll das ganze so funktionieren, dass ich vier Bits übertrage, die mit einem vorgegebenen parallel anliegendem bit Wort vergleiche und dann den Ausgang auf high oder low setze, nach 4 weiteren bits das gleiche von vorne. Das ich für das Schieberegister
. Erst Datenbit anlegen, dann Clock high). Das geht mit einem Schieberegister. Allerdings 4 Bit Schiebe-Register kenne ich nicht, nur 8 Bit. Aber das könnte man ja mit 2x4 Bit lösen. Es gibt Schieberegister, die noch einen "Latch" Eingang haben. Das heißt, nach dem reinshieben der Daten, muß noch
-
Thread
Ausgangszustand beim Toggle OC0A on Compare Match setzen
umgekehrt. Gibt es eine "saubere" Möglichkeit den OC0A oder OC0B vorab auf einen anderen Zustand zu setzen? Also irgendetwas besseres als z.B. den OC0A auf togglen zu setzen TCCR0A |= (1<<COM0A0), dann einenmal den Compare Match zu erzwingen TCCR0B |= (1<<FOC0A) und anschließend erst den TCCR0A |= (1<<COM0B0
Portregister wird in OC Mode einfach >> nicht benutzt. > > Und genau darum eignet sich das setzen des PORTS nicht um den Wert beim > Togglen über OC0x zu beeinflussen. So ein Quatsch. Man setzt *erst* das Bit in PORTx auf den gewünschten Anfangswert und schaltet *dann* die Funktion "Toggle
-
Thread
Time Slot erzeugen - wie am besten
// Auswahl CTC Modus TCCR1B = (1<<CS01)|(1<<CS00); // Prescaler auf 64 setzen OCR1A=1249; // Wert für 10ms TIMSK1|=(1<<OCIE1A); // Interrupt erlauben } ISR (TIMER1_COMPA_vect) // Timer 10ms { ... } [/c] Der 16 Bit Timer ist eigentlich
Beitrag #6782122: > Da ist noch ein Denkfehler drin mit millisekunden1. > Wie meinst du das mit der 32 Bit Variablen? Flags in der ISR _setzen_, in der Hauptschleife flagbedingte Sachen ausführen und Flag _löschen_! Flags als _volatile_ deklarieren sonst funktioniert das nicht!
-
Thread
-
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.