-
Thread
5 Zeiten mit ICP messen -> Problem mit den Timerwerten (ATmega8 und C)
Senden, Empfangen, ReceiveInt aktivieren UCSRC = (1<<URSEL)|(3<<UCSZ0); // Frame Format setzen:8data, 1stop bit (URSEL=1 -> UCSRC->Settings werden genutzt) } void ioinit (void) { DDRB = 0b00000110; //PortB konfigurieren PORTB = 0b11000011; DDRD = 0b00000010
TXC solltest du _auswerten_ (abfragen), um die RS485 wieder auf Empfang > schalten zu können. Das Bit wird (vom Controller) gesetzt, sobald das > letzte Bit den Puffer verlassen hat und kein neues im UDR steht. Eben, und um auf das Setzen durch die Hardware warten zu können, muss er das Flag ja
-
Thread
Beeinflussung von ADC Messungen
verstanden. Die Kanäle kann ich mir im Datenblatt unter Table 17-4. aussuchen bzw. die richtigen Bits setzen. Ich habe jetzt mal folgendes probiert [c] void neu1() { ADMUX |= (1 << REFS0) | (1 << MUX0); //Sensor an PB2 ADCSRA |= (1 << ADPS2) | (1 << ADPS1); //Teilungsfaktor
starten ADMUX |= (1 << REFS0); [/c] Jobst M. schrieb im Beitrag #4740541: > Schalte die MUX Bits bitte nicht einzeln. Wähle einen Kanal aus, indem > Du ALLE MUX Bits korrekt setzt. Dies verstehe ich noch nicht. MUX0 und MUX1 kann ich doch erst in der Funktion setzen, oder? Viele Grüße Torsten
-
Thread
Bite um Kontrolle meines Schaltplans und Layoutes
Tag zusammen Habe mein Versuchsboard überarbeite. Zur Historie: Version 1.0 ist abgraucht (erster Kontakt mit µC) Version 2.0 Funktionsfähig aber nur Atmega 8 (sieht nicht wirklich gut aus 90° Winkel usw.) Version 3.0 Funktionsfähig (allerdings fehlt noch zur V3.5) -USB Port mit FT232RL ( mein Erstkontakt zu SMD "Angst :-) ) -I2C I/O Erweiterung PCF 8574 P -das Layout, zum ersten mal, mit Top und Bottom. Soweit wärs das... würde mich freuen wenn ein Profi mal drüberschauen könnte. Grüße Rau
-
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
LCD 4x40 mit 2 Controllern
Eventuell könnte man das Display ja auch im 4bit Mode ansteuern. Dann wären ja Pins übrig für die 2. Enable Leitung...
AHHH, ich glaub jetz weiß ich, was ihr die ganze Zeit gemeint habt :-D MC2 sendet MC1 auf 4 oder 8 Bit (je nach dem) die Daten. MC1 schickt Datenbits für E1 (sagen wir PD 0-7) - E1 wird high und Bits werden dargestellt. Nun hat MC1 inzwischen die Bits von MC2 eingelesen und sendet diese nun an 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
Atmega328p fuses falsch gesetzt
noch einen weiteren AVR rumliegen? Je nach AVR-Typ genügt es u. U., einfach nur eine Fuse zu setzen, damit er seinen internen Takt an einem Pin heraus wackeln lässt. OK, diesmal die Fuse richtig setzen. :)
Hallo, für stabile 2MHz kann man in der Arduino IDE (getestet mit Mega2560) Port/Bit auf Arduino UNO Pin 'D13' [c] #include <avr/io.h> #ifndef sbi #define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) #endif #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit
-
Thread
Timer1-Interrupt
, 0 ;nicht zum Bitsetzen springen, ;wenn schon gesetzt rjmp BIT_SETZEN cbi PORTC, 0 ;Bit 0 löschen reti BIT_SETZEN: sbi PORTC, 0 ;Bit 0 setzen reti Das ist kompakt, ohne Tricks und verändert weder ein Register noch
cbi PORTx,y löscht das Bit, sbi PORTx,y setzt das Bit, sbi PINx,y toggelt das Bit, aber nur bei einigen modernen AVRs (siehe Datenblatt)
-
Thread
JTAG != JTAG? Wieso gibt's für jeden µC einen anderes JTAG Programmiergerät?
? Ja, natürlich, und zwar mittlerweile alle 8-bit-AVRs.
Funktioniert das USB AVR-Lab eigentlich auch unter einem 64 Bit Windows? Z.b. Windows 7? Und wie sieht es mit Linux 64 Bit aus?
-
Thread
Problem mit 16-Bit Zähler im Vergleichsmodus bei ATMEGA8
> Habe ich mich verrechnet oder müssen die Werte anders? Liegt daran, dass du versuchst das Bit WGM12 im falschen Register zu setzen.
Valentin Buck schrieb: > Also ich habe das mit dem Bit-Setzen von WGM12 jetzt mal weggelassen. > ... > Aber selbst mit 6349 im OCR1A blinkt der CHip nur ca. mit 1/5Hz! > Was ist da los? Was glaubst du eigentlich, warum ich deine Frage zu dem Bit oben
-
Thread
Evaluation neuer Mikrocontroller: ARM? Gesperrt
und Ti, berechnen. Die Messwerte, die eintrudeln - 16 Spannungen und 16 Ströme insgesamt -, sind 16 Bit vorzeichenbehaftete Ganzzahlen - wenn da nur eine einzige Multiplikation ausgeführt wird, werden leider schon 32 Bits draus. Ich möchte auch lieber kein float verwenden, auf solchen Embedded-Systemen
nicht mehr) Ist z.B. auch bei Atmel der grund weshalb ich auf die SAM9xxx serie nicht umbedingt setzen würde. Die werden sicher in zukunft durch die SAM9Mx bzw SAM9G serie abgelöst.
-
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
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
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
Programmablauf, Interrupts, Timer, Schrittmotor, PWM
Ahh, das struct.bit aus obigem Code nicht so übernehmen! Das soll nur eine 1-Bit-Variable darstellen, die in meinem Fall den Weg für den nächsten Motorschritt freigibt.
Na dann frohes Schaffen... Bit- & Bytebruch... ...HanneS...
-
Thread
9-bit SPI mit ATMega?
das in der Tat auch komplett zu Fuß machen. Aber das wäre ein Ansatz. Alternativ erst nach dem 7. bit vom ersten Byte CS setzen. Ist aber beides nicht mehr so schön wie Hardware SPI. Gruß, Norbert
ein getaketes Schieberegister. > Stimmt, und ? > Nimm eine 16 Bitvariable. > Pack deine 9 Bit in die letzen 9 Bits rein. > Dann schick über die SPI alle 16 Bit raus. > Damit stehen automatisch die gewollten 9 Bit im Empfangsregister von > Display. > Die ersten 7 bis sind dann einfach auf
-
Thread
Attiny als schieberegister
innerhalb eines Taktes auszuwerten geht. Warum so kompliziert? Du kannst auf der SD-Karte einfach 16-Bit-Werte speichern: 0x0000 = nichts gedrückt 0x0001 = B gedrückt 0x0005 = B und Sel gedrückt etc. Dann musst du den Ausgabewert nur im ersten Takt je nach Wert des ersten (untersten) Bit setzen,
0 0 0 0 0 0 0 0 0 0 0 0 0 0 = &h0000, alle Bits 0, nichts gedrückt 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 = &h0001, Bit für "B" gesetzt: B gedrückt. 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 = &h0005, Bits für "Sel" und "B" gesetzt: Sel und B gedrückt. [/code]
-
Thread
ATMega4809 EVSYS, total überfordert
c] sorgen scheinbar dafür sich Pin PF2 wie ein gesetzter Ausgang verhält. Obwohl kein Direction Bit gesetzt ist. Ich habe die Register dabei ausgelesen. Zeitgleich zieht es den Eingang PF1 ohne aktivierten Pullup bei mir immer sofort auf '1', wenn ich das Kabel von Masse nehme. Setze ich das PF2 Direction
lesen das das Eventsystem den I/O überschreibt. Das Verhalten von PF2 deutet jedoch daraufhin. Ich setze dennoch lieber das Direction Bit bis das eindeutig geklärt ist.
-
Thread
7 Segment Anzeige auf verschiedenen Ports
und eines für die Ausgänge auf Port }B, und der Code donnert die entweder inklusive der unbenutzten Bits raus, oder maskiert die benutzten z.B. benutzt bit 0 bis bit 5: portA = (pinA&0xE0)|CharArray[value].A;
#include <avr/interrupt.h> #define F_CPU 8000000ul // 1 << 6 = 0100 0000 bin = Maske fuer Bit Nr. 6 (von 0 an gezaehlt) // ODER Verknuepfungen sind in der Lage ein Bit zu setzen // UND - Verknuepfungen sind in der Lage ein Bit zu loeschen // wird mit der negierten Masek einer ODER Verknuepfung
-
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
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
die gemeinsten Fallstricke in C
Karl Heinz Buchegger schrieb im Beitrag #2572334: > Ein Byte mit lauter 1-Bit als Gegensatz zu einem mit lauter 0-Bits. Ich würde sogar sagen: Ein Word mit lauter 1-Bit, die Shell hat er wohl auf einer PDP11 geschrieben ;-) > Aber wenn du mich fragst, was das bringt: keinen
umständen kein char geputtet wird wenn Mist aus dem stream gelesen wird. Aber wo liegt hier der 8-Bit Fallstrick? Duck & Weg :-)
-
Thread
Zufallszahl mit vorgegebener bit-Wahrscheinlichkeit
for (int i = 0; i < 32; ++i) { uint32_t rand_value = rand(); // Setze das Bit basierend auf der Wahrscheinlichkeit p if (rand_value <= threshold) { result |= mask; } mask <<= 1; } return result; } int main() {
die jeweilige Zufallszahl kleiner als > dieser Schwellenwert ist, setzt Du das korrespondierende > Bit des Zielwertes auf 1, andernfalls auf 0. Schlecht ist hier nur die Effizienz: 32 Input-Bits für ein Ergebnis-Bit. Wenn man binär "glatte" Zahlen für p hat, z.B. 1/4 oder 3/8, dann kann man die
-
Thread
Projekt: Virtuelle Instrumente an serielle Schnittstelle
das ist für meine Vorstellung zu umständlich. Wie im Bild1 zu sehen möchte ich quasi online die Bits der Register setzen und an den MC senden. Das entsprechende Register lasse ich mir zur Kontrolle auf dem Terminal wieder anzeigen. Mit einem LA oder Oszi kann ich das Ergebnis der Registeränderung
Bei File/New stürtz das Programm ab. Win7 64Bit. Gruss
-
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
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
PWM beim Atmega8
du musst auch noch die COM1Ax und COM1Bx Register setzen - sonst kommt nix. Für Phase correct PWM (8,9 oder 10 Bit) würde ich folgendes nehmen: WGM13: 1 z.B. 8 Bit Phase correct PWM WGM12: 0 WGM11: 0 WGM10: 0 COM1A1: 1 Ausgabe an OC1A und OC1B
Hi! Setze mal die entsprechenden Ports als Ausgang....dadrüber bin ich eben auch gerade gestolpert.... Habe aber auch ein Problem mit atmega8 und PWM: Laut PDF soll er 16 Bit PWM mit Timer1 können, also 2
-
Thread
PWM PIC16F873A
Zum Rücksetzen CCP1CON &= 0xCF; um bits 5 und 4 auf Null zu setzen. Das muß vor dem Setzen der Bits passieren. Der PWM output pin muss noch als Ausgang mit dem assozierten TRIS Register aktiviert werden. (Port TRIS bit dazu auf null setzen
vordefiniert sind, brauchst Du nur diese Register nach Studium dieser Register im Datenblatt die Bits setzen oder rückstellen. Z.B PR2 = 0XFF; Zum setzen/Rücksetzen ohne andere Bits zu zerstören mache das mit OR und AND Operators und Bit shiften. CCP1CON |= (1<<n) |... wo n die Bit Offset von
-
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
ATMega32 16 MHz PAL mit Farbe ohne externen Chip
vorher geklappt hat war mehr oder weniger Zufall. Hast Du Deinen Terminmalemulator auf 9600 bps 8 bit eingestellt?
mich nicht aus. Idealerweise einfach den Text über die serielle Schnittstelle eingeben. Einfach 9600 bits pro Sekunde.
-
Thread
ATmega 644v und SPI: Problem mit 16-Bit
dataL ); // 2 Bytes zu einem Wert zusammenfuegen data16 = data16 & 0x0FFF; // die ersten 4 Bits zu 0 setzen, da die Daten nur in den letzten 12-Bit sind printf("%.2f\n", (data16 * 1.22 / 1000)); // Umrechnen in "Volt" und ausgeben return 0; } } [/c] Nach meiner Theorie sollte
Daten, die ich erwarte (Wert seiner Versorgungsspannung). Wo liegt mein Fehler? In den ersten 8Bits setze den R/W-Bit auf "Read" (Bit7), setze den zero-Bit auf 0 (Bit6), und setze danach die Adresse des auszulesenden Registers (Bit5-0). In den nächsten 8Bits schicke ich einfach Nullen. Danach wird
-
Thread
mehrer bits in #define
Hi, wie kann ich mehrere bits in einem define zuordnen? Also ich möchte gerne bestimmte einstellungen für verschiedene benutzer zuordnen. Dazu möchte ich verschiedene Bits in verschiednene Register zuordnen und dann mit HEX werten
Struktur definiert. http://microchip.wikidot.com/tls2101:bit-fields
-
Thread
ADC-Kanäle sukzessive abfragen
sw2_loop: 'Schleife Datenbits mov r17,r14 ' Bit-Dauer setzen Bitdauer ror r16 SBIS SREG,0 ' 1-Bit oder 0-Bit ausgeben? RJMP _SW2_Zero SBI portb
/w/cpp/language/bit_field.html
-
Thread
Problem mit if Abfrage in C
[c] int x = 0; int z = 0; [/c] Du benötigst hier keine "int" (16-Bit), eine 8Bit Variable tut es auch.
Ich hatte noch eine Klammerung vergessen. So ist das Makro richtig [c] #define KEY_PRESSED( Port, Bit ) ( !((Port) & ( 1 << (Bit) )) ) [/c]
-
Thread
Analogmessung mehrerer Kanäle hinterteinander, überall gl. Werte?
) ; // interne Spannung nutzen ADCSRA = (1<<ADPS2) | (1<<ADPS0); // Frequenzvorteiler: setzen auf 32 (4 MHz / 32 = 125 kHz) und ADC aktivieren ADCSRA |= (1<<ADEN); // ADC aktivieren ADCSRA |= (1<<ADSC); // eine ADC-Wandlung und danach wird das Bit wieder
1<<ADEN) ^ (1<<ADSC); // nach Aktivieren des ADC wird ein "Dummy-Readout" gemacht loop_until_bit_is_not_set(ADCSRA, ADSC); (void)ADCW; // Free Running mode setzen // ist natürlich == 0, aber so sieht man es besser. ADCSRB = (0<<ADTS2) ^ (0<<ADTS1) ^ (0<<ADTS0); // Starte erste Wandlung
-
Thread
ATMEGA168 vs ATMEGA328 RC Oscillator
tmp3 bit bit bit bit bit bit bit bit sbrc tmp0,serialin inc tmp3 st z+,tmp3 inc count breq pc+2 rjmp in_loop
immer benötigt, alles nur eine Frage der Kurzzeitstabilität. Beim Manchestercode hat man nach jedem Bit eine Synchronmarke, bei UART muss man 10 Bit kurzzeitstabil sein, beim good ole PAL muss es eine Zeile a 64us stabil sein. >Können wir uns darauf einigen? OK.
-
Thread
IDE mit Fokus auf Assembler für Umsteiger AVR -> STM32
selbst erlebt habe. Ich habe ein IC per SPI mit einem F411RE (96 MHz CPU) angesteuert. Code für das setzen von CS ist folgender: [c] void Spi_ChipSelect(SPI_TypeDef *SPIx, bool select) { if(select) { if(SPIx == SPI1) { GPIO_ResetBits(SPI1_CS_GPIO_PORT, SPI1_CS_PIN
== SPI1) { GPIO_SetBits(SPI1_CS_GPIO_PORT, SPI1_CS_PIN); } else if(SPIx == SPI2) { GPIO_SetBits(SPI2_CS_GPIO_PORT, SPI2_CS_PIN); } else if(SPIx == SPI3) {
-
Thread
Entprellen (kein AVR) Gesperrt
AVR uint32_t nehmen und 4 Ports per Shift zusammen fassen. Manche ARMs haben ulkiger Weise trotz 32Bit Architektur nur 16Bit Ports und 16Bit Timer. Da kann ich nur sagen, was hat deren Entwickler denn geraucht.
, niemand würde es > vermissen. Es wird aber vom GCC zum Umsortieren von Bits verwendet, was hielt, wenn mehr-Bit-Werte eher nach Layouterfordernissen auf die Ports verteilt sind. Ganz ohne Einsparungen ist das nicht, um so mehr, je "wilder" die Bits verteilt sind. Man kann eben
-
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
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
STM32F100VE: wo sind die Timer, wo sind sie nur?
aehnlich dem F446 Errata "Delay after an RCC peripheral clock enabling". Laesst sich das TIM12 Register Bit im Debugger setzen?
Uwe Bonnes schrieb im Beitrag #4080109: > Laesst sich das TIM12 Register Bit im Debugger setzen? Nein, nur die von mir erwaehnten Timer 1 - 7 lassen sich mit dem Debugger setzen. All die anderen bleiben stur auf 0.
-
Thread
PWM mit Maskierung
} neuer_wert += neuer_wert; // schieben fuer naechstes Bit if((summe[2]+= wert[2]) >= SCHRITTE) { // bis Endwert ueberschritten wird summe[2] -= SCHRITTE; // dann Summe korrigieren neuer_wert |= 1; // und Bit setzen (Ueberlauf) } neuer_wert += neuer_wert; // schieben fuer naechstes Bit if((summe[1]+= wert[1]) >= SCHRITTE) { // bis Endwert ueberschritten wird summe[1] -= SCHRITTE; // dann Summe korrigieren neuer_wert |= 1; // und Bit setzen (Ueberlauf)
-
Thread
Timer für Atmega32
if ( tippen == TRUE ) { setzeFensterBits(); timerTipp(); } else { setzeFensterBits(); TIMSK |= (1 << TOIE1); TCNT1 = 0;
if ( tippen == TRUE ) { setzeFensterBits(); timerTipp(); } else setzeFensterBits(); TIMSK |= (1 << TOIE1); TCNT1 = 0;
-
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
8x8 Font auf 96x96 Framebuffer kopieren
Michael schrieb im Beitrag #4804123: > Und > dann setz ich noch eins drauf und muss mit 3Bit/Pixel (RGB jeweils 1 > Bit) hantieren. ...also nur 8 unterschiedliche Farben oder wie viel Farben sollen pro Pixel möglich sein?
summsumm schrieb im Beitrag #4804363: > Michael schrieb: >> Und >> dann setz ich noch eins drauf und muss mit 3Bit/Pixel (RGB jeweils 1 >> Bit) hantieren. > ...also nur 8 unterschiedliche Farben oder wie viel Farben sollen pro > Pixel möglich sein? ...und nochmal die Frage
-
Thread
PDF war gestern, morgen ist DJVU!
Haferkorn; gezeigt ist die Seite 50. Der zugehörige Originalscan wurde mit 600dpi angefertigt (8bit-Graustufen) und nimmt 20MByte ein. Angehängt ist eine Arbeitskopie mit 300dpi und 8 Graustufen (= 3 Bit), Dateigröße knapp 180kByte. > Bei Rasterformaten kommst Du nicht über die > ursprüngliche
lass mal sehen... Du bist vielleicht ein komischer Vogel!? Es ist Dein Scan mit 300 dpi und 3 Bit Graustufen der grausig aussieht. Siehst Du nicht? Auf zum Augenarzt!
-
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
24 Bit signed effizient verarbeiten
Lösung: Ich mach den 16-Bit-Trick "in die andere Richtung", d.h. ich betrachte die 24-Bit-Zahl als 32 bit, mit den untersten 8 Bit auf 0 gesetzt. Auf diese Art kann ich direkt die 4 Byte des int32 setzen, drei vom ADC, das letzte
die wie von Falk Brunner vorgegeschlagen mit einer Fallunterscheidung anhand des obersten gelesenen Bits. Allerdings würde ich dann das Feld mit den Bytes nicht 3 groß machen, sondern 4 und bereits darin das höherwertigste Byte setzen. Dann vermeidet man die 32-Bit-Rechnerei ganz und bekommt zum Schluß
-
Thread
Probleme mit Schieberegister
eines möchte ich noch mal nachfragen da Du mit dem Scope messen kannst: Du mußt erst auf dem einen PortBit das Datenbit setzen und halten. Dann mußt Du auf einem anderen PortBit das Taktbit auf 1 setzen (vorher muß es auf 0 gewesen sein), wobei das Datenbit sich selbstverständlich nicht ändern darf! Nun
kommentiert: DI = Datenbit CP = Taktbit for(i=6;i>=0;i--) { // Schleife für einzelne Bits if((databyte >> i) & 1) // Wenn Bit = 1 sbi(LCD_PORT, SR_DI); // DI auf High setzen else // andernfalls cbi(LCD_PORT, SR_DI);
-
Thread
LCD funktioniert nicht
Code: [c]/*Initialisiert das LCD*/ void init_lcd(void){ /*Interface auf 8-Bit setzen*/ PORTA = 0x0C; _delay_ms(100); lcd_enable(); /*Interface auf 8-Bit setzen*/ PORTA = 0x0C; _delay_ms(100); lcd_enable(); /*Interface auf 8-Bit setzen*/ PORTA = 0x0C; _delay_ms(100); lcd_enable(); /*Zeilen (4) und Matrix (5x7) setzen*/ _delay_ms(100); PORTA = 0x14; lcd_enable(); /*Display