-
Thread
Assemblerprogramm zur Ausgabe eines Zeichens auf UART3
Dann ist es natürlich kein Wunder dass der UART einen "Glitch" sendet... Du solltest also nach dem Setzen des "SW0" Bits im RCC_CFGR darauf warten, dass die SWS Bits im RCC_CFGR den Wert 01 haben, und erst dann weiter machen. Vielleicht solltest du dem UART einen externen Pull-Up Widerstand verpassen
> es natürlich kein Wunder dass der UART einen "Glitch" sendet... Du > solltest also nach dem Setzen des "SW0" Bits im RCC_CFGR darauf warten, > dass die SWS Bits im RCC_CFGR den Wert 01 haben, und erst dann weiter > machen. > > Vielleicht solltest du dem UART einen externen Pull-Up Widerstand
-
Thread
AD Konverter beim Mega 8
nachvollziehen. Eine Unklarheit hab ich noch. Ergebnis Multipl. High-Byte 0000 0000 0000 1111 (15) [16 Bit!] Ergebnis Multipl. Low-Byte 0000 0100 1111 1011 (1275) [16 Bit!] Es entsteht bei der Multiplikation von 255 mit 4 ein 16 Bit Ergebnis. Wie setze ich das denn um? Müsste ich dann das high und
jochen wrote: > Es entsteht bei der Multiplikation von 255 mit 4 ein 16 Bit Ergebnis. > Wie setze ich das denn um? Müsste ich dann das high und Low bye jeweils > wieder in ein High und Low byte unterteilen? Das ist ja bereits der Fall. Wie weiter oben schon erwähnt, legen
-
Thread
1-wire mit Atmega8
schreiben cmd(0xC0,0); //Zeilenumbruch DDRD |= (1<<PD5); //PD5 als Ausgang setzen PORTD = (0<<PD5); //Bus-Master PullDown _delay_us(480); //warte 480uS - auch mit 500 und 550 versucht DDRD &= ~(0<<PD5); //PD5 als Eingang setzen _delay_us(60);
; int D=10; DDRD |= (1<<PD5); //PD5 als Ausgang setzen PORTD = (0<<PD5); //Bus-Master PullDown _delay_us(C); DDRD &= ~(0<<PD5); //PD5 als Eingang setzen _delay_us(D); } void oww(int command){ for(int i=7; i>=0; --i)
-
Thread
Grundsatzfrage zu mehreren Interrupts im Programm
>OK - das löst das Problem wenn ich beim Start der Interupt-Routine A das >I-Bit lösche und am Ende wieder setze. Gelöscht wird das I-Bit im SREG automatisch durch die Interrupt-Logik des Controllers, in dem Moment, wo ein Interrupt gehandelt wird. Das Setzen des I-Bits obliegt
AVRFan wrote: >>OK - das löst das Problem wenn ich beim Start der Interupt-Routine A das >>I-Bit lösche und am Ende wieder setze. > > Gelöscht wird das I-Bit im SREG automatisch durch die Interrupt-Logik > des Controllers, in dem Moment, wo ein Interrupt gehandelt wird. Das > Setzen des I-Bits
-
Thread
internen RC Osci syncronisieren
mit SREG Sicherung #define F_CPU 8000000UL // Systemtakt in Hz #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) // setzt das angegebene Bit auf 1 #endif #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) // setzt (löscht) das angegebene Bit auf 0 #endif /*
/ für cli() und sei() mit SREG Sicherung #include <util/delay.h> #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) // setzt das angegebene Bit auf 1 #endif #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) // setzt (löscht) das angegebene Bit auf 0 #endif /*
-
Thread
Carry-Flag bei Subtraktion?
und zwar dann, wenn der Subtrahend größer als > der Minuend ist (also b>a). Manche Prozessoren setzen C bei a >= b, manche setzen C bei a < b.
Heinz Buchegger schrieb im Beitrag #2592389: > Die Subtraktion > > (-70) - 90 > > wird in 8 Bit unterlaufen, genauso wie > > 200 + 60 > > übergelaufen ist. Dafür ist doch das Overflow-Bit da. Ich rede von Carry... A. K. schrieb im Beitrag #2592361: > Manche Prozessoren setzen C
-
Thread
CAN: Timing Probleme
. Ansonsten hast Du halt insgesamt 6 Filter die Du setzen kannst. Ich weis nicht wie das bei Deinem Arduino ist, aber Du musst in der Konfiguration garantiert den Empfangsmodus noch einstellen!? Dieser wird durch die RXM-Bits gesetzt: 11-alle IDs werden
.init_Mask(0, CAN_EXTID, 0x00000000); Beachte: 0x2003 (10 0000 0000 0011) braucht mehr wie 11 Bit, daher werden Extended CAN IDs benutzt. Diese sind dann 29 Bit lang.
-
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
C# werte über serielle schnittstelle an Atmega8 AVR
das /4 soll den eingegebenen Wert von ml in Bits umwandeln, da ich laut Auflösung 4ml jeh Bit genauigkeit habe... soll also nicht übertragen werden
Tobias Giesen schrieb im Beitrag #3021545: > das /4 soll den eingegebenen Wert von ml in Bits umwandeln, da ich laut > Auflösung 4ml jeh Bit genauigkeit habe... soll also nicht übertragen > werden Ja, hatte mich da auch vertan integer werden automatisch in decimal umgewandelt. Das Problem
-
Thread
Welcher Treiber zu 7 Segment LED mit Common Anode
> Stellen werden dann üblicherweise gemultiplext. Das spart Leitungen. Oder man nimmt einen 8 Bit Port und hat 4 Bit für BCD die auf einen BCD to 7 Seg Dekoder gehen und 4 Bits für das Multiplexing von zB. 4 Stellen. Da mit kommen Anfänger schneller zum Ziel als sich mit den Bitmustern für die Anzeige
Stellen werden dann üblicherweise gemultiplext. Das spart Leitungen. > > Oder man nimmt einen 8 Bit Port und hat 4 Bit für BCD die auf einen BCD > to 7 Seg Dekoder gehen Das ist dann im Prinzip eine Variante von "man hat die Daten schon parallel als BCD vorliegen". > und 4 Bits für das Multiplexing
-
Thread
Tacho über Reed und NE555 an Atmega32
@ He Gr (dare) >1. ein 16 bit Timer kann offensichtlich eine 16 Bit Variable überlaufen Logisch. >lassen. Zumindest resettet der Atmega jedes Mal, wenn ich den Inhalt von >Timer1 in eine uint16_t schreiben will. Da ist
Wenn ich den Inhalt vorher durch >10 teile gehts. Das ist Unsinn. >Geschwindigkeit auf 0 setzen? Bis zur nächsten sollte eigentlich die Nöö, einen Timeout einbauen. Wenn innerhalb von 500ms kein neuer Messwert kommt, DANN wird Null angezeigt. >ihr das machen? Ein 8 Bit Timer läuft mit höchstem
-
Thread
ARM Cortex M3/M4: Software-Breakpoints
Dem Hardfault ist egal ob er pushen kann oder nicht. Daher schrieb ich ja oben, dass man die SCB Bits lesbar ausgeben muss, dann sieht man auch, dass man dem Regiosterdump nicht trauen kann. Was ich in der Tat noch mal machen müsste ist den sp neu zu setzen bevor ich nach C gehe. Bisher hab ich mir
ich. Ist natürlich nur relevant bei verbundenem > Debugger. Im Grunde: Wenn Debugger connected, setze die Traps. > Funktioniert für die Faults. Die Abfrage müsstest Du Dir sparen können: "If DHCSR.C_DEBUGEN is set to 0, the processor ignores the value of this bit." Ich würde das Register evtl
-
Thread
krumme Frequenzen aus 50Mhz erzeugen
[/c] Wenn der Takt vom 50Mhz Osc am FPGA high wird... wenn der Takt PHI2 high wird... setze den Ausgang phi2short auf HI endif wenn der Zähler cnt6 >= 9 ist (sind 180ns vergangen) setze den ausgang phi2short auf LOW setze den Zähler cnt6 auf 0 ansonsten erhöhe den zähle cnt6
( 4 % ) Total registers 109 Total pins 76 / 89 ( 85 % ) Total virtual pins 0 Total memory bits 0 / 119,808 ( 0 % ) Embedded Multiplier 9-bit elements 0 / 26 ( 0 % ) Total PLLs 0 / 2 ( 0 % ) Fmax 101,35MHz bei 50MHz Quarz Ist im SLOW-Mode (?) Mail ist unterwegs...
-
Thread
eeprom ansteuern hilfe!
512 Byte EEP nur das untere Bit unterstützt. Bei größeren EEPs sind es dann mehr...
Hi! < ldi zl,low(tabelle) ;Pointer setzen < ldi zh,high(tabelle) ;High-Teil vom Pointer ist fasch! Muss lauten: ldi zl,low(tabelle*2) ;Pointer setzen ldi zh,high(tabelle*2) ;High-Teil vom Pointer MfG Uwe
-
Thread
Integer vergleichen
( 0, 0, 0, 0, 0, 0 ) ); -- 12 aus Begin ha <= to_bit(wi_hallA); hb <= to_bit(wi_hallB); hc <= to_bit(wi_hallC); SensorzustandSetzen: process (clock) begin with bit_vector'(ha ,hb ,hc) select Sensorzustand <= To_unsigned( 0,10)
werden darf. Fazit: mach den Prozess dort weg, dann ist dieser Fehler weg. [vhdl] --SensorzustandSetzen: process (clock) --begin with bit_vector'(ha ,hb ,hc) select Sensorzustand <= To_unsigned( 0,10) when "001", --Zeile 70 To_unsigned( 2,10) when "011", To_unsigned( 4,10) when
-
Thread
If Schleife um Array Elemente zu vergleichen
A. S. schrieb im Beitrag #6251387: > aber die Logik ist vermutlich eine andere: Da BSRR 24 Bit ist, > möchte er sicher sein, dass auch wirklich alle 24 Bit 0 sind, und nicht > nur das Ergebnis ;-) Möglicherweise wollte er auch Bit 25 (Zählweise Bit 1 ist das niederwertigste) löschen und
smerti schrieb im Beitrag #6252038: > Weil es das korrespondierende Bit für mein ODR Bit ist und mit einer 0 > einfach keine Operation durchgeführt wird. Du setzt aber auch alle anderen 31 Bit auf 0.
-
Thread
Modbus RTU Protokolländerung
endian), vor allem aber fehlende Fliesskommazahlen und andere Ganzzahlentypen als vorzeichenbehaftet 16bit. Sicher gibts da immer Workarounds, in der freien Wildbahn scheint aber jede mögliche Kombination vorzukommen wie man z.B 32 Bit floats in 2 16 Bit Register packt, schön ist das nicht.
vor allem aber fehlende Fliesskommazahlen und andere > Ganzzahlentypen als vorzeichenbehaftet 16bit. Sicher gibts da immer > Workarounds, in der freien Wildbahn scheint aber jede mögliche > Kombination vorzukommen wie man z.B 32 Bit floats in 2 16 Bit Register > packt, schön ist das nicht.
-
Thread
ATmega16: ADC-Multiplexing geht nicht
Hallo [c] #include <avr/io.h> #include <avr/sfr_defs.h> loop_until_bit_is_clear(ADCSRA, ADSC); [/c]
0x00 setzen, damit die internen Pullups wirklich deaktiviert sind... (wenn das wirklich Sinn macht)
-
Thread
"I2C-Stopp" wird nicht ausgeführt (HW-TWI, AVR)
kommen) Also auf TWSTO im TWSR zu warten bringt schonmal gar nichts. Denn da musst du dein TWSTO-Bit setzen um einen STOP ausführen zu lassen. Wenn du Zustände des HW-TWI abfragen willst, dann musst du schon das TWI-Statusregister befragen. Und das ist *TWSR*. Allerdings gibt es da keinen Status
Hallo, also heutzutage kann doch jeder lesen oder? siehe Datenblatt: • Bit 4 – TWSTO: TWI STOP Condition Bit Writing the TWSTO bit to one in Master mode will generate a STOP condition on the 2-wire Serial Bus. When the STOP condition is executed on the bus, the TWSTO bit
-
Thread
FT2232H Sync FIFO
auch nur auf Platte schreibt und später verrechnet. Übertragen muss ich die Pixeladresse und die 8x16Bit. Die Pixeladresse sind jedoch nicht die 2x16 Bit die an den AD-Wandlern ankommen sondern nur jeweils die oberen 11 Bit, denn mehr als 2048x2048 Pixel kann man in der Steuersoftware nicht einstellen. Macht zusammen 2x11Bit + 8*16Bit = 150Bit. Und damit ich im Datenstrom irgendwie den Anfang und das Ende eines Pixels erkennen kann habe ich mir das so gedacht: Das letzte Bit jedes Bytes ist '0' ausser wenn ein neues Paket
-
Thread
[AVR|C] Codeschloss Projekt - wie den Code verbessern
Register selbst - ändert. Hier nochmal get_toogle: [c] int get_toggle(const volatile int *PINX, int BIT){ int i; if(*PINX & (1<<BIT)){ while(*PINX & (1<<BIT)){ // wait mainwork(); } for(i=0;i<=255;i++){ // zeit zum entprellen mainwork(); } return 1; }
Deine Pinverwendung für Ein- und Ausgänge stimmt nicht mit dem Kommentar überein. Und beim Richtung setzen auch nicht. Peter
-
Thread
PIC18 - 10bit vs. 8bit PWM
Martin schrieb im Beitrag #2859563: > Ist das nun ein 10bit wertiges PWM-Signal oder nicht? Ich glaube nicht, weil ein 10bit Wert aus zwei 8 bit oder einem 16bit register besteht.
Hallo, danke schonmal für die bisherige Hilfe! Mal angenommen ich setze CCPR1L = 0xFF; dann hat mein PWM 100% Jetzt habe ich zum spaß einfach mal die beiden bits: CCP1CON.DC1B1 = 1; CCP1CON.DC1B0 = 1; oder auch mal 0;1 oder 0;0 gesetzt. Aber eine änderung am ausgang
-
Thread
2 Byte bei 12 Bit ADC mit SPI
der häufigste Fehler beim Auslesen von SPI Peripherie mit mehr als 8 Bit besteht darin das nicht weiter getaktet wird. SPI macht einen Lesezyklus mit 8 Bit also solltest Du 8 weitere "irrelevante" ausgeben um dem Slave weitere 8 Takte zu spendieren. Dann wird er auch was
natürlich sollte man zwischen den beiden TX Dummy Bytes des SPI keinen Breakpoint für's debuggen setzen! ;-)
-
Thread
Vorstellung und erstes Projekt
man kann den µC "schlafen legen" und mit Interrupt aufwecken. Auch kann man durch "Flagregister" Bits setzen, folgende Programmabschnitte durchlaufen lassen die Flagregister-Bits am Ende wieder löschen, so dass die Main-Routine da wieder stoppt, bis der andere Interrupt kommt, auf einen anderen Programmabschnitt
sich nun 2 Probleme: 1. Darstellung des Bit: Entweder als schiere Bitnummer oder als (1<<Bitnummer). 2. Zuordnung von Port/Variable und Bit Beides muß bei allen Verwendungen des Bits im Programm richtig gemacht werden und bietet deshalb eine
-
Thread
Lohnt sich der Einstieg in die MSP430 Welt?
- ich habe das bei einem PIC16F-Modell (8-bit) kennenlernen müssen > und das ist einfach nur grausam. Kaum ein 8-Bit-Prozessor kennt nur 8-Bit-Adressen. Die meisten sind in der Lage, mit 16-Bit-Adressen zu arbeiten und können damit 64 kiB
größer als 8bit. Einige (z.B. AVR) haben sogar einen 16bit breiten Programmspeicher.
-
Thread
TSIC und ATMega
reading 10 bits in total if ((PIND & (1<<PIND3)) && zac_current_bit > 1 && zac_current_bit < 9) { zac_low_byte |= (1 << (zac_current_bit - 2)); } // decrement current bit every trigger if
} // decrement current bit every trigger if (zac_current_bit > 0) { zac_current_bit--; } // all bits read => back to the beginning else { zac_current_bit = 8; state = ZAC_READING_START_BIT_LOW
-
Thread
PWM Atmega8 auf dem 2. 8 Bit Timer/Counter
ich mit diesem Hinweis nichts anfangen. Ich verstehe nicht was du meinst, meiner Auffassung nach setzen die 3 Bits die ich aktiviere jeweils unterschiedliche Themenbereiche (PWM, Setmode und Prescaler für die Uhr). Ist dem nicht so? Viele Grüße Carsen
Hi > meiner Auffassung nach setzen die 3 Bits >die ich aktiviere jeweils unterschiedliche Themenbereiche (PWM, Setmode >und Prescaler für die Uhr). Ist dem nicht so? Nein. Mit der zweiten Zuweisung überschreibst du die erste.
-
Thread
200 MSPS zu je 8 Bit puffern -> welcher Speicherbaustein
Wartezyklen (CL u.a.) hat - je schneller getaktet, desto mehr. Ich würde auf eine Busverbreiterung setzen, also ein CPLD o.ä., das vier oder acht 8-Bit-Werte auf einmal in eine Speicherbank schreibt. Gruß - Wolfgang
Wartezyklen (CL u.a.) hat - je schneller > getaktet, desto mehr. Ich würde auf eine Busverbreiterung setzen, also > ein CPLD o.ä., das vier oder acht 8-Bit-Werte auf einmal in eine > Speicherbank schreibt. > > Gruß - Wolfgang Weißt du was Wolfgang - vielleicht hast du recht. Ich müsste einen RAM
-
Thread
I2C auf dem STM32 F411RE
„ausrechnen“ können, wohin ich welches Bit shifte und keine „hardcodierten“ GPIOA oder TIM5_1 oder was auch immer setzen ....
(I2C1->DR); } [/c] Das Programm wartet dann bis zum Sanktnimmerleinstag auf das Setzen des RxNE bit. Woran kann das liegen? Ich vermute, dass das I2C grundsätzlich funktioniert, da das Programm ja sonst nicht so weit kommen würde, oder?
-
Thread
AD-Wandler Free Running - Mega8
Wert im Ergebnisregister ablegen. Ist klar, dass Du immer den selben Wert ausliest. Wenn Du nur 8 Bit Auflösung brauchst, dann setze ADLAR und lies nur das High-Byte aus. Dann gibts auch keine Probleme. Deine switch-case Abfrage macht m.E. auch nicht viel Sinn. Was soll die Division durch 32 und
Datenblatt durchgelesen und viel Zeit dafür aufgewendet. War aber wohl noch nicht genug. Dann setze ich ADLAR ... hab mich schon gefragt wozu dieses bit gut ist. Zu der Division durch 32, das ist quasi ein bit-shift nach links. z.B.: 10110011 >> 5 = 00000101 --- ---
-
Thread
Steuerwerk Erklärung
Das gegebene Operationswerk aus Abbildung 1 basiert auf den vier 16-Bit Registern A, B, R und NUM, dem 4-Bit Register CNT und einer 16-Bit ALU. Sowohl die Eingänge als auch der Ausgang der ALU und Register sind 16 Bit breit. Mithilfe des Steuersignals sub kann die Subtraktion
welches das aus dem Register R im Rahmen eines durch lsrR hervorgerufenen Rechtsshifts herausgeshiftete Bit enthält, zur Verfügung. Die Steuersignale clrX (X ∈ {CNT, B , NUM}) setzen den Wert des entsprechenden Registers auf 0 und die Steuersignale incB und incCNT inkrementieren die korrespondierenden Registerwerte
-
Thread
Problem mit PWM aus Timer2 mit ATmega8535
CTC_Mode.png sieht es aus, wenn ich das Programm grade gestartet hab und eine Anweisung nach dem TCCR2-Setzen bin. Man beachte, dass zwar rechts oben "normal" angezeigt wird, die Bits jedoch das Bitmuster für CTC anzeigen (WGM21=1, WGM20=0). Auswahl.png zeigt, daß man zur Laufzeit die Bits für den Timer-Modus
PD7 als PWM-Ausgang dienen kann (PD7 = OC2) ldi tmp1, 0x00 out PORTD, tmp1 ; PORTD auf "0" setzen ; Timer2 starten via Setzen des Clock Bits in tmp1, TCCR2 ori tmp1, (1 << CS22 | 1 << CS21 | 1 << CS20) out TCCR2, tmp1 [/avrasm]
-
Thread
Takt je Schleife berechnen
TIMER(void) // isr kommt wenn eingestellter wert erreicht { gFlag = 1; clr_timer_run-bit(); timer_reg = 0; // zählt wenn du wieder antriggerst dann bei 0 weg clr_isr_flag(); } void main(void) { ... gFlag = 0; trigger_Timer(); // setze Run-bit while(!gFlag
700 µs auf wenige µs genau geht entweder über einen 16-bit-Zähler oder einen 16-bit-Timer (700*16=11200, abzüglich Overhead für Port setzen und pollen). Was man nimmt, ist Geschmacksache, er pollt ja sowieso. Die Auflösung ist dann 4/32=1/8 µs, das dürfte genügen
-
Thread
MSP430 Programmierung in C - Doku
aus meiner Sicht fehlt dort der Unterbau. Z.B. Kapitel 5.6 Data Types. short, signed short 16 bits unsigned short 16 bits int, signed int 16 bits Dann finde ich in einem Source "uint16_t". Jetzt geht das Rätselraten los. Es handelt sich bestimmt um "unsigned short 16 bits". Aber was bedeutet
Seite 21 Deines Dokuments beschrieben. Du musst im Timeroverflowinterrupt Dich selbst um die oberen 16 Bit kümmern: [pre] Set overflow interrupt service routine to increment a global variable - 16 bit TAR_extended - which represents the upper 16 bits of a 32 bit word. [/pre] Das Konzept ist mit
-
Thread
AVR PWM Time Unbekannte Befehle.
Vielleicht ne dumm frage, REG |= _BV(2); würde die ersten beiden Bits Setzen oder? REG |= _BV(2) REG &= ~_BV(1) würde das erste Bit setzen, da das zweite gleich wider gelöscht wird? Warum ist fastPWM zum beispiel 2. Aufgeführt, auf s.156 Was ist brdeutet
schrieb im Beitrag #3481545: > Vielleicht ne dumm frage, > REG |= _BV(2); > würde die ersten beiden Bits Setzen oder? > > > REG |= _BV(2) > REG &= ~_BV(1) > > würde das erste Bit setzen, da das zweite gleich wider gelöscht wird? Nein. REG |= _BV(2) setzt Bit2 und nichts anderes. REG = _
-
Thread
AVR WGM Modus 11
TOP zu 0x0000 rückgesetzt würde, oder falls benötigt umgekehrt. Aufwand in diesem Fall: 1x 16 Bit-Register OCR1A setzen 1x Compare Match A Interrupt Routine mit Schritt zählen 1x Overflow Routine mit Frequenz ändern Aufwand CTC-Modus: 1x 16 Bit-Register OCR1A setzen 1x Interrupt-Routine (
wird, dann 1x 16 Bit-Register ICR1 setzen (nicht gepuffert!) 1x 16 Bit Division mit 2 (ok einfach, aber doch "Aufwand") 1x 16 Bit-Register OCR1A setzen für 1:1 1x Interrupt Routine (Compare Match A) 1x Vergleich um
-
Thread
Timer1 weckt nicht den PIC2LF1840 vom SLEEP()
der Hardware. Hier das Programm dazu: [c]program test4 sub procedure Interrupt() if (TMR1IF_bit) then TMR1IF_bit = 0 TMR1H = 0x0f TMR1L = 0x2C end if end sub sub procedure InitTimer1() T1CON = %10001101 TMR1IF_bit = 0 TMR1H
104 Leider in deinem Programm hast du einen Fehler. 104 das ist 0b01101000. Du hast zwar mit Bit 6-3 1101 4MHz HF Internal Oscillator gewählt aber durch Bit 1-0 hast du die Entscheidung an Configuration Word 1 übertragen: bit 1-0 SCS<1:0>: System Clock Select bits 1x = Internal oscillator
-
Thread
WinAVR Fehlermeldung: Error: number must be positive and less than 32
, das geht nicht. Und selbst wenn es prinzipiell gehen würde, wäre es nicht das Gleiche, wie das Setzen eines Bits.
das geht nicht. Und selbst wenn es prinzipiell gehen würde, wäre > es nicht das Gleiche, wie das Setzen eines Bits. Ja, gleich zwei Fehler ;) Ich tippe mal auf: in r0, SPCR ori r0, (1<<SPE) out SPCR, r0
-
Thread
Counter in ISR unwirksam?
//10 interuppts/s TA0CCTL0 |= CCIE; TA0CTL |= TASSEL_1 | MC_1; P1DIR |= BIT0; // P1.0 output P1OUT |= BIT0; // P1.0 high P1DIR |= BIT6; // P1.0 output P1OUT |= BIT6;
Ach und: Ist BIT0 und BIT6 überhaupt eine Bitmaske? Oder ist es eine Bitnummer? Wenn es eine Bitnummer ist, dann musst du so schreiben: xxx ^= 1 << BIT0 xxx ^= 1 << BIT6
-
Thread
RTC(Overflow-Int.) und Output-Compare Int. mit einem Timer
Timer nur das macht. ------|Ovfl|------|Ovfl|------|Ovfl|------ Kann ich dann einfach das OC-Bit setzen/löschen, oder muss ich da iwas beachten? Grüße Marcel
Marcel schrieb im Beitrag #1755702: > Kann ich dann einfach das OC-Bit setzen/löschen, oder muss ich da iwas > beachten? Genauer gesagt, kann ich ohne den Timer anzuhalten: TIMSK2 &= ~(OCIE2A); bzw. TIMSK2 &= ~(OCIE2A); schreiben? (Das TOIE2-Bit ist
-
Thread
VGA - Fortsetzung
Setz mal x> , x< und y> , y< Also Grenzen setzen auf das Sichtbare... Gruss
Pos_x); Pixel_y <= unsigned(Pos_y); [/vhdl] Aufteilung beim Zybo ist wie folgt: Rot: 5 Bit (0 - 4) Blau: 5 Bit (5 - 9) Grün: 6 Bit (10 -15) Zusammen sind es die 16 Bit des Vectors "Color"
-
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
STM32L031K6 Sprung in Bootloader aus Applikation funktioniert nicht
->LOAD = 0; SysTick->VAL = 0; //Alle Interrupts deaktivieren __disable_irq(); //PRIMASK-Bit setzen (nur NMI/HardFault Interrupt möglich) //Das erste Datenwort im System ROM (= Speicherbereich des Bootloaders) enthält die Adresse, //mit welcher der Stackpointer geladen wird. Dieser
BootLoaderUniversalAnsprungFunktion(void) // ™pegel { __disable_irq(); //Interrupts deaktivieren, PRIMASK-Bit setzen RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; //Takt aktivieren SYSCFG->CFGR1 &= ~SYSCFG_CFGR1_MEM_MODE_1; //Bit löschen SYSCFG->CFGR1 |= SYSCFG_CFGR1_MEM_MODE_0; //System Memory auf Adresse
-
Thread
Nullen im Bitstring zählen
Der generelle Algorithmus um die Bits zu zählen wäre in etwa so: - Zählvariable auf 0 setzen - Vom Wert alle Bits bis auf das niederwertigste ausmaskieren (AND mit 1) - Ergebnis zur Zählvariable addieren - String nach rechts schieben
Ahnung von MIPS mit MARS, aber man könnte es bestimmt über das Carry lösen: 1. Zählvariable auf 0 setzen 2. Dummyvariable auf 0 setzen 3. String in Carry Schieben 4. Dummyvariable zu Zählvariable mit Carry addieren 5. zurück zu 3. bis alle 8 bits durch sind.
-
Thread
LCD ansteuerung ueber pic18f4550
also, wenn ich INTCON2bits.RBPU auf 0 setze, was bedeutet das alle PortB Pullups aktiviert sind, und ich zugleich die beiden wichtigen pins, SCL und SDA, auf input stelle, dann bekomme ich das erhoffte dauer high signal. dauerhaftes high signal hat man, wenn eben keine daten gesendet werden. wenn ich aber (SSPCON1bits.SSPEN=1; //Enable I2C-Bus) setze, dann wird mein signal wieder komplett verhunzt. das ganze sieht momentan so aus: #include <i2c.h> #include <p18cxxx.h> unsigned char by; void main(void)
-
Thread
Neues Oszilloskop gesucht
bezahlen will. BTW: Vor dem RTB hab ich ja ein Hameg HMO2022 genutzt. Auch da waren die Hameg 8Bit schon viel besser wie Rigol 8Bit die damals eher wie 6Bit aussahen. .-) Deshalb meinen Rat sich das alles mal live anzuschauen. Vielleicht sind die eigenen Ansprueche ja geringer und dann kann man
> Und, wie ist der Preisquotient, RTB/Rigol? 2Bit :) Vanye
-
Thread
Brauche eure Hilfe zum Programmieren
;"Sicherungskopie" 2.Nibble andi AL, 0b11110000 ; unteres Nibble auf Null setzen out PORTA,AL rcall lcd_enable ; Enable-Routine aufrufen pop AL ; 2. Nibble swap AL ; untere 4 bits (Nibble) nach
ret ; Erwartet die Position in AL lcd_cursor: sbr AL, 0b10000000 ; Bit 7 setzen rcall lcd_command rcall wait5ms ret lcd_print: lpm ; Laden tst R0 ; ist Zeichen =0 breq lcd_pend ; gehe zu end mov
-
Thread
Pin an PortC
nur zu Problemen, da dein Konzept nicht durchgängig konsistent ist. (z.B. Wie würdest du PC0 auf 1 setzen?). Also lieber die 'mitgelieferten' PCn defines belassen. Aber wenn du von PortC nur das Bit2 (=PC2) setzen willst, dann kannst du auch gleich PORTC|=0x04; schreiben, dann hat sich die Bitschieberei
es gehen: PORTC |= (1 << Portbitnummer); Ruecksetzen PORTC &= (1 << ~Portbitnummer); Ich setze meine Bits sonst auch wie bei Dir genannt: PORTC |= 0x04; oder ruecksetzen PORTC &= ~0x04; . Ich mag das Bitschieben auch nicht. Gruss, Gerhard
-
Thread
LCD E8504CZZ von Pollin und allgemein
erste Zeile sieht das also etwa so aus: - 79 4-Pixel-Blöcke reintakten per - Pixeldaten setzen - XCK setzen - XCK löschen - 80. 4-Pixel-Block setzen - FLM setzen - LOAD setzen - XCK setzen - XCK löschen - LOAD löschen - FLM löschen Schau Dir mal
das 'FLM setzen' einfach(tm) ganz an den Anfang