-
Thread
Push Button Controller mit Speicherfunktion
Peter Dannegger schrieb im Beitrag #4165797: > Der ATtiny13 hat 512 Bit EEPROM mit 100.000 Schreibzyklen. D.h. man kann > ruhig jeden Wechsel als Bit 1->0 setzen speichern, dann hält er > garantiert 50 Mio Schaltzyklen durch. Richtig. Und falls man paranoid ist,
Peter Dannegger schrieb im Beitrag #4165797: > Der ATtiny13 hat 512 Bit EEPROM mit 100.000 Schreibzyklen. D.h. man kann > ruhig jeden Wechsel als Bit 1->0 setzen speichern, dann hält er > garantiert 50 Mio Schaltzyklen durch. Nein, es werden nicht bits, nicht mal
-
Thread
ATMEL stellt grafische Oberfläche für 8 bit Controller vor
ATMEL stellt eine grafische Programmier-Oberfläche für 8 bit ATMega's vor, sogar der Arduino UNO wird explizit unterstützt. Release Date soll der 1. Mai sein. http://avrtools.no/Main.asp?page=2 Jetzt bin ich ja mal echt gespannt auf eure Reaktionen, weil
AchWieLustig schrieb im Beitrag #3630073: > ATMEL stellt eine grafische Programmier-Oberfläche für 8 bit ATMega's > vor Woraus schließt du, dass ATMEL dahinter steckt?
-
Thread
Raspberry pi Pico rp2040 RS485 Implementierung
Interrupt, der erst ausgelöst wird, wenn das Byte wirklich verschickt ist. Es gibt zwar ein BUSY Bit, aber keinen Interrupt dazu. Ich könnte das Bit zwar pollen, aber das ist keine gute Lösung. Hab ich was im Datenblatt übersehen? Gibt es noch eine andere Möglichkeit den output enable zu setzen
> Es gibt zwar ein BUSY Bit, aber keinen Interrupt dazu. Wirklich? Das waere aber echt traurig wenn die das vergessen haetten. > Gibt es noch eine andere Möglichkeit den output enable zu setzen? Du koenntest beim uebertragen
-
Thread
Feedback zur Schaltung: Differenzielle digitale Datenübertragung
Fehlerkorrektur) auch ihre Probleme haben. Definitiv! Die werden wohl eher für Anwendungen mit 10kBit/s reichen. Für etwas schnelleres würde ich dann vielleicht mal mit einem ARM basierten Board arbeiten. Und für die ganz schnellen Dinge werde ich wohl dann auf FPGAs setzen müssen. Aber das erste
folgendes gefunden: > The reason for using DS encoding is to improve the skew tolerance to > almost 1-bit time, compared to 0.5 bit time for simple data and clock encoding. Das heißt doch, dass die Zuverlässigkeit die richtigen Daten zu dekodieren höher ist, oder? Aber die Idee die Manchester-Codierung
-
Thread
18Bit per HW SPI?
Na prima ^^ Also ich würde mal die 24Bit Lösung probieren.. was ist sinnvoller die Dummybits 1 oder 0 zu setzen?
Soo.. wollte mich nochmal meld. Es funktioniert jetzt per 10 Bit SW SPI. Anders als im Datenblatt beschrieben nutze ich die 10Bit sowohl für Instruktions als auch für Daten. Die ersten beiden Bits sind RW und RS und danach folgen Bit7..0
-
Thread
PWM mit Atmega32 (in C)
Beispiel: TIMER1_CLOCK_SELECT(TIMER1_PRESC_8); TIMER1_WGM_MODE(TIMER1_PWM10_BIT); //PWM, 10 Bit OCA1_PIN_CONFIG(TIMER1_OC_PIN_CLEAR); //Clear at Compare Match, Set at TOP OCR1A=0x0100; //Compare-Match RegisterA
Effektivwert der Rechteck-Wechselspannung ein. => Frequenz fest, Tastverhältnis variabel über OCR1A. Bei 10 bit (0..1023) wäre die Hälfte dann logischerweise 512, bei 8 Bit (0..255) dann 128.
-
Thread
lauflich bzw. schieberegister mit dem 4013
hallo, ich möchte mit dem 4013 ein schieberegister machen. es soll 4 kanal (bit) haben und mit jedem takt ein bit weiter rutschen. wenn es am ende ist dann wieder von vorne anfangen also wie ein lauflicht desen takt ich bestimme. dazu soll es aber auch einzeln angesteuert werden
Leonardo, warum setzt du denn auch das Flip-Flop zurück, das du eigentlich setzen willst?? Kai Klaas
-
Thread
MSP430 Bit schieben
rotieren. Du wirst RLC nehmen und das Carry zwischendurch löschen müssen. Oder vorher die oberen Bits auf 0 setzen. Oder nachher die unteren Bits. Oder du kannst es so machen: add.b R14,R14 add.b R14,R14 add.b R14,R14 add.b R14,R14
Ich weis zwar nicht on die CPU das kann. Aber bei 4 Bit würde ich eher ein Swap verwenden, Das tauscht die oberen gegen die unteren 4 Bit
-
Thread
"Memory Barrier" in C99
Nemopuk schrieb im Beitrag #8011855: > Bei 8 Bit AVR können Zugriffe auf die beiden Bytes des 16 Bit Counter > unterbrochen werden. Um dies zu verhindern, hat das Beispiel die flag Variable, die sich, wie oben bereits erwähnt, effektiv immer nur
Daniel G. schrieb im Beitrag #8011861: > Nemopuk schrieb: >> Bei 8 Bit AVR können Zugriffe auf die beiden Bytes des 16 Bit Counter >> unterbrochen werden. > > Um dies zu verhindern, hat das Beispiel die flag Variable, die sich, wie > oben bereits erwähnt, effektiv
-
Thread
Schieberegister (74HCT595) in C
für das nächste mal weiß ich bescheid ;) > > wenn ich die ganze ausgänge des schieberegisters setzen oder löschen > will brauche ich doch nicht den "out" befehl... Doch. Die Set Funktionen bzw. Unset Funktionen setzen bzw. löschen die Bits in einem im AVR vorgehaltenen Speicher. Erst ein Aufruf
heisst das Argument für die Funktion [c] void com74hc595_setBit( unsigned char BitNumber) [/c] auch BitNumber und nicht BitMask.
-
Thread
Avr-gcc Bitshift 32bit Variable geht nicht
Bytes 16-31 kann ich nicht setzen. Es steht am Ende 0x00005555 in der Variable. Wenn ich für jede ungerade Zahl das 9. bit setzen will, wird mit dem 15. bit auch bits 16-31 gesetzt. Ergebnis: 0xffffaaaa. Es scheint so, als könnte
Philipp schrieb im Beitrag #3601206: > Also Bytes 16-31 kann ich nicht setzen in C wird alles mit int gerechnet. Und wie groß ist int auf dem avr? (16Bit) 1l<<fifo->w_ptr sollte es beheben.
-
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
Macros in AVR Assembler
Priorität hätten und zuerst dort nachgesehen würde. Unlogisch ist es, wenn die Parameter beim Setzen eines Bits im Register anders sind als beim Setzen eines Bits im I/O Register. Beim Setzen eines Bits im Register mit SBR muß das 1<< immer geschrieben werden, da gibt es keine Wahlmöglichkeit. Sowas
> ...Setzen eines Bits im Register > anders sind als beim Setzen eines Bits im I/O Register... sbr / cbr und sbi / cbi sind zwei völlig unterschiedliche Befehlspaare, die völlig unterschiedlich funktionieren
-
Thread
Solarsteuerung mit MSP430F436
Noch einer schrieb im Beitrag #3791787: > Bleibt die Frage - einfache Platine in Gang setzen und umbauen oder eine > neue Platine mit ADC, SD-Karte und USB kaufen? genau. Ist die Frage was am einfachsten ist. > einfache Platine in Gang setzen und umbauen es ist halt kein Schaltplan
10 bit ADC heißt 0.6° bis 70 grad und danach 1.5° reale Auflösung. Kann natürlich auch noch optimiert werden. Dies ohne opv. Für eine Solaranlage reicht dies locker. Mit 16bit timer schafft man es besser
-
Thread
simm DRAMs parallel
Die beiden sind 1M x 4bit, das andere 1M x 1bit. Macht also 1MByte + 1MBit. Es ist also der typische 1MByte Riegel mit Parity.
anlöten, sondern erst einmal den µC in eine gute Ausgangsposition (Portrichtungen einstellen / Fuse-Bits setzen) bringen. Gibt es eigentlich Zustände bei den SIMM-Modulen, die nicht geschaltet werden dürfen, weil davon das Modul Schaden nehmen könnte? Worauf muss ich jetzt noch besonders achten?
-
Thread
Wie mit FUSE-Bit atmega16 auf 16Mhz laufen lassen?
@Andreas in Deinem Fall musst du die Fuse-Bits des ATmega setzen. Aber Vorsicht, damit hat mancher seinen AVR unbrauchbar gemacht. Gruß, Thomas
@ Andreas die Fuse-Bits deines ATmega kannst Du nicht mittels eines Programms setzen. Dein Programmer stellt Dir im Normalfall diese Funktion zur Verfügung. Gruß, Thomas
-
Thread
ATMega328-basierter Sprach-Synthesizer für den CPC 464 - Schnelles Byte-weises Lesen mit dem 328?
Bytes "AB" (65 66 ASCII) an den 328 zu senden, alterniere ich die Nutzbytes (65 66= mit 0-Bytes, und setze das 8. Bit in den Nutzbytes (Sprachsynthesizer verwendet nur ASCII 7 Bit)... also sende ich 193 (= 65+128) 0 194 (= 66 + 128) 0 statt 65 66, und der 328 kann dann die 0-Bytes und das 8. Bit zur "Taktung
include <avr/interrupt.h> #define BAUD 9600 #include "USART.h" #define SIZE 1024 #define BV(bit) (1 << (bit)) #define toggleBit(byte, bit) (byte ^= BV(bit)) #define setBit(byte, bit) (byte |= BV(bit)) #define clearBit(byte, bit) (byte &= ~BV(bit)) volatile uint8_t buffer_low[SIZE]; volatile
-
Thread
8 Bit Timer mit Tiny26
ATmega16 auf den ATTiny26 portieren. Das einzige Problem dabei ist der Timer. Im Atmega16 habe ich den 16-Bit Timer mit dem ClearTimerOnCompareMatch (CTC) Modus verwendet. Da der Tiny26 jedoch keinen 16 Bit Timer hat, muss ich wohl oder übel den 8 Bit Timer nehmen. Soweit zur Vorgeschichte..... Nun zum Problem
Hi! Du mußt nicht OCIE1A in TIMSK setzen, sondern TOV1 (Timer Overvlow, Bit 2) für den CTC-Mode in Verbindung mit OCR1C. Das hängt damit zusammen, das der CTC-Mode einen Overflow-Interrupt auslöst, wenn der Timer 1 den Wert von OCR1C erreicht
-
Thread
Comparator Attiny841
Noch ein Hinweis: Es reicht nicht, nur Bits zu setzen wenn einige auch gelöscht sein müssen (z.B. ADMUXA, ACSR1B, ...).
Die Register die bereits auf 0 stehen brauche dabei nicht zu ändern. > Meinst du das? Nein. Bits, die du auf 0 haben möchtest (z.B. MUX0), musst du auch auf 0 setzen - mit |= geht das nicht. Der Unterschied zwischen: [c] ADMUXA |= (1<<MUX5)|(1<<MUX4)|(1<<MUX2); // MUX0/1/3 unverändert
-
Thread
32Bit Variable Abfragen geht nur bis BIT 15, was läuft hier falsch?!
c] Das klappt genau bis Bit 15, danach ist Feierabend. Wo liegt mein Fehler?!
. EDIT: Ich habe es jetzt doch. Ich dussel habe nur in der Abfrage den 32-Bit Cast gemacht, aber nicht beim Setzen des Bits. Jetzt geht es! Danke! Bei sowas wäre das klug, wenn der Compiler das bemerken würde. Tricky Falle!
-
Thread
Analogmux am µC - was läuft schief?
PINA3)); Port A hat also immer auf P1..P2 eine 0. Du setzt sie nie auf 1 Mit &= kannst du keine Bits setzen nur löschen.
#3413813: > Port A hat also immer auf P1..P2 eine 0. Du setzt sie nie auf 1 > Mit &= kannst du keine Bits setzen nur löschen. das stimmt, ich lösche die bits, damit für Y0 am Port eine 0b000 anliegt, für Y1 lösche ich alle bis auf PinA1, das setze ich ja danach mit |= Alex schrieb im Beitrag #3413732
-
Thread
16 Bit Timer mit Atmega 1284p
wenn die ISR mit 20 Hz getriggert wird. Im Falle der obigen Formel ergibt sie sich durch das Setzen des "Toggle on compare match"-Bits, im Fall des TEs erfolgt das Toggeln explizit durch die XOR-Anweisung auf dem Portpin.
. wie ist der Ausgabe PIN initialisiert. Laut Datenblatt findet sich zu Port C: Port C is an 8-bit bi-directional I/O port with internal pull-up resistors (selected for each bit). The Port C output buffers have symmetrical drive characteristics with both high sink and source capability. As inputs
-
Thread
zwei 8 bit Variablen aus 16bit Variable
nicht dahinter was ich falsch mache: Ich habe folgenden Code: volatile uint8_t var1; // 8bit variable volatile uint8_t var2; // 8bit variable volatile uint16_t var3; // 16 bit variable Dann in der "compare match B ISR" des 16bit timer1 im ATmega168: var1 = OCR1BL ; // lowbyte
haben eine zu schlechte Aufloesung in meinem Falle. Ich mache also beides mit dem 16bit Timer1. Ich habe den 16bit-Timer1 nun so konfiguriert, dass er im Fast-PWM-Mode laeuft und dass TOP = ICR1 ist. Im Register ICR1 habe ich den Wert 4095 stehen, entsprechend 12bit PWM Aufloesung.
-
Thread
LED-Cube / LED's werden ungewollt gleichzeitig angesteuert.
über Hex- oder Binärzuweisungen, nur wenn ich nur ein Bit manipulieren will, dann wiederum mache ich das gerne über OR und AND auf das entsprechende Bit, dann sehe ich auf einen Blick was da los ist (und veränder im Zweifelsfall nichts an den sonstigen Bits
1 am zugehörigen Portausgang) und zusätzlich > nur einen Portausgang (für eine LED) auf log. 1 setzen, alle anderen > Portausgänge log.0. Genau das mache ich ja auch. Da liegt ja der Hund begraben, dass OBWOHL ich nur zwei Pins aktiv setze, sprich einen Transistor und eine LED ansteuere, trotzdem
-
Thread
DigitalStrom aus der Schweiz
gefunden, in Computerworld online vom 27.08.2007: "Der Chip erreicht eine Datenübertragung von 200 Bit pro Sekunde". Wenn das WIRKLICH stimmt, kann man die Sache vergessen. Ein Befehl mit z. B. 8 Bit Adresse + 6 Bit für eines der 60 Kommandos, die das System beherrschen soll, benötigt also mindestens
Karl-heinz Strunk wrote: > >> War denn schon jemand zur CeBIt und hat das dort angesehen? > > Freitag. Und? Was gibt es von der CeBIT zu berichten?
-
Thread
Brauche Hilfe bei der Auswahl des Timers
); //insert your functional code here... } [/c] In der main brauchst du nur die PWM-Werte setzen. Es gibt jedoch schönere Verwendungen für einen 16 Bit-Timer. gruß avr
wie wärs mit prescaler und nem 8 bit timer?? reichen 8 bit Auflösung?
-
Thread
Mega16: JTAG-Programmierung will nicht
feststellen ob der Controller läuft ? Ich kann ja nicht drauf zugreifen... Ich vermute mal dass das Fuse-Bit nicht richtig gesetzt ist, bloß wie kann ich das setzen wenn ich nicht auf den Controller zugreifen kann ?
Karlheinz Druschel schrieb im Beitrag #1678016: > Ich vermute mal dass das Fuse-Bit nicht richtig gesetzt ist, bloß wie > kann ich das setzen wenn ich nicht auf den Controller zugreifen kann ? ISP, HVP. Allerdings ist JTAG ab Werk eingeschaltet (was schon viele Leute zum Verzweifeln
-
Thread
Pic I2C Slave
kopieren. Das geht ja gar nicht! > Die Codebeispiele online sehen alle ähnlich aus, nie > ohne setzen von ACks. Aber keins davon funktioniert. Offenbar ist im Register SSPCON2 das Bit 4 (ACKEN) immer 1.
des Controllers relevant. Wenn man weiß, welcher konkrete PIC es ist, kann man ganz knapp sagen: Setze diese Bits so und so, fertig...
-
Thread
Nochmal Hilfe zum DOGXL
Init_DOGXL(void){ volatile uint8_t i; INIT_DOGXL_PINS; // CMD u. RST für's LCD setzen. for(i=200; i>0; i--){;}; // delay a little bit... DOGXL_RELEASE_RST; // ... Set_Vbias_Pot(0x9C); // VBIAS Cmd & Value(hier 0x9C !!!) Clear_Screen(); // RAM mit
ansteuern. Um ein Byte (4 Pixel) gezielt zu Beschreiben gehst du wie folgt vor: Kommando Page setzen Kommando Low(Spalte) setzen Kommando High(Spalte) setzen Datenbyte setzen MfG Spess
-
Thread
Array into int und dann Bit Verschiebung
Spezi schrieb im Beitrag #3889910: > In meiner Anwendung soll in Value doch nur 24 Bit stehen. Es gibt aber auf dem AVR keinen Standard Datentyp mit 24 Bit. Der nächst größere hat 32 Bit. Wenn du also dem Compiler die Arbeit aufbürden willst, das byteübergreifende Schieben für dich
) auf 0 setzen.
-
Thread
OCR1A Wert in Simulator falsch?
|=(1<<CS00) setze ich den Timer scheinbar in den 8-Bit PWM Modus. So funktioniert´s jetzt: [c] TCCR1B|=(1<<CS00);//Prescale 1 TCCR1B|=(1<<WGM12);//CTC OCR1A=400; [/c] Vielen Dank nochmal für Eure Hilfe ...
;//Prescale 1 > TCCR1B|=(1<<WGM12);//CTC > OCR1A=400; > [/c] CS00 ist ja auch kein Name eines Bits in TCCR1A, bezeichnet aber Bit0, so dass Dein Code identisch ist mit [c] TCCR1A|=(1<<WGM10); // PWM, phase-correct 8-bit mode !!!! [/c] > aber mit TCCR1A|=(1<<CS00) setze ich den Timer scheinbar
-
Thread
eeprom M95M02
lese ich nun > immer wieder 0 aus. Ich hoffe das passt soweit. Ja, du musst in die Statusregister Bits schon was anderes als 0 reinschreiben oder eben mit WREN das WEL wieder setzen. Pat A. schrieb im Beitrag #7176202: > noch ein Tipp: wenn Du Daten geschrieben hast (max. eine Page), dann > solange
eeprom schreiben möcht wie läuft das ab: Send Kommando WREN Send Kommando WRITE Send Adresse (Bit 17..24) Send Adresse (Bit 9...16) Send Adresse (Bit 0...8) Send Datenbyte
-
Thread
C-Prog. (ATmega16) für IR-Sender
Bit setzen: PORTC |= (1 << PORTC0); Bit löschen: PORTC &= ~(1 << PORTC0); Für dein Vorhaben müsstest du jedes der 8 Bits des Registers UDR nacheinander auf dem untersten Bit (PORTC0) des PORTC ausgeben
Tim T. wrote: > Bit setzen: PORTC |= (1 << PORTC0); > > Bit löschen: PORTC &= ~(1 << PORTC0); > > Für dein Vorhaben müsstest du jedes der 8 Bits des Registers UDR > nacheinander auf dem untersten Bit (PORTC0) des
-
Thread
Abfragen ob Taster mehrmals gedrückt wurde
MUsterbyte erst mal in einer neuen Variable halten Je nach Zustand vom Nebel noch zusätzlich das Bit 0 setzen ( Get mit SET) und erst dann das Komplett-Ergebnis auf PORTB ausgeben
. Arbeite dich für das nächste Mal zuerst in die Grundlagen ein... - Maskieren - Schieben - Bits setzen - Bits löschen - Entprellen - Funktionen <-> ISR - Timer, PWM, ADC... - RS232, SPI, I2C... ... Kauf dir ein kleines Demo-Board wo alles forhanden ist (ein paar Taster, LEDs...) und fang
-
Thread
Problem mit dem überschreiben einer Variable
> Oder denk ich hier vollkommen falsch? Nein. Soweit passt das zum /Setzen/ eines Bits. Nur das /Rücksetzen/ muß über eine VerUNDung gehen...
andere als die, mit der ein Bit gezielt auf 0 gesetzt wird.
-
Thread
LCD (HD44780) Amoklauf?
=sendbyte&0xF0; _lcdport|=sendbyte; // erst upper nibble _lcdport|=(1<<_rs); // rs setzen, daten lcden(); sendbyte=sendbyte<<4; sendbyte=sendbyte&0xF0; // lower nibble hochschieben _lcdport|=sendbyte; // mask lower nibble _lcdport|=(1<<_rs); // rs setzen
sendbyte&0xF0; _lcdport|=sendbyte; // erst upper nibble Auch hier wieder: was ist, wenn das RS-Bit H ist bei Daten? Nur Datenbits des Ports auf L setzen. Daten in Hilfvariable an die passende Stelle legen, Steuerbits auf L setzen und mit dem Portinhalt vor-odern als Möglichkeit. _lcdport &
-
Thread
AVR128DA: fuse bits ändern
Ich wollte mein Selbstbauprogrammiergerät um die Funktionen für den AVR128DA28 erweitern, komme jetzt aber bei den Fuses nicht weiter. Im 'Preliminary Data Sheet' sind die betreffenden Passagen, wie sie z.B. für die 'megaAVR® 0-series' normal dastehen, nicht zu finden, es fehlt also im Kapitel NVMCTRL ein Absatz 'Fuse Write Command' sowie für NVMCTRL.CTRLA in der Tabelle ein Eintrag der Art "WFU Write fuse (only accessible through UPDI)". Übersehe ich da etwas und/oder weiß jemand mehr?
-
Thread
Youtube Videos ruckeln im Firefox
Flashblock, better Privacy und Ad-Block plus installiert. Hier noch mein System: Windows7 Home Premium 64bit Firefox 11.0 (32bit) Flash Player 11 (32bit/64bit - kein Unterschied) i5 Prozessor @4x2,8Ghz 12Gb RAM 1000W Netzteil Die durchschnittliche Prozessorauslastung beim Video Schauen (720p) in YouTube
keine Besserung 2. Den aktuellen Shockwave Player installieren -> keine Besserung 3. von der 64bit zur 32bit Version vom Flashplayer wechseln -> keine Besserung 4. Firefox neu installieren -> keine Besserung 5. Testweise Google Chrome installieren -> die Videos funktionieren, ich möchte
-
Thread
Programmoptimierung
den Alarmtönen geändert? Ging wohl nicht auf Anhieb? Was nicht verwunderlich ist, hilf ist eine 8-Bit Variable, die kann man nicht auf 500 setzen ;-) >Altes Programm (siehe erster Post): >Größe, der hex-file: 10,4KB >Neuste Version: >Größe, der hex-file: 4,22KB Naja, Faktor 2,5, nicht schlecht
Alarmtönen > geändert? Ging wohl nicht auf Anhieb? Was nicht verwunderlich ist, hilf > ist eine 8-Bit Variable, die kann man nicht auf 500 setzen ;-) Joa, aber wenn du nochmal in der alten Version von "final_program_endgueltig.c" genauer hinschaust, erkennst du, das die Variable 16-bit hatte ;-)
-
Thread
Bufferverhalten beim Auslesen des UDR
Ich speichere den wert in eine Variable ab und lösche ihn dann aus dem udr. in der if abfrage setze ich ein beliebiges bit "abarbeitung erledigt" und beziehe es in die abfrage mit ein... also vom prinzip her: "if ((received==0xff) & (abarbeitung erledigt == 0)){bit setzen; sonstiges;}" variable lässt sich aber dennoch noch abfragen. aber nicht vergessen das bit wieder auf 0 zu setzen wenn beispielsweise ein neuer uart interrupt ausgelöst wird. Nicht der beste Programierstiel, denk ich mal. Aber funktioniert.
-
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
DS18B20 parasite: DQ aus STM32 Pin speisen
Tim schrieb im Beitrag #7096053: > GPIOA->BSRR = 1 << 9; // set bit 9 to 1 > GPIOA->BSRR = 1 << 25; // set bit 9 to 1 Bissel widersprüchlich.
die oberen 16 Bit (25-16 = 9) den Pin Low schalten. Ich denke schon, daß Lothar das wußte. Ich habe seinen Hinweis zumindest anders/so verstanden: set => immer auf 1 setzen reset => immer auf 0 setzen ^^
-
Thread
Entwicklungen und Forschung um den Sparmatic Comet / Zero v2 Heizungsthermostat
jeden Fall super. Fehlen tut mir eigentlich nur noch ne Kindersicherung ;) Ansonsten - Fuse-Bits konnte ich erst nach dem Flashen setzen - ist das normal? Ausserdem konnte ich nur mit den AVRISPmkII die Fuses setzen - der Mysmartusb light verweigert mit dem mitgelieferten Progtool (AVR-Dude
meinen, am Drehrad drehen zu müssen ;-) Andreas K. schrieb im Beitrag #3425596: > Ansonsten - Fuse-Bits konnte ich erst nach dem Flashen setzen - ist das > normal? Nö, normal ist das nicht, aber das liegt daran, dass die originale Firmware alle Lockbits gesetzt hat und somit können die Fuses nicht
-
Thread
16 bit Mikrocontroller mit CAN
Nur so aus Neugier: womit sind denn die 16Bit-Prozessoren begründet?
auf "viel rechnen" für größer 8-Bit. Peter
-
Thread
Pin in abhängigkeit einer variablen ein/aus-schalten
der > Variable benutzen kann? Man kann den Code hinter einem Makro verbergen: [c] #define writeBit(port,bit,value) { if ((value)>0) (port) |= (1<<bit); else (port) &= ~(1<<bit); } writeBit(DDRD,3,ledOn) [/c] Aber wirklich eleganter ist das auch nicht. Ich habe früher zu viele solcher Makros
produziert in der Regel genau den gleichen Maschinencode, ist also nicht ineffizient: [c] void setze_status_led(bool ein) { if(ein) { DDRD |= (1 << PIND3); } else { DDRD &= ~(1 << PIND3); } } setze_status_led(ledOn); [/c] Wobei man auch aufpassen
-
Thread
PIC16C: USART will nicht senden
Register konfiguriert: movlw b'1100000' movwf TRISC banksel TXSTA bcf TXSTA, TX9 ; nur 8bit-Senden bcf TXSTA, TXEN ; Transmission erst einmal sperren bsf TXSTA, BRGH ; High Speed Modus für alle Transmissionen bcf TXSTA, SYNC ; Asynchronen Modus setzen banksel RCSTA bsf RCSTA
Hallo, Du mußt trotzdem Bit 6 als 0 definieren (0=Ausgang), sonst kommt nichts raus. Im manual ist hier mit Setzen nicht die Wertigkeit 1 gemeint, sondern die korrekte Definition der Richtung. Also TRIS:=b10xxxxxx
-
Thread
Timer Servo ansteuerung AVR Atmega16
Bei den von mir vorgeschlagenen Einstellungen: "WGM-Mode-14-FastPWM" -> Dafür entsprechende Bits in TCCR1B und TCCR1A setzen. + "(1,0) Clear OC1A/OC1B on compare match, set OC1A/OC1B at BOTTOM, (non-inverting mode)" -> Dafür entsprechende Bits in TCCR1A setzen. legt nun der Wert im
handlicher aus: (16000000Hz / 8) / 50Hz = 40000 Na immerhin, das passt ja schon mal in ein 16Bit Register. Super Sache, wenn wir also den Prescaler auf 8 setzen und den Wert 40000 in ICR1 schreiben, (und ICR1 ist zufälligerweise ein 16Bit-Register), dann läuft die PWM konstant mit 50Hz. Bleibt
-
Thread
msp430, 8 bit bus aufteilen
bei dem 8 bit breiten bus habe ich 256 versionen du meinst sowas? switch (x) { case 0: ... ....hier ports setzen ... break; case 0: ... ....hier ports setzen ... break; case 0: ... ....hier ports
Bit 7 gesetzt... }
-
Thread
Servo mit 16Bit PWM ansteuern
ich möchte ein Servo mit dem 16Bit Timer per PWM ansteuern. Dazu habe ich folgenden Code geschrieben. [c] #include <avr/io.h> #include <util/delay.h> #define F_CPU 1000000 // CPU-Frequenz = 1MHz (1 Clockzyklus
PWM, Top = OCR1A, Prescaler = 1 ICR1 = 19999; // compare match auf 19999 setzen while(1) { OCR1A = ICR1 - 800; // Servo nach rechts drehen _delay_ms(100); // 100ms warten OCR1A = ICR1 - 2200; // Servo nach links drehen
-
Thread
16-Bit Timer ATmega16 Problem bei Compare Match Betrieb
Dann lass das doch nicht den Hardwarepin des OCA1 machen, sondern setz/lösche den Pin doch gleich in der Interruptroutine. Vorteil du kannst jeden Pin nutzen und bist flexibel. 0. externen takt auf TCNT1 geben 1. TCNT1 < OCR1A ? ja Int löst aus setze mit 2. fort nein mache weiter Hauptprogramm oder sonst was 2. Int OCR1A löst aus, PinY, X setzen/löschen 3. Setze Programm fort bevor der Int ausgelöst hat und warte wieder auf INT OCR1A