-
Thread
Würde gerne Assembler in C umschreiben, aber ich blick's net
LOOP1 ; 2 => 9 cycles [/avrasm] Was ich schon rausgefunden habe: - Der Zähler ist eine 24bit Variable über die Register R28-R30, wobei R30 bereits Teil des Z-Pointers ist. - R24-R26 enthält wohl die Schrittweite (auch als 24bit Variable) - lpm - lädt den Wert aus einer Tabelle in das
nähere mich so dem Original (aba nur da wo es nötig is). > Das T-Flag könnte man auch anders setzen: Hm, das scheint mir ein sehr interessantes Verfahren zu sein. Muss ich aber erst etwas setzen lassen (geistiger Wiederkäuer :D ). Wird das T-Flag beim ISR-pro- und -Epilog berücksichtigt?
-
Thread
AVR: zwei Schrittmotoren mit einem Timer
macht über seine Comparematches das Timing für die Schritte. In den Timer1 ISR wird: das FOC2x bit gesetzt (erzeugt ein Toggle vom Timer2 zum Motor) OCR2xy 2µs, oder wie lange auch immer der Puls dauern soll, höher als TCNT2 setzen. Motorpin wird dann zurückgetoggelt seinen eigenes OCR1xy für nächsten Puls setzen. Wird interessant, ob man die Timings, die richtigen Pegel beim Toggeln, das Ein/Ausschalten des Motors über die COM2xy Bits und keine extra Schritte bekommt *grins*
-
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
Toshiba 32-bit CISC Controller
find much more :-(. I'll try to find a demo board manual or starter kit manual, they should explain a bit more, unless is one of those products (closed) that forces you to buy their tools and boards at exorbitant prices (but then all _works_ (ejem)). Gruß Ale
es läuft einwandfrei (allerdings wird die Prorammspeed durch die notwendigen Wait-states und den 8-Bit externen Datenbuszugriff gebremmst). Zurück zum 95FY64: Ich setze diesen Prozessor seit ettlichen Jahren ein und hatte keine Probleme damit. Im letzten halben Jahr sind jedoch einige ausgefallen
-
Thread
Hilfe zu AD-Wandler
integriert. Wie bekomme ich dann die Werte vernünftig angezeigt? Ich kann auf mein Display keine 10Bit werte in eine Variable packen oder?
Du musst diese 10-Bit in ein BCD-Format wandeln. 10 Bit entsprechen einem Zahlenraum von 0 bis 1023, das wiederum entspricht 16 Bit im BCD-Format, da jeweils 4 Bit einer Ziffer im Zehnersystem entsprechen. siehe: http:
-
Thread
Anti-Aliasing-Filter und die THD
differenziellen Eingängen. Du verlierst nur 6 dB vom Signal, also 89 dB statt 95 dB SNR bei 16 Bit. Damit kann man meist gut leben, sonst würde man doch gleich einen 18 Bit ADC einbauen. Den Aufwand mit differenziellen Eingängen macht man meist nur wenn man echte 16 Bit oder sogar mehr braucht
haben auch Toleranzen, sind temperaturabhängig, ... udok schrieb im Beitrag #6921089: > Die 16 Bit kommen mir reichlich überzogen vor. Ich schätze dass die > Genauigkeit der Detektoren deutlich unter 1% ist, damit reichen doch > 8 oder 12 Bit aus? Leider nein. Rauschfreie 12 Bits würden reichen
-
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
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
PIC32 Oscillator Mode
mit der zaubertastenkombination [stgr]+[F] und "FNOSC" wurde mir das hier angezeigt: bit 2-0 FNOSC<2:0>: Oscillator Selection bits 000 = Fast RC Oscillator (FRC) 001 = Fast RC Oscillator with divide-by-N with PLL module (FRCDIV+PLL) 010 = Primary Oscillator (XT, HS, EC) (1) 011 = Primary
verwendet und dadurch das Taktsiganl einspeisst. Also muss ich ihn für ein 8MHz quarz auf XT setzen? vielen Dank für die Antworten!
-
Thread
LCD initialisieren mit ATmega8, kann mal einer draufschaun?
fürs bessere hinsehen weggelassen. ldi temp, 0b00000011 ;Display 8 bit out lcd_port, temp ;Daten aufs port legen ldi temp, 0b10000000 ; Enable auf high setzen out lcd_port, temp ; Aufs port schreiben Fällt dir da gar nichts auf? Klar, Enable wird high
Hi Du überschreibst um ein Bit zu setzen, den gesamten Port. Mag zwar jetzt funktionieren. Aber wenn da noch andere Sachen dranhängen geht das nicht mehr. MfG Spess
-
Thread
Suche Mentor für Entwicklung eines Audio-Messwert-Erfassers
, 24-bit Yes Yes Also auf Seite 22 sieht man beim I2S Timing Diagram, dass vor den 24Bit "Nutzdaten" ein Bit zum Vorspülen getrunken wird und nach den 24 Bit Nutzdaten wird auf der BCK-Leitung noch lustig
4 Clocks für ein Bit des I2S-Streams Zeit haben.
-
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
Falsche Anzeige nach Spannungsverlust
DDRE = 0b00110000; // Setze Buzzer als Ausgang (Bit4 = 1, Bit5 = 1) PORTF = 0b00000000; DDRF = 0b00000000; PORTG = 0b00000000; DDRG = 0b00000000; } /* ** Funktionen für die UART-Schnittstelle */ // Initialisiere
<UCSZ11)|(1<<UCSZ10); // UCSR1B = UCSR1B | 0b00011000; // Ermögliche Empfangen und Senden (Bit3 = 1, Bit4 = 1) // UCSR1C = UCSR1C | 0b10000110; // Setze Frame Format: 8 data (Bit1 = 1, Bit2 = 1), 1 stop bit (Bit3 = 0) } // Empfange Daten über UART nonstop unsigned char UART_Receive(void
-
Thread
PIC18F25k80 Probleme mit dem ADC
Analogeingänge auf Digital umschalten ANCON1 = 0x00; // Bis auf AN0 ADCON0bits.ADON = 0b1; //Analogeingang definieren ADCON0bits.CHS = 0b00000; ADCON1bits.VCFG = 0b10; //Analoge Referenz festlegen ADCON1bits.VNCFG = 0b0; ADCON1bits.CHSN = 0b000;
TRISB = 0x00; // Bis auf den analogen Eingang TRISC = 0x00; ADCON0bits.CHS = 0b00000; //Analogeingang definieren ADCON0bits.ADON = 0b1; ADCON1bits.VCFG = 0b10; //Analoge Referenz festlegen ADCON1bits.VNCFG = 0b0; ADCON1bits.CHSN = 0b000;
-
Thread
Automotive: Temperaturmessung mit PT100
misst zusätzlich den Strom und korrigierst die Widerstandsmessung damit. Ok? Aber das mit deinem 20-Bit-AD-Wandler... ich dachte, meine Lösung mit Stromquelle wäre schon aufwendig. Wobei ich 20 Bit auch für sportlich halte. Da kann ich locker 8 Bit wegwerfen von :-)
Sven P. schrieb im Beitrag #2270725: > Wobei ich 20 Bit auch für sportlich > halte. Da kann ich locker 8 Bit wegwerfen von :-) So isses. Das Leiterkartenlayout dafuer ist nicht trivial. Die meisten ADC die in uC integriert sind haben 8 .. 12 Bit. Damit
-
Thread
Maskentest (Eye) auf UART, Werte?
lang ist, ich frage mich aber aktuell wie denn die Toleranz liegt, > bzw auf was ich die Werte setzen soll. Das kommt drauf an, wie der Empfänger das Startbit erkennt und wie er das nachfolgende serielle Signal abtastet.
Buskollisionen, ...) findet man mit anderen Werkzeugen besser. Ich triggere auf die fallende Flanke und setze die Nachleuchtdauer auf "ewig". Und dann sehe ich mir an, was sich da tut. Danach das selbe mit der steigenden Flanke. Und fertig ist der Test, ob "zu kurze" Bits auf der Leitung unterwegs sind. Gleichzeitig
-
Thread
AVR Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung !
Jungs, macht doch das SPI zu Fuß ... dann könnt Ihr die Zeichen ausgeben wie Ihr wollt. 4 Bit , 8 Bit , 9 Bit oder 21 Bit. So schwer isses ja nich
von TIMER1 zu definieren. Das scheint mir aber gar nicht (mehr) nötig, weil allein schon durch das Setzen von WGM13-WGM10 = 0111 der TOP-Wert auf 0x03ff gesetzt wird. (10-Bit PWM) Ich will das ICR für einen anderen Zweck nutzen, das kann ich dann doch wohl machen, oder? Danke schon einmal für die
-
Thread
ATmega328 CLKDIV8 geht nicht
auf ca. 1 Hz bringen soll. > > Das macht man auf anderem Wege, als den SystemTakt runter zu setzen. > Dafür verwendet man z.B. einen der Timer. Ähm ja. Aber bei 16 MHz und 8 Bit Timer und 1024er Prescaler komme ich leider nicht wirklich nahe an den 1Hz Tackt ran und warum sollte ich nicht den
09 ATmega48P/88P/168P/328P Seite 38 The CKDIV8 Fuse determines the initial value of the CLKPS bits. If CKDIV8 is unprogrammed,the CLKPS bits will be reset to “0000”. If CKDIV8 is programmed, CLKPS bits are reset to“0011”, giving a division factor of 8 at start up. This feature should be used if the
-
Thread
STM32 Umfang
WRITE_REG usw. sind eigentlich Makros und stammen aus der stm32f10x.h Header Datei [c] #define SET_BIT(REG, BIT) ((REG) |= (BIT)) #define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) #define READ_BIT(REG, BIT) ((REG) & (BIT)) #define CLEAR_REG(REG) ((REG) = (0x0)) #define WRITE_REG(REG,
H. schrieb im Beitrag #5727071: > aber ich habe schon einige male (nicht bei > ST) erlebt, dass Bits verrutscht waren. Beim STM32F373 war (ist?) das Conversion Done Bit des SD-ADC falsch definiert (als Overrun Bit) sodass man das erste Ergebnis verpasst und ggf. einen Zeitversatz erhält... Ob das
-
Thread
In Dauerschleif eine Aktion alle 30s durchführen oder direkt am Start
Stefan ⛄ F. schrieb im Beitrag #6794688: > Weil millis() einen 64 Bit Integer liefert. Echt? Aber auch nur auf 64Bit Arduinos! Die sind Allerdings erheblich in er Unterzahl.
EAF schrieb im Beitrag #6794709: >> Weil millis() einen 64 Bit Integer liefert. > Aua! Ach Sch.... ich habe das mit Java verwechselt. Da ist "long" 64 bit.
-
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
Taschenrechner Kommunikation
Wert setzen OCR1A = 9216-1; [/c]
hat. Um die Kennzeichnung gültig/ungültig im Programm zu vermerken, könnte man sechs einzelne Bits in einer 8-Bit Variablen pro Casio verwenden. Das Setzen würde im SAVE Teil erfolgen und das Prüfen im SEND_DATA Teil. Ist es richtig, dass es pro Casio sechs Datensätze (Variablennamen A,B,C,D,
-
Thread
ATmega8 und UART => Code bringt Einsteiger zum Verzweifeln
mir als ziemlicher bullshit. [c] void messung (void) { sbi (ADCSR, ADIF); //ADIF-Bit Setzen(Messzyklus starten) loop_until_bit_is_clear(ADCSR, ADIF); //ersten Messwert verwerfen sbi (ADCSR, ADIF); //ADIF-Bit Setzen(Messzyklus starten) loop_until_bit_is_clear
(uint8_t data) //sendet ein Byte über das Uart { while(bit_is_clear(UCSRA, UDRE)); //warten bis UART bereit ist zum senden UDR = data; //data ausgeben } //sendet einen String über das Uart void uart_puts(char *s) //setze den
-
Thread
Attiny45, timer tut nichts?
> CTC Mode einstellen vergessen! Aber ich setze doch den counter manuell zurück? Ich möchte selbst steuern, wann er sich zurücksetzt. > das sind aber keine 4096, sondern 2048. ok, ich hab mal vier bits gesetzt (CS10 bis 13) -> ca. 16k Prescaler
Hz "Flimmern" nennst Du "Blinken"? Du zeigst uns wirklich Dein aktuelles Programm (also ohne Setzen der PSR1/PCKE Bits)? CKSEL Fuse?
-
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
Zeitgesteuerter Ablauf mittels einer "State Mashine"
es sein das in einem ungünstigen Zeitpunt ein Interrupt ausgelöst wird und danach irgendwie dieses BIT gelöscht wird? Das ganze Programm läuft mal 2Std,4Std,8Std,24Std,48Std ohne Probleme und dann ist dieses Bit gelöscht. Nun gut ich könnte in der for(;;) Schleife reinschreiben das ich das Bit setze
das das Bit das signalisiert das ein neuer Ablaufwert gesetzt wurde fehlt und das setzten ist mit den Code unten. Dieser ist nicht in der ISR und ich denke das es wie oben schon beschrieben wurde nur beim setzen
-
Thread
I2C Bus - welche Adresse ist das?
Beitrag #4585450: > Versuch mal 0x2E kommt auf die Betrachtungsweise an, die einen gucken nur 7-Bit 00-7F (ohne I2C Erweiterung) die anderen shiften mit dem R/W Bit weil Bit0 R/W ist Das wäre dann 01-FE (oder so ähnlich)
Man sollte sich nicht durch das Datenblatt verwirren lassen. In dem Zeitdiagramm wird richtig eine 7-Bit I2C Adresse gezeigt und in der Tabelle werden 8-Bit Baseaddressen (z.B. $D0) angegeben. Das passt nicht zusammen. So schwer ist es doch eigentlich gar nicht, die 7-Bit I2C Adresse von den 8 Bit des
-
Thread
Bitoperationen Zusammenfassen
Hallo! Ich versuche mich gerade an die Programmieurng von AVRs zu gewöhnen. Um ein Bit zu setzen ist nach allem, was ich in diesem Forum lese, die Form DDRC |= (1<<DDC5); DDRC |= (1<<DDC6); DDRC |= (1<<DDC7); anzuwenden, was sich zusammenfassen läßt in DDRC = (1<<DDC5)|(
noch benutzen. Also schreibe ich PORTC = 0x02 um in PORTC |= 0x02 um Bit 1 zu setzen und PORTC &= ~ 0x02; um Bit 1 auf 0 zu bringen. Das ist überschaubar, solange der Zustand, den das Bit bekommen soll bekannt ist. Bei PORTC = (cmd >> 7) Ist er aber in cmd eingeschlossen
-
Thread
WS2812/2811 mit PIC asm.Verzweiflung!
: Hole nächstes Byte aus Speicher in X Bitzaehler = 8 Schleife2: Schiebe X ein Bit nach links ins Carry Wenn Carry gesetzt, springe zu Led_An Setze DOUT=1 <Verzoegerung Bit0_High> Setze DOUT=0 <Verzoegerung Bit0_Low> Springe zu Nächstes_Bit Led_An: Setze DOUT=1 <Verzoegerung Bit1_High> Setze DOUT=0 <Verzoegerung Bit1_Low> Nächstes_Bit: Bitzaehler-- Wenn Bitzaehler > 0 springe zu Schleife2 Bytezaehler-- Wenn Bytezaehler
-
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
Einzelnen Bits eines Bytes PINs zuweisen
sicher, dass man auch auf dem MSP-Compiler mit Standard C-Mitteln durch P1 |= ( 1 << 0 ); das Bit Nr 0 am Port P1 setzen kann. Kein Mensch zwingt dich, das über einen Zugriff über P1.0 zu erledigen.
dann auch immer der lesende Zugriff auf P1 geht. Entscheidend ist nur: P1 lesen, die unteren 5 Bits auf 0 setzen, vom Counter die unteren 5 1-Bits übernehmen, auf P1 schreiben. Wenn der Zustand der restlichen 3 Bits an P1 egal ist, dann natürlich P1 = Counter; Oder auch Kombinationen davon
-
Thread
SPI funktioniert nur mit Tastkopf
A. K. schrieb im Beitrag #2979014: > Dann wär das Programm vielleicht interessant. Beim Slave setze ich im CR1-Register das SoftwareSlaveManagement-Bit (Bit 9), sowie den Prescaler, gemäß Datenblatt: "set the SSM bit and clear the SSI bit in the SPI_CR1 register" Beim Master zusätzlich noch das
Jürgen Ungerer schrieb im Beitrag #2979070: > Beim Slave setze ich im CR1-Register das SoftwareSlaveManagement-Bit > (Bit 9), sowie den Prescaler, gemäß Datenblatt: "set the SSM bit and > clear the SSI bit in the SPI_CR1 register" > > Beim Master zusätzlich
-
Thread
Neue schnellere ARMe von Philips - bastelfreundlich!
eZ8,68xx üblich. Durch reinschreiben einer Maske ins entsprechende set/clear Register lassen sich Bits einzeln setzen/löschen. Das ist aber eine Eigenschaft der Ports, nicht des Prozessors, und interessiert den Compiler nicht im geringsten. Nur schreibt man dann natürlich auch nicht port1 |= 0x01
Version: CPSR |= xxx; // Interrupts abschalten US_IMR |= 0x80; // Port lesen, Bit 7 setzen, Port schreiben, CPSR &= ~xxx; // Interrupts einschalten. Die rechte Sequenz setzt das Bit direkt, weil das US_IER-Register speziell dafür eingerichtet wurde: US_IER = 0x80
-
Thread
Drehimpulsgeber
= Encoder_b Zustandswechsel = Zustandswechsel And &B00001111 ' And 15 benötige nur 4 Bit If Zustandswechsel = &B00000100 Then ' = 4 erst muss 01 kommen, dann 00 Decr Enc_wert : Encoder_richtung = 0 ' Wert abziehen und Richtung setzen
andere innerhalb dieser Zeit schalten, sieht 1.) 3.) Du musst einfach nur regelmäßig die beiden Bits lesen und zu den beiden zuletzt gelesenen packen. Ich mache dies, indem ich die neuen Bits von unten in das Register mit den alten Bits hinein schiebe. Die oberen 4 Bits in dem Byte schneide ich per
-
Thread
deklaration mit define,wie richtig, so doch nicht oder?
etwas noch viel besseres: Er kennt diese Schreibweise und optimiert sie wenn möglich zu bestimmte Bit-Setz bzw. Bit-Lösch Operationen, wenn dies geht. > while(!(Eingabeport==0xff)) > > damit ist mir jetzt geholfen. Damit ist deine ganze schöne Flexibilität, um die es dir in erster Linie ging
im Code dann entsprechend aufdröseln. Mit noch ein paar #define mehr kann man zb die Vorgang des Bit-Setzens bzw. Bit-löschens zb für LED hinter einem Makro verstecken, so dass sich der Code in der Hauptschleife so liest [C] int main() { .... while( 1 ) { if( !( TASTER_PIN & ( 1
-
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
AVR blockiert den I2C
>Meine Frage war lediglich..alle anderen Bits..automatisch 0 werden Ja, dem ist so! Du könntest das TWCR einlesen mit "in" deine Bits in einem deiner Temp register setzen mit deinem "einleseregister" verodern und mit "out" ins TWCR zurückschreiben
in r16,TWCR out TWCR, r16 sollte hierbei schon reichen. Das TWINT Bit ist bereits gesetzt, um es zu löschen musst Du es setzen. TWEN ist gesetzt und soll es bleiben, glieches gilt für TWEA. gibt also keine Notwendigkeit (meistens jedenfalls) an den Bits was zu ändern
-
Thread
Verständnisfrage Timer1 ATMEGA 328P
Flanke ) CS10 bis 12 Prescaller einstellen TIMSK1 ICIE1 für den Input Capture Interrupt setzen TOIE1 für Überlauf setzen Dann im Programm den Timer mit sei() starten Wenn am ICP1 PIN eine fallende Flanke erkannt wird => Sprung in ISR TIMER1 CAPT. in der ISR : -ICR1 in 16 Bit
zusammensuchen. Ein paar Bits davon hatte ich ja schon erwähnt. Die anderen musst Du setzen, je nachdem, ob Du verhindern magst, dass extrem kurze Pulse ein ICP auslösen, welche Flanke ICP auslösen soll und wie schnell der Timer
-
Thread
Brauche Hilfe bei Projektarbeit
Kanal 1 ausgewählt temp = temp - 260; // Offset von 1,27V abziehen (1,27V entsprechen 260 Bit) press = press - 48; // Offset von 0,232V abziehen (0,232V entsprechen 48 Bit) // Druck und Temperatur übertragen // Timer programmieren, um Wartezeit von 10s zu realisieren
ups, hab gerade gesehen das AVRs beim setzen von TXEN das von alleine machen. Hmmm ...
-
Thread
C8051F020Dk Port4-7 aktivieren bzw. freischalten (SFR)?
da. > Denn habe ich auch das ObigeP74OUT |= (0<<2); auch probiert, gleiche Ergebnis. > Wenn du bits selektiv null setzen möchtest dann & verknüpfen: P74OUT&=0xf7; //setzt bit 3 null restlichen bleiben wie zuvor. Zum setzen von bits | verknüpfen: P74OUT|=0x08; //setzt bit 3 eins restlichen bleiben
flomann schrieb im Beitrag #3194131: > Wenn du bits selektiv null setzen möchtest dann & verknüpfen: > P74OUT&=0xf7; //setzt bit 3 null restlichen bleiben wie zuvor. > Zum setzen von bits | verknüpfen: > P74OUT|=0x08; //setzt bit 3 eins restlichen
-
Thread
AT90CAN128 UART Bug? Atmel rausschmeißen?
Ja, und wieso sind vor und nach dem Lesen von UDR1 in dem Regsiter UCSR1x die Bits verdreht ?
MPCM1 = 1 UCSR1B = 0x00 keine Interrupts an, nichts UCSR1C = 0x26 0b00100110, even parity, 1 stop bit, character size = 8 MPCM Protocol 17.10.1 "If 5- to 8-bit character frames are used, the Transmitter must be set to use two stop bit (USBSn = 1) since the first stop bit is used for indicating the
-
Thread
Durchflussmesser an Atmega32
den INT2 nicht zum laufen bringen. Laut Datenblatt gibt es ihn zwar und man kann über GICR auch die Bits dafür setzen aber bei MCUCR tauchen dann nur noch bits für INT0 und INT1 auf. Ich lese das Datenblatt jetzt zum x-ten mal aber ich werd nicht schlauer und INT1 und 0 sind bei mir leider schon durch
INT2 nicht zum laufen bringen. Laut Datenblatt > gibt es ihn zwar und man kann über GICR auch die Bits dafür setzen aber > bei MCUCR tauchen dann nur noch bits für INT0 und INT1 auf. Ich lese das > Datenblatt jetzt zum x-ten mal aber ich werd nicht schlauer und INT1 und > 0 sind bei mir leider schon
-
Thread
FT232 ähnliches USB mit atmega32u4 unter C
mit hterm hast, kann das daran liegen dass Class Requests nicht korrekt arbeiten. Ich würde mal das Bit für den BreakSupport auf 0 setzen. Ansonsten kannst du dein Device auch mal gegen usb2cv bzw usb3cv von usb.org testen. Dort gibts auch Test Routinen für CDC. Die Tools sind allerdings etwas hakelig
hterm hast, kann das daran liegen dass Class > Requests nicht korrekt arbeiten. Ich würde mal das Bit für den > BreakSupport auf 0 setzen. ok. als Baudrate für hterm sollte doch passen was im Gerätemanager eingetragen ist. es ging besser als ich noch eine DTR-Abfrage eingebaut habe die PJRC
-
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
Problem mit Sprungadressen und Timer
Aktion anfängt. Welche Aktionen sind das. Da ist zum ersten die Aktion: Pin PA0 auf 1 setzen UNd zum zweiten ist die andere Aktion: Pin PA1 auf 0 setzen Und dafür setzt du jetzt die kanonischen Lösungen ein. Einen Pin auf 1 setzen macht man mit port |= ( 1 << Pin ) und einen
mittels [C] PORTA |= (1 << PORTA0); PORTA &= ~(1 << PORTA1); [/C] immer nur das eine Bit ansprichst, das du auf 0 oder 1 setzen willst. Es ist wirklich ganz einfach. Durch die letzte Form ist gewährleistet, dass die anderen Bits an diesem Port nicht verändert werden.
-
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
HP Solution Center funktioniert nicht mehr
war_ : Wie kann ich ein Dokument mit mehreren Seiten einscannen, ohne sie hinterher zusammen zu setzen? LG Gerald
und dann die Scan Funktion anstoße und dann in den Task Manager schaue, dann sind hpdirec.exe (32 Bit) angestoßen (das ist glaube ich das Solution Center) und HP Scan Application Resources (32 Bit) geöffnet. Hilft dies weiter?
-
Thread
Abhörtechnik "Wanzen" finden.
48kByte RAM eine Bitmaske zu ziehen und so Bitreihe für Bitreihe (48k * 8) auf 1 oder 0 zu setzen, bzw. auf den Speaker zu kopieren. Wenn man das schnell genug macht (etwa 10 Sekunden gingen beim Apple), dann versteht man da schon was, das Ohr 'dithert' das Bit.
die 48kByte RAM eine Bitmaske zu ziehen > und so Bitreihe für Bitreihe (48k * 8) auf 1 oder 0 zu setzen Damit wäre das eine 8-bit Quantisierung. Um zB eine 8bit Hüllkürve zu erfassen brauchst du trotzdem 8 einzelne bits. Damit wäre die Auflösung dieses Samples technisch gesehen 8bit (256 Zustände
-
Thread
STM32F103: Unterschiedliche Puls-Pausezeiten, Pausezeiten länger
im RAM laufen. Oder besser, lade die Basisadresse des GPIO Block in ein Register und toggle durch setzen der entsprechenden BSSR Bits mit Codeausfuehrung aus dem RAM
RAM laufen. Oder besser, lade die > Basisadresse des GPIO Block in ein Register und toggle durch setzen der > entsprechenden BSSR Bits mit Codeausfuehrung aus dem RAM Puuuuuh... aus dem RAM laufen lassen ... erfordert für mein Setup grundsätzliche Änderungen (weil bisher nicht vorgesehen und bisher
-
Thread
STM32F103 Timer
Nr. 19 immer setze und bit nr. 3 setze bzw. lösche jenachdem ob eine 0 oder 1 kommt. So wird dann quasi gleichzeitig der Pin gesetzt und gelöscht, wobei das setzen gewinnt. Wie gesagt funktioniert auch wunderbar.
Beitrag #1824639: > Nein verwendet wird Pin 3, den erreiche ich, indem ich im das BSRR > Register das bit Nr. 19 immer setze und bit nr. 3 setze bzw. lösche > jenachdem ob eine 0 oder 1 kommt. Das entspricht aber nicht dem von Dir geposteten Code > GPRIOE->BSRR = data[0]; Das Gleichheitszeichen setzt