-
Thread
Assembler PIC "KOTZ" Gesperrt
löschen anfang btfsc PORTA,0 ;testen ob porta,0 gleich 1 ist bsf messwert,0 ;wenn ja bit 0 im messwert auf 1 setzen sonst überspringen rrf messwert,1 ;messwert nach rechts rotieren bcf messwert,0 ;bit 0 im messwert löschen da bei rrf das
ein Register (SFR) ist, ist egal. -> Sprut -> Befehlscode -> Befehle (Das suchst du ja) -> 3. Setzen und Löschen einzelner Bits, Bitverschiebungen, Bitvertauschungen (BSF, BCF, RLF, RRF, SWAPF)
-
Thread
Lock bits beim AT89S8252 setzen?
Hallo, kann mir jemand sagen wie die lockbits beim AT89S8252 zu setzen sind? Habe darüber nirgend wo was gefunden. Gruß Markus
button mit der aufschrift STK. dann wählst du deinen AT89S8252 aus und klickst auf das register "fuse bits" dann siehst du was es für fuses gibt.
-
Thread
C versus Assembler->Performance Gesperrt
kann man sich massiv verschätzen. Nichts spricht natürlich dagegen, die ISR, die nur ein GPOIR0-Bit setzen soll, in (Inline-)Assembler hinzuschreiben. Wenn man sicher ist, daß man da nichts mehr dran bauen will/muß.
elegant formulierbar ist, weil du natürlich ein paar Dinge heftig ausnutzt. Unter anderem dass du die Bits aus einem Register ins nächste schieben kannst und dann das dabei ins Carry fallende Bit für einen bedingten Sprung benutzen kannst, während sich die Register dabei gleichzeitig wieder auf 0 setzen.
-
Thread
ATMEGA8 eingeschaltete LED Zählen
die Bitposition der PORT Register wieder, wenn die Pins auf Ausgang geschaltet sind. Es gibt beim setzen oder löschen eines Bits eine kleine Verzögerung von, wenn ich mich recht erinnere, 1 oder 2 Takten. Aber das dürfte hier keine Rolle spielen.
Karl Heinz schrieb im Beitrag #3799363: > die Pins auf Ausgang geschaltet sind. Es gibt beim setzen oder löschen > eines Bits eine kleine Verzögerung von, wenn ich mich recht erinnere, 1 > oder 2 Takten. Atmel sagt, 1 NOP zwischen OUT und IN ist nötig. > Aber das dürfte hier keine Rolle spielen
-
Thread
Erster Schaltungsentwurf - ATtiny Programming Board
JP5 -90 Grad drehen und rechts neben U1 setzen
C1, U2, JP2 zusammen 90 Grad drehen und unter JP1 setzen
-
Thread
AVR: 16-bit-Counter Verwendung so ok?
Danke für den Tip, dachte zunächst das geht nicht, weil es kein eigenes Bit gibt, wo man das setzen kann, aber hab nun mal gesucht. Kannst du mir bitte noch sagen ob das hier dann stimmt so: TCCR1A = (1<<WGM12); Er setzt dann den Counter wieder auf 0, wenn es ein Compare
Match mit OCR1A _oder_ OCR1B gibt - richtig? Muss ich dann OCR1B auf einen größeren Wert als OCR1A setzen? Könnte ich ja einfach auf 0xffff stellen. Danke schonmal
-
Thread
LED Blinker Multitasking Attiny 85
Fast. Du musst nur noch das Enable-Bit für Deinen Timer-Interrupt setzen (TOIE0 im Register TIMSK). >sei(); // enable timer interrupt "enable all interrupts" triffts eher. sei bewirkt die globale Interruptfreigabe, d. h. es lässt
Ein 8-Bit Timer und ein 16-Bit Timer kann doch unabhänig und gleichzeitig laufen (oder?) und unterschiedliche ISR aufrufen oder sehe ich das falsch ? oder ist nur eine ISR für Timer zugelassen die von allen Timern
-
Thread
24bit DAC der bis DC geht
@ Gerald G. (gerald_g) >> Ja, das sind "nur" 20 Bit, aber ehe DU einen Analogteil baust, der >> WIRKLICH 20 Bit Performance bringt, vergeht einige Zeit. >Ja, 20Bit haben eigentlich alle Hersteller. Doch 4 Bit mehr sind halt >einfach 16 Stufen mehr
damit nicht meine, 16 weitere Werte ausgeben zu können, sondern dass in jeder Spannungsstufe des 20Bit DACs beim 24Bit DAC 16 Spannungen ausgegeben werden können. Ansonsten skiziere ich mir mal eine Version mit dem Integrator. Also mit closed loop des Sensors, Offsets setzen usw. und schaue mal wie
-
Thread
UART RX Interrupt Problem
UBRR0 empfiehlt es sich, zunächst das High-Byte zu setzen, dann das Low-Byte. Und BAUD_Wert sollte ein 16 bit Integer sein wobei man in dem Fall auch das High-Byte zunächst zu 0 setzen kann und BAUD_Wert dann ans Low-Byte übergibt. Es kann sonst sein, dass
im Beitrag #4565087: > Beim Einstellen des UBRR0 empfiehlt es sich, zunächst das High-Byte zu > setzen, dann das Low-Byte. Und BAUD_Wert sollte ein 16 bit Integer sein > wobei man in dem Fall auch das High-Byte zunächst zu 0 setzen kann und > BAUD_Wert dann ans Low-Byte übergibt. Es kann sonst sein
-
Thread
Wahl der richtigen µC-Familie Gesperrt
rauskriegen). Die n-dB werden über IR (normale Haushaltsfernsteuerung) vorgegeben. Das mit 8-Bit ? Viel Spass^^ /regards Andreas P.S: Verteh mich nicht falsch. Wenn es passt setze ich auch eher 8-Bit als 16/32 Bit ein. A.
ausufernde Systemarchitektur Und was heißt das jetzt? Dass man zum Interrupt enablen nicht 1 sondern 2 Bits setzen muss?
-
Thread
50ns Delay mit STM32H7
mit 200MHz, ein Clock Cycle dauert also 5ns. > Wie sag ich dem Controller jetzt, dass er nach dem setzen 50ns warten > soll bis er MISO abfrägt? Oh je! Soviele Experten und soviel Unsinniges Zeug. [c] GPIOB->BSRR = (SET_GPIO << PB3); // IO-Bit set GPIOB->BSRR = (RESET_GPIO << PB3); /
im Code einen Pin setze. Dann lese ich das Kommentar, und frage mich ob ich das nicht hätte besser machen können. Hans-Georg L. schrieb im Beitrag #7067363: > Sind dafür nicht gerade die MSSI Bits im Register SPI_CFG2
-
Thread
LCD EA W204B-NLW
@Kurt W. Das Verhalten könnte daher kommen, dass das sogenannte RE-Bit nicht gesetzt wird bei der Initialisierung. HÄÄÄ was ist das RE-Bit? Das ist, das Erweiterungs-Bit, laut Datenblatt damit es HD44780 kompatible wird. Im Datenblatt ist es etwas irreführend
@Kurt W. Das Initalisierungs Beispiel aus dem Datenblatt muss noch für den 4-Bit Modus angepasst werden. (siehe Anhang) Wichtig ist hierbei, dass das RE-Bit wieder zurückgesetzt wird nachdem "8-Bit Datenlänge, extension Bit RE und 4 Zeilen Modus" eingestellt wurde.
-
Thread
Signal auswerten
speichern Flanke auf "steigend" stellen "Pulslänge" = "Stopzeit" - "Startzeit" Flag setzen.
könntest Du mal in Deinem Code die "|=" bei den Zugriffen auf TCCR1A und B durch "=" ersetzen. Die Bits haben zwar alle lt. Datenblatt den Reset-Wert 0, aber man weiß ja nie. Und andere Bits in den Registern brauchste eh nicht.
-
Thread
Automarer Zugriff auf 32-Bit Variable die in einer ISR verändert wird
(iieks!=gieks) L = iTicks; return L; } [/c] Das sieht zumindest sparsamer aus auf einer 8 Bit Maschine als ein nachträglicher Vergleich von zwei 32 Bit Zahlen. Und es kommt ohne Interrupt-Beeinflussung aus. W.S.
enable bit is cleared, the corresponding Interrupt Flag(s) will be set and remembered until the global interrupt enable bit is set, and will then be executed by order of priority. ...
-
Thread
TTL Signal Verarbeitung
stdlib.h> #include <avr/io.h> #include <avr/interrupt.h> #include "uart.h" volatile uint8_t getBit; ISR(INT0_vect) { getBit = 1; } int main(void) { DDRD = 0x00; // Port D als Eingang setzen PORTD = 0x01; // INT0 liegt an PD0 uart2_init(UBRR_BERECHNUNG(BAUD_RATE,F_CPU))
(1.Bit) == Flag(1.bit), dann Flag>>= 1, dann das nächste eingelesene Bit auf gleichheit prüfen usw. und wenn das bitpuffer == Flag ist dann die nächsten Bytes einfach einlesen.
-
Thread
ATmega48 Security Bit Port Problem
Hi >Hallo ich habe ein Problem mit dem ATmega48, wenn ich die Fuse-Bits >setze damit er gegen das Auslesen geschützt ist funktioniert auch meine... Es gibt keine Fuse-Bits, die gegen Auslesen schützen. Und die Security-bits haben keinen Einfluss auf die Ports. Dein
Hi >Danke für die schnelle Antwort Spess53, es gibt sehr wohl sogenannte >Lock-Bits, die man auch setzen kann um den Chip vor dem Auslesen zu >schützen. Gut. Habe ich nach 13 Jahren AVR-Programmiererei wieder etwas gelernt. >Das die Lock-Bits nichts mit den Port-Pins zu tun
-
Thread
ATMEGA8535 tut nicht!!!
Unterstützung. Ich will den ATMEGA8535 genau so konfigurieren wie den AT90S8535. Wenn ich die FuseBits neu setzen will, dann erscheint beim reinschreiben in den ATMEGA immer eine Fehlermeldung. So wie es aussieht kann man den ATMEGA nicht mehr programmieren.Vielleicht ist er dabei kaputt gegangen.
jetzt den ATMEGA mit dieser Schaltung (siehe ANhang) betreiben will, wie muss ich da dann die FuseBits setzen ? Ich möchte dann den ATMEGA in der selben Schaltung betreiben wie der AT90S8535
-
Thread
mehrer Bits verschieben
Hallo, hab eine einfache Frage, komme aber gerade nicht selber drauf. Ich möchte die ersten 4 Bit eines 8 Bitsignales um 4 nach links verschieben. Einzelne Bits in C kann man ja wie folgt verschieben: Signal[0] << 4; // 1.Bit um 4 nach links verschoben Nun möchte ich aber die 4.Bit mit
weiterhin etwas genauer ausdrücken. In deinem letzten Post schreibst du: Denn nachdem ich die ersten 4 Bit verschoben habe, muss ich sie wieder mit den letzten 4.Bit addieren. 2 Sachen: a) "den letzten 4. bit" gibt es nicht. der Punkt hinter der 4 bedeuted VIERTES Bit und bezieht sich somit auf 1 Bit
-
Thread
PIC 16F684 - Problem beim Setzen von Portpins
es VIH erreicht. Mach ein NOP oder was anderes dazwischen, oder setze beide Bits in einem Befehl, und es wird gehen.
Jens M. schrieb im Beitrag #6002441: > Mach ein NOP oder was anderes dazwischen, oder setze beide Bits in einem > Befehl, und es wird gehen. Oder beim Ausgeben nicht auf den Port sondern auf das dazugehörige Latch schreiben. MfG Klaus
-
Thread
Signalgenerator, Grenzen eines Atmega8
reduziert werden. Die Rundung erfolgt -falls überhaupt nötig- über die Addition des nächstniedrigeren Bits (bei 24Bit FTW und 8 Bit Tabelle: Bit15) Die eigentlich DDS-Schleife soll nicht in einer ISR, sondern in der Main (mit voller Geschwindigkeit) laufen.
nur kleine Frequenzen ausgeben, da reicht > Deine PWM-Ausgabe. Sonst sollte es schon ein 8 - 10-Bit-DAC sein, zur > Not R2R an einem Port. Ja, ich möchte einen 8bit Dac benutzen. Die Schaltung habe ich schon gebaut, das Programm ist bekannterweise noch zu optimieren. Ein 8bit dac hängt an
-
Thread
C++ Objektorientierung ?
"segel" gibts z.b. zwei Objekte in der main : Gross und Fock. Ich kann jetzt in der main "Gross.setzen()" aufrufen, und "Fock.setzen()" . Als Wert dafür brauche ich in "setzen" einen Inkrementzähler , der in einer ISR an der main geschrieben wird. den kann ich z.b. mit "Gross.Klauinkrement" in der
> > Diesen Teil verstehe ich nicht ist vom erzeugten code wie ein Pointer [c] // Pointer setze(Segel *segel) { segel->setze(50pct); // wenn segel = nullptr ist, dann knallts } // Referenz setze(Segel &segel) { segel.setze(50pct); // muss nicht auf nullptr geprüft werden } [/c]
-
Thread
Ansteuern eines LCD über ATmega16
Datenbyte an das LCD void lcd_data( uint8_t data ) { SET_PORT |= (1<<LCD_RS); // RS auf 1 setzen lcd_out( data ); // zuerst die oberen, lcd_out( data<<4 ); // dann die unteren 4 Bit senden _delay_us( LCD_WRITEDATA_US ); } void lcd_string( const char *data
); // Enable auf 0 setzen _delay_ms(2000); //Function Set 3 PORTD |= (1<<PD7); // Enable auf 1 setzen PORTA = 0x30; //Set PA4 und PA5 high PORTD &= ~(1<<PD7
-
Thread
Betty als Modellbau-Oszi
-mthumb-interwork -msoft-float -Os -I./ -I./targets/betty-backend -DBETTY_V2 -I./driver/drawing/fb1bit -DDRIVER_DRAWING -I./driver/graphic/ssd1854 -DDRIVER_GRAPHIC -DDRIVER_GRAPHIC_BACKLIGHT -I./platform/lpc2220 -I./platform/lpc2220/lpc2220_lib -c -o driver/drawing/fb1bit/drawing.o driver/drawing/fb1bit/drawing.c driver/drawing/fb1bit/drawing.c:25:1: warning: initialization from incompatible pointer type driver/drawing/fb1bit/drawing.c:25:1: warning: initialization from incompatible pointer type driver/drawing/fb1bit/drawing.c:
-
Thread
DS1631 in 12bit genau auslesen
Habe ich bereits gemacht. Mir ist bewusst das ich die Registerbits R1 und R0 auf high oder low setzen muss, um die Auflösung der Messgenauigkeit zu ändern, allerdings ist für mich nicht aus dem Datenblatt ersichtlich wie ich es an den Sensor schicke, bzw. wie ich diese bits setze...
R0 in diesem CONFIGURATION REGISTER einzustellen, nur weiß ich nicht wie die anderen Register zu setzen sind. Kann sie ja nicht alle auf 0 setzen, oder? [pre] MSb bit6 bit5 bit4 bit3 bit2 bit1 LSb DONE THF TLF NVB R1 R0 POL* 1SHOT* [/pre] 00001000 also in Hex 08. [
-
Thread
Portzugriff bei AVR C leserlicher machen
Punkt demonstrieren: sprechende Namen und eine Abstraktion davon was aus Sicht des µC passiert (ein Bit auf 1 setzen) und was aus Anwendungssicht passiert (eine LED geht an). > - Autoformater in Eclipse kommt mit LED_error_on(); nicht zurecht ;) Eclipse will man ohnehin vermeiden. Bloat ohne Ende
weniger als 2€ kostet, hat mindestens 40MHz und 32 Bit. Taktgenaues Programmieren ist bei den modernen Strukturen mit unterschiedlichen internen Bussen und Caches sowieso nicht möglich. Die überschüssige Power, die moderne µCs haben, setze ich für saubere
-
Thread
MMC/SD ansteuern mit AVR
Codevision Compiler anzupassen... jedoch weiß ich bei diesen 2 zeilen nicht so recht weiter: if (bit_is_set(MMC_Read,SPI_DI) > 0) //Lesen des Pegels von MMC_DI und if (bit_is_set(Byte,(a-1))>0) //Ist Bit a in Byte gesetzt bit_is_set scheint ein makro zu sein, cvr unterstützt dies aber nicht
@Marcel Ich weiß nicht, ob Du es inzwischen schon herausgefunden hast: loop_until_bit_is_set => while(!(REGISTER&(1<<BIT))){} loop_until_bit_is_clear => while(REGISTER&(1<<BIT)){} Du musst nur darauf achten, dass Du das verwendete BIT oben im Programm mit #define
-
Thread
RST bei Buffernutzung
der sowieso nur einen String aufnehmen kann zu löschen, vulgo den String auf einen Leerstring zu setzen, genügt es das erste Byte davon auf '\0' zu setzen. Man muss nicht durch das Array durchgehen und jedes einzelne Byte auf '\0' setzen. (*) wie gesagt: scheinbar Du hast trotzdem einen Fehler.
zu setzen... THX für weitere antwort
-
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
mehrere Millis()
avr gcc und damit Arduino versteht sie. Mit diesen Bitmustern wird [[Bitmanipulation]] gemacht. Bits setzen, löschen, prüfen. Das wird in der Tastenentprellung benutzt, um die vier Tasten als einzelne Bits in einem Byte zu speichern und zu verarbeiten. Da ist sogar noch Platz für 4 weitere Bits bzw
muss. Und übersichtlich ist dann PORTA = (1<<PA0)|(1<<PA2)|(1<<PA5); Diese Befehle setzen alle 8 Bit des Ports, will man nur die drei setzen und die anderen unbeeinflusst lassen, dann muss man schreiben PORTA |= (1<<PA0)|(1<<PA2)|(1<<PA5);
-
Thread
Probleme Schieberegister 74LS164 an ATtiny
ja jemand eine gute Idee, Gruss, Stefan void w2led(int number, int dot){ //Bits zum Shifter for (int i=0;i<8;i++){ if (number%2){ //mittels MOD2 Bits auslesen PORTB|=(1<<PB1); //0 oder 1 auf Port setzen }else{
ihn leicht elsen kann. [C] void w2led( uint8_t pattern, uint8_t dot) { //Bits zum Shifter if( dot ) pattern |= ( 1 << 0 ); // Dezimalpunkt setzen falls angefordert for( uint8_t i = 0; i < 8; i++ ) { // Datenbis ausgeben. Es wird immer Bit 0 von pattern
-
Thread
Geschwindigkeit Arduino > C
Die libraries sind nicht überall so viel langsamer. Das setzen einzelner Bits ist schon so etwas wie ein worst case Beispiel. Bei vielen einfachen Rechenfragen gibt es gar keinen Unteschied zu normalem C Code. Bei so etwas wie UART / I2C kann man es von Hand
Ein einzelnes Bit an einem Port zu setzen oder löschen, ohne die andern zu verändern, geht aber nicht per ldi+out. Ist daher zwar genauso schnell, aber falsch. Oliver
-
Thread
Einzelne Pixel auf SED1330/5 GLCD setzen
zwar fehlerfrei, aber alle 8 Pixel gibt es unregelmäßige Spitzen nach unten... Um einen Pixel zu setzen, lese ich ein Byte vom LCD, setze ein Bit und schreibe es zurück. Im Datenblatt des SED1335 findet sich bei der Beschreibung des MREAD Befehls (Daten vom LCD lesen) folgender Satz: If the cursor
In der Pixelsetzroutine habe ich jetzt mal nur den Wert gelesen und wieder ausgegeben, ohne ein Bit zu setzen. Ergebnis: siehe Bild Wenn ich die Bits setzte kommt zusätzlich noch die fehlerfreie Linie hinzu
-
Thread
ENC28J60 Basics[Beispielprogramm in AVRGCC für atmega8]
beschreiben dieses Registers rehalte ich immer nur den Wert 0x0 (iwe nach Reset) zurück. Gibt's da noch ein Bit, das ich setzen muss, um es beschreiben zu können? Was muss alles initialisert werden, um nur die LED's blinken zu lassen? Danke für die Hilfe.
ist, kann man im prinzip raus nehmen hier, ist bestimmt noch vom debuggen. Das SREG wird wegen dem I-Bit gesichert, damit man nach einem ISR-durchlauf wieder den alten zustand inklusive I-Bit hat. CA Dirk und THX
-
Thread
Fuses setzen: ATmega32A mit externen Quarz (8Mhz)
weiteren Angaben sind mir unklar: LOW/MED/HIGH? Startup-Time Muss ich daneben noch andere Fuse-Bits setzen? Viele Grüße Markus
rein (z.B. 'SUT -> 10', 'CKSEL 1110', ..) oder Du bastelst Dir die Fuses von Hand zusammen. Welches Bit wo steht findet sich im selben Datenblatt im Kapitel '26.2 Fuse Bits' (Table 26-4. Fuse Low Byte, CKOPT ist in der hfuse). Es eribt sich dann sowas wie 'lfuse = 0xEE', was Du direkt fusen kannst. Beim
-
Thread
Schneller Mikrocontroller
sitzt. Tja eine besserer uC hat dann schon FIFO etc im UART oder SPI Hardware. Wieder ein paar Bits in Registern die man richtig setzen/lesen muss.
#3735883: > Tja eine besserer uC hat dann schon FIFO etc im UART oder SPI Hardware. > Wieder ein paar Bits in Registern die man richtig setzen/lesen muss. Und trotzdem bringt dir das setzen deiner Bits nicht näher, wie ein uC funktioniert. wie gesagt als Beispiel für PIC: Work Register, Status Register
-
Thread
STM32 - GPIO-Pin lässt sich nicht setzen
Guten Abend zusammen! Ich habe ein Problem mit einem selbstentwickelten GPS-Empfänger, in dem ich einen STM32-µc (STM32F103RET6) verbaut habe. Leider bin ich weder mit Google noch im Datenblatt des Controllers fündig geworden, deshalb hoffe ich, dass Ihr mir weiterhelfen könnt. Also, nun zu meinem Anliegen: Ich möchte den Eingang eines p-MOSFETs schalten. Das Gate habe ich über einen hochohmigen Pull-Up auf 3.3V gezogen, damit der Transistor standardmässig sperrt (siehe Schaltbild). Am Controller habe ich den Pin PA12 auf Ausgang mit Open-Drain programmiert, um bei Bedarf das Gate auf 0 Volt
-
Thread
ATMega 128 Fuses setzen etc geht aber nicht programmieren
Hallo, ich habe das problem das ich per AVR Studio die Fusebits meines ATMega 128 setzen und lesen kann. Signatur lesen etc geht, Flash lesen auch. Aber ich kann kein Programm aufspielen. Hat jemand eine Idee woran das liegen kann???
Natürlich steht nichts drin, aber es geht. sind die fuses richtig???? Was passiert wenn man den SPIEN bit mal gesetzt und mal gelöscht hat???
-
Thread
FPGA in Serie
wenn es nicht wirtschaftlich erscheint. Vieleich kann man die beantwortung ja in Bezug zu 50 PWMs setzen (500Hz, 10Bit)
Frank schrieb im Beitrag #2588619: > Vieleich kann man die beantwortung ja in Bezug zu 50 PWMs setzen (500Hz, > 10Bit) 500Hz? Das sollte ein Cortex M3 doch locker als Soft-PWM zustande bringen?
-
Thread
Kupferdrahtdurchmesser bei Spulen
Grund dieser Logik entfällt die aufwendige PWM-Helligkeitssteuerung durch den Prozessor. Auf den 6Bit Port wird nun 1 Pixelbyte ausgegeben und durch den MUX selektiert man jeweils 3Bit dieses Ports. Das Pixelbyte enthält also kodiert xxRRGGBB jeweils 2Bit pro Farbe. Die RRGGBB Bits gehen an den 6 Bit
. Man lädt einfach die Pixelbytes einer Displayzeile aus dem RAM und gibt sie nacheinander an den 6Bit Port aus. Dies macht man insgesamt 3 mal nacheinander pro Pixelzeile. Beim erstenmal setzt man den MUX auf Bit 0 einer Farbe, dann Bit 1 und dann nochmal Bit 0. Ein Display mit 512 Spalten wird also
-
Thread
mit AVR zählen -> 7-Segmentanzeige
grössenordnung 100nF) den zähler könntest du so ungefähr machen: TUER_1 und TUER_1_STATUS als BIT definieren und auf 0 setzen TUER_1_ZAEHLER als Byte, Word oder Long definieren und auf 0 setzen do TUER_1 = pinX.Y ' Tür abfragen, 0 zu, 1 offen if TUER_1 <> TUER_
------------------ Ddrd.5 = 0 'PD5 als Eingang setzen Dim Tuer_1 As Bit Dim Tuer_1_status As Bit Dim Tuer_1_zaehler As Byte Dim Sresult As String * 16 At &H64 Overlay Dim Result(16) As Byte At &H64 Declare Sub Anzeige Tuer_1 = 0 Tuer_1_status
-
Thread
Umwandlung von 16 Bit in 8 Bit
aufpassen, wo das Vorzeichenbit bei der long-Komponente liegt. Üblicherweise ist dies das höchstwertige Bit. HSB = Höchstwertiges Bit bzw. Byte, wird meistens jedoch als MSB (Most Significant Bit) bezeichnet. LSB = Niederwertigestes Bit bzw. Byte (Lowest significant Bit). Zur Erklärung: Wenn du die
> HSB = Höchstwertiges Bit bzw. Byte, wird meistens > jedoch als MSB (Most Significant Bit) bezeichnet. > LSB = Niederwertigestes Bit bzw. Byte (Lowest > significant Bit). Klar, nur wo liegt dieses im Array? ist x.u8
-
Thread
AVR Problem mit 16 Bit Timer
Hi und hallo, ich versuche gerade einen 16 Bit Timer ans Laufen zu bekommen. Dabei soll eben ein Interrupt kommen, wenn der Timer abgelaufen ist. Das passiert aber leider nicht. Den 8 Bit Timer habe ich am Laufen. Bei dem 16 Bit Timer hänge ich
ein. Der Compiler kann das selbst entscheiden. [C] OCR1A = OCR_ONE; // TOP für OCIE1A setzen TCNT1 = TCNT_ONE; // Timerzähler1 setzen [/C]
-
Thread
SPI gibt lediglich 4 Bits aus!
es auch, das SPCR komplett zu setzen, also SPCR = bitX | bitY | bitZ; statt alle Bits einzeln abzuklappern.
OK, also ich habe eben nochmal die Interruptabfrage weggelassen und softwaremäßig das Setzen den SPIF festgestellt. Danach hat er alle 8 Bits einwandfrei ausgegeben. Allerdings ist er danach nicht mehr aus der Schleife herausgesprungen. Desweiteren habe ich ja keine Möglichkeit den SPIF
-
Thread
Programm läuft nicht Verbesserungsvorschläge?
offensichtlich Unsinnig ist. Denn dein Code impliziert dass du denkst, dieses Konstrukt würde das TXEN0 Bit auf 0 setzen. Was natürlich nicht stimmt. Damit stiftest du Verwirrung. Auch bei dir selbst wenn du den Code später mal anguckst. gruß cyblord
fragt: Tippfehler oder doch kein Tippfehler? Auf der einen Seite suggeriert das Ansprechen des ADLAR Bits, dass er es aktiv beeinflussen möchte (um es auf 0 zu setzen), auf der anderen Seite würde aber ein einmal gesetztes ADLAR Bit hier mit Sicherheit nicht 0 gesetzt werden, denn die ganze Anweisung ist
-
Thread
74HC595 wie steuert man das latch an?
ah okay. also schreibe ich in das register rein, setze den clock, dann geht das in den latch. ich schreib weiter ins register, setze wieder n clock, dann wird das vom latch ausgegeben und die daten wieder ins latch. Richtig so?
darüber an [lowactive]). Um die Daten überhaupt erst ins Register zu bekommen, musst du für jedes Bit eine Taktflanke an SH_CP legen (8Bit ==> 8 Takte) Wenn dann alle 8 Bits übertragen wurden, gibts du noch eine Taktflanke auf ST_CP und die Daten werden auch ausgegeben. Um die Daten im Register zu
-
Thread
DCF77 weiteres Vorgehen
.Pulslaenge > DCF_LOGIK_EINS_MIN) && (DCF77.Pulslaenge < DCF_LOGIK_EINS_MAX) ){ if ( (DCF77.BitCounter < 29) && (DCF77.BitCounter >= DCF_ZEITINFORMATIONSBITPOSITION) ) { DCF77.Minute += DCF_Bitwertigkeiten[DCF77.BitCounter-DCF_ZEITINFORMATIONSBITPOSITION]; } if ( (DCF77.BitCounter >= 30) && (DCF77.BitCounter < 36) ){ DCF77.Stunde += DCF_Bitwertigkeiten[DCF77.BitCounter-DCF_ZEITINFORMATIONSBITPOSITION-1]; } } [/c] Spart man sich das riesige Array
-
Thread
Verständnisfrage zu Assembler bei PIC und ATMEL
Jens M. schrieb im Beitrag #7880583: > PICs haben dafür 4 Nibbles "ID", die man setzen kann und auch mit > Protection noch auslesen. Diese Idee finde ich interessant. Wo finde ich diese Nibbles? In den sogenannten ConfigBits?
K. schrieb im Beitrag #7880596: > Jens M. schrieb: >> PICs haben dafür 4 Nibbles "ID", die man setzen kann und auch mit >> Protection noch auslesen. > > Diese Idee finde ich interessant. Wo finde ich diese Nibbles? In den > sogenannten ConfigBits? Es sind 4 x 7 Bit üblich, nach dem Programmspeicher
-
Thread
PORT-BIT Verwendng mit define
Zwei Anmerkungen hätte ich dazu aber dennoch: [c] #define SBIT(port,pin) ((*(volatile struct bits*)&port).b##pin) [/c] Da würde ich um 'port' noch eine Klammer setzen und ich würde indirekt expandieren. Momentan hast du folgendes Problem: [c] #define PIN 1 #define PORT 0xAA+2 #define SBIT(port,pin) ((*(volatile struct bits*)&port).b##pin) SBIT(PORT, PIN) /* expandiert zu */ ((*(volatile struct bits*)&0xAA+2).b##PIN) [/c] Formulierst du aber so: [c] #define SBIT2(port,pin) ((*(volatile struct bits*)&(port)).
-
Thread
Microcontrollerboard mit 16Bit-Controller
setzt eine sehr hohe Taktgeschwindigkeit vorraus, größerer Adressraum allein hilft nicht. Deshalb setze ich noch immer den 68HC811E2 (8MHZ) ein um z.B. Ultraschall zu digitaliesieren (12 Bit Auflösung mit 400KHZ Abtastrate und 8 Kanälen). Auch di 16 Bitter währen hier schon allein mit der Adressensteuerung
@Manfred: 1. Deshalb setze ich noch immer den 68HC811E2 (8MHZ) ein um z.B. Ultraschall zu digitaliesieren (12 Bit Auflösung mit 400KHZ Abtastrate und 8 Kanälen). 2. Mit dem HC11 geht das nicht direkt denn der ist viel zu langsam