-
Thread
AVR-ASM Knobelei : Bitmanipulation am LCD im 4-Bit Mode
sondern setzt mit .EQU Anweisungen welches Datenbit auf welches Portbit geht. Dann werden die bits in der Ausgaberoutine einzeln gesetzt und fertig. Eventuell kann man vorher mit einer Maske die Databits ausblenden, Databits einzeln setzen und dann das Ganze auf einmal zum Port schicken (
$5A ) in r16,pind ;Portzustand kopieren seh ;High-Nibble FLAG setzen (HalfCarryFlag missbraucht) lcdo20:;Bits auf jeweiligen Portpinnen verdrahten bst r18,7 ;Bit7 an... bld r16,2 ;...Portpin 2 bst r18,6 ;Bit6 an...
-
Thread
Wie setze ich ein FIR-Filter aus MATLAB um ?
Habe mal ein Filter mit dem FDATool von MATLAB entworfen. Verstehe jedoch nicht die Umsetzung in VHDL. Wo benötige ich welche Bitbreite und welchen Datentype ? Habe ausserdem ein Warning das Input zugewiesen aber nicht benutzt wird. Wie kann ich die Wav-Datei die ich unter Simulink verwende auch in der Simulation mit Xilinx ISE verwenden ? Danke
-
Thread
Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?
}, };[/c] Komprimieren oder nicht komprimieren? Also statt "uint8_t hourOffset" einfach ein Bit im ersten Index setzen?
Diskussion* zum Artikel, siehe Link im Quelltext. Diese Formel fand ich damals wesentlich logischer und setze sie auch in mehreren Projekten ein - bei 12-Bit-PWMs.
-
Thread
Neues Terminal-Programm für Windows
Tobi, ein super Tool, DANKE! Frage: Warum erfolgt die Trennung bei der DEC-Eingabe nicht bei 8 bit?
Danke für die schnelle Antowort! Es sendet nur selten... das mit den Stopp-Bits konnte ich auch nicht glauben, steht aber im (zugegeben schlechten) Manual drinne...kann aber auch sein, dass sie 1 Stopp-Bit und 0 zusätzliche Stopp-Bits meinen... Aber nach der Reparatur sendet
-
Thread
Drehgeber auslesen
bei 8 Bit. Peter
oben steht die Lösung auf Dein Problem mit zusätzlicher Info: enc_delta bei der auswertung auf null setzen. Evtl. auch noch durch 2 teilen (besser um ein Bit verschieben).
-
Thread
Befehlssatz der bo8-CPU - was ist gut, was ist schlecht
ersetzen durch XOR, nur selten > musste ich bisher Negation nach NOR verwenden. OR wird zum Setzen, AND zum Löschen und XOR zum Toggeln von Bits verwendet, wobei IMHO das Toggeln deutlich seltener benötigt wird als das Setzen und Löschen. Andere Frage: Manche Befehle enthalten einen (J.. sogar
häufig geht einem /OR nn/ ein /AND nn/ voraus. Man muss dann bei AND nur nn so wählen, dass die Bits, die man mit OR setzen will, Null werden, und kann dann OR durch XOR ersetzen. /NOR nn/ ist nützlich zum Testen, ob mehrere Bits gesetzt sind.
-
Thread
Verständnisprobleme mit FuseBits
erfolgreich. Da es sich aber um einen fabrikneuen ATmega8 (L bzw. -16) handelt, muß ich ja noch die FuseBits setzen, um den externen Quarz mit 3,6864 MHz benutzen zu können. Mit Ponyprog war das ja einfach. Aber mit Avrdude muß ich ja: avrdude -p m8 -P /dev/parport0 -c stk200 -U:lfuse:xx benutzen
Na super ... Und ich habe gedacht, ich wäre zu dämlich die Fuse-Bits zu setzen. Es klappt mit Deinem Programm. Danke. Das Blinkprogramm hatte ich nur geschrieben, um heraus zu bekommen, ob die FuseBits stimmen und ich den Mega16 nicht "zerfused" habe. Die
-
Thread
Byte Bit für Bit seriell ausgeben
void schieberegisterLaden() { int actBit,bitNr,bitMaske; cbi(PORTC,PIN3); //Schiebeoperator 0 setzen cbi(PORTC,PIN4); //Speicheroperator 0 setzen bitMaske=128; //damit man sp‰ter immer nur das hˆchste Bit abfragt for(bitNr=0;bitNr<=8;bitNr++) //mit hˆchstem Bit anfangen, jedes Bit einlesen { // wir wollten numbers[x] einlesen // 0b01001 aufspalten in 0-1-0-0-1 actBit=(numbers[2]<<bitNr); actBit=actBit
-
Thread
Timer funktioniert nicht 16-Bit CTC
hi, ich probiere gerade einen Timer für ein anderes Projekt zum laufen zu bringen. Ich verwende einen Atmega162 mit 7372800 Hz. Nur der Code springt nicht in die Interrupt Routine. Hier mal die relevanten stellen: [c] int ms; uint8_t s; uint8_t min; //Timer1 Compare Match Interrupt ISR(TIMER1_COMPA_vect) { //Milli Sekunden um 1 erhöhen ms++; //sind 1000 ms um? if (ms==1000) { //ms zurücksetzen und Sekunden erhöhen ms=0; s++; //sind 60 Sekunden um? if (s==60) { //Sekunden zurück setzen und Minuten erhöhen s=0; min++; }
-
Thread
Servo am Mikrocontroller
Register > welches... sagt der name ja schon :) Richtig... Und dieses Register hat einzelne Bits, von denen jedes einen "Schalter" verkörpert, der eine bestimmte Funktionalität einschaltet bzw. aussschaltet. Und je nachdem, was der Timer tun soll, muss man die entsprechenden Bits setzen oder
Zusammenhang des kompletten Programms erkennbar sein. > TCCR2 = _BV(WGM21) | _BV(CS22); setzt die Bits wgm21 und cs22 und würde in ASM so aussehen: ldi r16,(1<<wgm21)|(1<<cs22) ;beide Bits im Register r16 setzen out tccr2,r16 ;nach tccr2 schreiben _BV ist wohl ein Macro, was
-
Thread
AVR: Wetterinformationen über DCF77 Gesperrt
die Bits 1-14 dauerhaft auf 0 zu setzen, könnte hier etwas Arbeit ersparen (z.B. die Sensorauswertung neu zu stricken). Gruss Jadeclaw.
Werden da minütlich irgendwelche Daten entschlüsselt? Wenn ja, könntest Du hier mal ein Tages-Log der Bits reinhängen? Hast Du schon systematisch Tests gemacht, wie z.B. verschiedene Anzahl von Bits kippen/setzen/löschen? Was ist mit vertauschten Bitpositionen? Hast Du schon Datenbits verschiedenere Datensätze
-
Thread
Hilfe: "ERR bit from an interrupt routine" - setzen?
Hallo, als Anfänger habe ich eine Frage: Wie kann ich das "ERR bit from an interrupt routine" setzen? Ich benötige dies, um bei BASCOM nicht in der GETATKBD()-Funktion hängen zu bleiben. Danke Josch
Josch wrote: > Wie kann ich das "ERR bit from an interrupt routine" setzen? Was soll denn das sein? Der AVR selber hat kein "ERR bit". Peter
-
Thread
Fuses per Source Code setzen
Atmega2560 Pro Board. Dabei lassen sich die Fuses nicht über die USB-Schnittstelle bzw. den Bootloader setzen. Daher hatte ich versucht, die per Source-Code zu setzen. Gefunden habe ich dazu mehrere Beispiele im Internet, u.a. das hier: https://www.nongnu.org/avr-libc/user-manual/group__avr__fuse.html
werden die mitgesetzt. Aber habe es jetzt verstanden. Dann muss ich die auf dem Board auch über ISP setzen.
-
Thread
Suche Assembler für 32-bit ARM
Architektur der Cortexe ist eine völlig andere als bei AVR. Das hat dann z.B. zur Folge, dass das das Setzen eines Bits im Port noch lange nicht sofort am Hardwareausgang erscheint. Auch das Zählen von Assemblerbefehlen um Laufzeiten zu bestimmen funktioniert hier nicht problemlos. Besonders schön ist es,
werden mit Controllern gemacht, die keinen Cache haben, sondern lediglich mit einem intern 64..256 bit breitem Flash. Das hilft schon, jaja. Trotzdem sind hie und da Waitstates angesagt. Der große Vorteil der 32 Bit Controller gegenüber den alten kleinen 8 Bit Architekturen liegt woanders, nämlich
-
Thread
EleLa - Elektronik Lagerverwaltung Entwicklung V3.0
Setzen Sie in dem Stamm von Laufwerk C -Works.
LibraryLocation" ist schon seit ein paar Jahren in EleLa drin, der sollte dann gehen. Wichtig: Die 64 Bit EXE braucht auch die 64 Bit DLL/SO Datei, und kann mit einer 32 Bit DLL/SO nichts anfangen (so auch die 32 Bit EXE umgekehrt)
-
Thread
8-Bit-Speicher
wieder eine (Anfänger-)frage: Für mein Projekt schalten per USB bräuchte ich einen Baustein, der acht Bit speichern kann, und ungefähr so funktioniert: sechs Eingänge, sechs Ausgänge, einen pin für 'set' - nun sollen, wenn ich 'set' auf 1 setze, die Zustände an den sechs Eingängen gespeichert werden und
in minimaler Software und Status bei Spannungsausfall ins EEPROM retten und beim Neustart wieder setzen. Gruß aus Berlin Michael
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware (Teil4) Gesperrt
U5 wird vom obersten Hex-Digit des Registerwerts serdata->np_piodata eingestellt, genau genommen Bits 22:20. Die Länge des Schiebetransfers ist entweder immer 24 Bit, oder (was ich nicht hoffen will) von den Bits 22:20 abhängig. Die DACs brauchen 24 Bit, die Schieberegisterketten 8 oder 16. Um das
jeweilige Empfangskette, nicht generisch. Die Anzahl der erzeugten Bitclocks ist genau passend, 8 Bit für Chip Selects mit einem Schieberegister, 16 Bit für Chip Selects mit zwei Schieberegistern, 24 Bit für die DAC-Chipselects. Für letzere wird Enable während der Bits gehalten, für die Schieberegister
-
Thread
Richtiges C++ hardwarenah
worden. Wenn es um Hardware geht, ist die Frage: plain C oder C++ *absolut* *irrelevant*. Einzelne bits setzen, Register mit irgendwelchen Werten laden usw. ist bestimmt nicht das, wofür C++ geschrieben wurde. Also wird C++ bestenfalls genau dasselbe compilieren wie plain C. Damit ist die Frage
einfacher gestalten sollen- aber es in Summe doch nur verkomplizieren und Einstiegshürden immer höher setzen. Oder laß es mich so formulieren: Dicke und immer dickere C++ Bücher (Aufwand) stehen in keiner Relation mehr zum Ergebnis. Jedenfalls was eine typische 8-Bit Controllerschaltung mit überschaubarer
-
Thread
Pausen-Problem
@Mat > Port setzen alleine braucht ja z.b. schon 3 Takte ... > - Port einlesen > - Bit(s) ändern > - Port schreiben zum Glück gibt es ein ASM-Befehl der das Setzen eines Bits direkt übernimmt. Dafür muss nichts
>@Mat >> Port setzen alleine braucht ja z.b. schon 3 Takte ... >> - Port einlesen >> - Bit(s) ändern >> - Port schreiben >zum Glück gibt es ein ASM-Befehl der das Setzen eines Bits direkt >übernimmt. >Dafür muss
-
Thread
Eingang abfragen Ausgang setzen geht nicht wie ich will
Ausgänge mit LED's verbunden. Mein code: [c] DDRB=0xFF; // alle pins des Port B als Ausgang setzen DDRA=0x00; // alle Pins des Port A als Eingang setzen PORTA=0xFF; // Pull Up wiederstände an Eingang A aktivieren while(1) { if (PINA & (1<<PINA0)) { PORTB|= 0x00;
Ein "verodern" mit 0 "PORTB|= 0x00" löscht kein einziges Bit. Setze die Bits gleich auf 0, PORTB = 0x00; dann gehts!
-
Thread
Code wozu dient er?
= 0; und schalte dann die benötigten Bits ein USISR = (1 << 7) | // Interruptflag setzen (1 << 1) | // Parität gerade (1 << 0); // Takt einschalten oder ich lösche die gewünschten Bits danach USISR &= ~(1 << 5
Was für ein Referenzmanual sollte das sein, in dem nur steht "Setze Bit 7 in Register XY"? Da steht natürlich "Setze das Bit ABC in Register XY". Deine Versuche, anderen Leuten C bei- und auch näherzubringen, sind ja im Prinzip durchaus sinnvoll, aber bitte: Schreib
-
Thread
STM32F401 Initialisirung USART2 bare metal
2 RCC->PLLCFGR &= 0xFFFC803F; // N = 168 setzen in Bits 6 bis 14 RCC->PLLCFGR |= (168L << 6) & 0x00007FC0; // Bits 24 bis 27 "freiräumen" RCC->PLLCFGR &= 0xF0FFFFFF; // Wert Q = 7 in Bits 24 bis 27 RCC->PLLCFGR |= 0x07000000; // HSI
|= (1<<16) & 0x00030000; //PLLP = 4 // PLLN = 168 setzen in Bits 6 bis 14 RCC->PLLCFGR |= (168UL << 6) & 0x00007FC0; [/c]
-
Thread
ATTiny10/11/12
der entsteht, wenn eine "Eins" um yz Stellen nach links geshoben wird. Mit anderen Worten: Wir setzen die Bits xy und (OR) yz. Nun könnte man ja aus dem Datenblatt den BIN-Wert oder HEX-Wert (warum eigentlich nicht gleich dezimal???) ermitteln, der nötig ist, die richtigen Bits im Register zu setzen
zu diesem Codeteil: ldi tmp,(1<<adlar)+3 ;also "Left-adjust-result"-Bit setzen und Quelle 3 auswählen was ist mit left-adjust und right-adjust gemeint? Gruß, Stephan
-
Thread
1 bit Wert PB2 direkt übernehmen (Assembler)
Bedienungsanleitungssucher (Gast) 2-Wire in Software, bei jedem Takt an PB1 lese ich PB2 ein, shifte bis 8 bit voll->Flag setzen und verarbeiten! Mathias
bastele ich zur Zeit noch. Der Loop läuft durch, sobald über INT0 die Taktflanke erkannt wurde. Wenn 8 bit durch sind, setze ich ein Flag und arbeite das in der Hauptschleife ab. Die Routine muß so schnell sein, um den AVR aus dem Sleep aufzuwecken, Bit speichern und wieder schlafen legen zu können ! Und
-
Thread
8 mal 1bit zu einmal 3bit zusammenfassen
256x3bit LUT...
kompliziert, Wiki-Artikel mit Look-Ahead Adder etc lesen und verstehen. Im Prinzip nur Adder von 8x1bit. Letzte Stelle XOR/Parität (bit 7-0) 2. Stelle XOR/Parität (AND(bit0-1), AND(bit3-2), AND(bit5-4), AND(bit7-6)), Quasi XOR/Parität vom Übertrag/AND von je 2 bits 3. Stelle, die AND(bit0-1), AND
-
Thread
Bit nachschieben oder Bitfolge füllen
Hi clc - Carry Flag löschen sec - Carra Flag setzen rol Register - Carry Flag nach Bit0 MfG Spess
;Null einschieben sbic port,portpin ;ist Portpin gesetzt? - nein... inc shiftbyte ;ja, Bit 0 setzen (abgeguckt bei PeDa) ...
-
Thread
RFM12 - Funkmodul
alles kein Problem. Das Empfangen scheint so zu funktionieren: FIFO einschalten, FIFO fill enable bit setzen, jetzt wartet das Modul auf das das Sync Word, (falls dieses eingeschaltet ist) und zeichnet danach alles mit der Bitrate auf. Egal ob was sinnvoles kommt oder nicht. Ist die Übertragung also
Wegen der Übertragungssicherheit würde ich an den 7,4 Hamming-Code noch ein Paritätsbit setzen, dann hat man einen 8,4 Hamming-Code und die vollen acht Bit einer Übertragung genutzt ;-) Infos dazu z.B. hier http://en.wikipedia.org/wiki/Hamming_code http://de.wikipedia.org/wiki/Hamming-Code
-
Thread
AVR: Watchdog löst keinen Interrupt aus
schrieb im Beitrag #8000521: > Gibt es irgendwelche > Timing-Vorgaben? Ja, sh. Datenblatt: • Bit 4 - WDCE: Watchdog Change Enable This bit is used in timed sequences for changing WDE and prescaler bits. To clear the WDE bit, and/or change the prescaler bits, WDCE must be set. Once written to
reicht mir nicht. Deshalb soll er seine Behauptung mit einem handfesten Beweis untermauern. > ...Bits von den 16 verwendet hat vermutlich einfach den Grund dass sonst > jeder Testlauf ewig braucht. Ernst, das ist brilliant! Danke! Du bringst mich auf eine Idee! Ich setze auf WDTO_15MS dann dauert
-
Thread
Grafikfähiger LCD Controller für 320x240 LCD mit 4 Graustufen
Dieser Code dürfte (sofern ich jetzt keinen Denkfehler drin habe) auch schneller arbeiten als jedes Bit per "setpixel" zu setzen.. Danke vielmals ;) - Tobi P.S: Mir fällt gerade auf, das es wenn ich aus dem externen RAM auch lese eventuell zu Fehlern kommen könnte.. Spielt das eine Rolle? Ich
krigt man immernoch schönes Schwarz und Weiß hin. Würde man das LSB einfach Null setzen wäre das ja nicht mehr gegeben. Die Grafik und Textfunktionen sollten alle laufen wie Gewohnt. Für die Farben (auch Text- und Hintergrundfarbe) sind jetzt aber die obersten DREI bit relevant, sodass
-
Thread
Z180-Stamp Modul
Z180 dann den Taktverdoppler? Die Software, die auf dem Z180 gestartet wird, muß das entsprechende Bit im 'Clock Mutiplier Register' (CMR) setzen. Den BIOS-Sourcecode hast Du ja. > - Was kommt den aus ACLK0 raus? Immer 9,x Mhz? Siehe Anhang. > Warum also die Aussage, bei Basis-board-Betrieb
Andererseits scheint auch das ldrbios.180 nach erfolgreicher Initialisierung das Flag in INIDONE nicht zu setzen...das ist wohl ne angefangene Baustelle (wie der Name -dirthy auch suggeriert). Ich schlage vor nicht 7 Bit einsparen zu wollen und ein Flag wie 55h, 0aah, oder 5ah, 0a5h zu setzen, das macht eine
-
Thread
AVR GPIOR Bit Verwaltung C++
trotzdem stehen im Binär-File nur die minimal notwendigen Maschinenbefehle. Nie mehr die falschen Bits im falschen Register auf einen ungültigen Wert setzen. > Ein sinnvolles Objekt wäre z.B. ein Display-Objekt, das eine Handvoll > IO-Pins beinhaltet und vor allem auch von diesen gleich abstrahiert
> gp0::set<1>(); ist mir ehrlich gesagt zu kryptisch ... kannst ja ein [c] gpior0::setBit<1>(); [/c] oder [c] gpior0::set(Bit1); [/c] oder, oder oder ... draus machen. > Was machen die beiden Funktionen setzen die jetzt einen ganzen Port auf > 1 oder 0 oder doch nur beide
-
Thread
Binärzahl Bits durchschieben
falls nötig noch die zwei höchstwertigen bits auf null setzen: [c]zahl&=0x3F;[/c]
Karl Heinz schrieb im Beitrag #3669571: > Welche Bits sind in Hex 0x49 auf 1 und welche auf 0? > Nimm die auswenig gelernte Tabelle von oben her und setz zusammen. Das > Bitnuster für 4 ist 0100 und das Bitmuster für 9 ist 1001. Das Bitmuster > für
-
Thread
Standardeinstellung der Fuse Bits
Hilfe diesen tollen Forums hab ichs dann auch geschafft ;). Nun hab ich ein bisschen mit den Fuse bits gespielt, und jetzt funktioniert leider nichts mehr. Leider kann ich mich auch nicht mehr an die Standardeinstellung erinnern. Ich benutze ein myAVR Entwicklungsboard mit einem ATmega8, der bereits
AVR. Wenn Du genug verfuste AVRs gesammelt hast, dass sich das Porto oder Fahrgeld lohnt, dann setze ich sie Dir gern mittels STK500 oder Dragon im HV-Mode in den Ausgangszustand zurück. Bis dahin: Lehrgeld. Ein AVR ist nunmal kein Multimedia-Spielzeug... ...
-
Thread
Flipdot Display Projekt (Hilfe Logik Erbeten)
abfangen, Serial.println(tmp,BIN); und warum wird das abgeschnitten zB. 10 nicht 00000010 da 8Bit [c] void setzeZiffer(int ziffer, int wert) { uint8_t tmp, muster; if (ziffer > 6) return; for (int z=0; z<5; z++) { //delay(500); test=1; //
Ziffern Ich bin immer noch der Meinung das die Ports A/B niemals Gleichzeitig wechseln dürfen. Wir setzen ja immer alle 16 Bits um und zumal zuerst der Port A Geschaltet wird von der LIB nicht die Daten Vor dem Steuersignal wie üblich .
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware
übertragende Datenmenge reduziert sich auf ein Viertel, da nun pro Pixel (bei 16 Planes) statt bisher 16 Bits (1 pro Plane) nur noch vier Bits (2^4 == 16 Planes) übertragen werden müssen. RLE funktioniert hier natürlich immer noch, da man ja statt einzelner Bits auch 4-Bit Sequenzen zusammenfassen kann. Auch
bewerten zu können. Wie ihr selbst sehen könnt ist dieser so überhaupt nicht bestimmbar. Große Hoffnung setze ich nun in das neue FPGA-Design. Ich werd mal schauen, dass ich die Version finde, wo zumindest die Signaldarstellung funktioniert hat und die ADC-Werte als Bit pro Pixel angezeigt worden. Vielleicht
-
Thread
atmega328pb Takt Gesperrt
durchprobiert, ging nicht. Und im Programmer "ext. Clock, Strartuptime ........" gewählt. (da kann man die Bits nicht einzeln setzen) es ist vertrackt.
Beitrag #5687128: > Und im Programmer "ext. Clock, Strartuptime ........" gewählt. (da kann > man die Bits nicht einzeln setzen) Wie oft noch? ext. Clock ist falsch! Kann man nicht einzeln setzen? Überlege mal, was da unten z.B. "Ext. Fuse: 0xF7" bedeutet.
-
Thread
LCD ansteuern, fragen zu tutorial in assembler
Controller übernimmt immer von low nach high die Daten. Du setzt erst e=1 und änderst dann die Bits und setzt e=0. Erst e=0, dann die Bits setzen und dann erst e=1; void display_init (void) { wait (500); E=0;// E auf 0 Setzen. //initialisieren f?it RS=0; //Interface auf 8 bit setzen tst_nop
Und was soll das bedeuten? Du setzt erst e=1 und änderst dann die Bits und setzt e=0. Erst e=0, dann die Bits setzen und dann erst e=1; Das widerspricht sich doch.
-
Thread
Z Pointer unter AVR GCC setzen
Assemblerdatei und bin dabei sie in AVR GCC einzubinden um die funktionen nutzen zu können. Doch beim setzen des Z-Pointers auf meine "ASCIITABELLE" erhalte ich folgende fehler: Zeile 131: ldi ZL,ASCIITAB<<1 ;set pointer to Ascii table Zeile 132: ldi ZH,ASCIITAB>>7 LCD.S:131: Warning: expression possibly out of 8-bit range LCD.S:132: Warning: expression possibly out of 8-bit range LCD.S:131: Error: invalid section for operation LCD.S:132: Error: invalid section for operation Hat jemand eine idee wo hier der
-
Thread
IVEL bei mega32 lässt sich nicht setzen
f72b79ee5d72 Company: Atmel HelpUrl: Installed Packages: AVRGCC - 3.4.1.95 AVR Toolchain 8 Bit Version: 3.4.1.830 - GCC 4.6.2 Package GUID: a3796ad3-98fe-4e60-bd15-57100d343560 Company: Atmel HelpUrl: AVR Toolchain 32 Bit Version: 3.4.1.348 - GCC 4.4.3 Package GUID: a3796ad3-98fe-
hmmm ... zuerst IVCE und 4 taktzyklen später IVSEL ....oder nicht? setzen will ich IVSEL, muss aber zuerst enablen!?
-
Thread
Eclipse Plugin für Fujitsu 16bit µcs Gesperrt
und FX (MB96F346) getestet. Einige Hinweise: -FETOOL=C:\Programme\Softune in Environment Table setzen -INC907=C:\Programme\Softune\lib\907\include in Environment Table setzen -*.ASM and *.C Files werden, falls gross geschrieben nicht erkannt. -Makros für die CPU Definition setzen z.B. __CPU_MB96F346
Hi, > Wir arbeiten mit dem 32bit Prozessor und wollten schauen wie komplex es > ist sowas für Eclipse zu bauen. Nun gibts das für 16bit und die > Anpassung an 32bit dürfte nicht so schwer sein. Die reine Toolchain-Anbindung ist
-
Thread
Warum gibt es kein Bit-Array in C?
[c] .... struct __attribute__((packed)) // oder was Dein Compiler hier möchte { uint8_t bit0 : 1; uint8_t bit1 : 1; uint8_t bit2 : 1; uint8_t bit3 : 1; uint8_t bit4 : 1; uint8_t bit5 : 1; uint8_t bit6 : 1; uint8_t bit7 : 1; } bytes[10]; int main (void) { bytes[0].bit0 =
repräsentiert. Schreibt man in der bitbanding area eine 0 in ein word, wird das correspondierende Bit auf 0 gesetzt, sonst auf 1. Vorteile: Zugriff per uint32_t array[] möglich ohne eine neue Type einzuführen. Zugriff ist atomic für setzen und löschen eines Bits. Zugriff erfordert keine bitshift
-
Thread
AVR64EA28: PIT-Interrupt
aber speziell für Sie aus dem Preliminary Data Sheet AVR64EA28/32/48: IN[7:0] Input Value This bit field shows the state of the PORTx pins when the digital input buffer is enabled. Writing a ‘0’ to bit n in this bit field has no effect. Writing a ‘1’ to bit n in this bit field will toggle the corresponding
auch ganz ohne /sleep/. Eine Sache ist mir noch aufgefallen: MC zerlegt in der Beschreibung das Setzen der Periode und des Enable-Bits in zwei Schritte (und impliziert damit vermutlich auch eine zwischenzeitliche Abfrage bezüglich des Sync-State). Du hingegen schreibst in einem Rutsch beides und
-
Thread
usbasp µC falsche LockBits Programiert
Johannes schrieb im Beitrag #7595514: > Ich vermute es liegt an den falschen > Lock-Bits und Fuses: \ > 0xFF \ > 0xE9 \ [code] avrdude.exe -c arduino_as_isp -p m8 ... -U lfuse:w:0xFF:m -U hfuse:w:0xE9:m [/code] Damit schreibst Du aber nicht 0xFF in die Lock-Bits, sondern in die
unbeschaltet. Wenn sich dann der Prozessor meldet, kannst Du die Fuses wie auf der USBASP-Seite beschrieben setzen: [code] You have to change the fuse bits for external crystal (see "make fuses"). # TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef [/code] Arduino F. schrieb im Beitrag #7595911: > Übrigens: >
-
Thread
AT89C51SND1C
springt, dazu ist nicht zwingend die Betätigung des ISP-Schalters nötig, sondern man kann auch ein SFR-Bit setzen. Vielleicht führt FLIP diese Anweisung falsch aus... Ist aber nur so ne Idee... Gruß Ralf
. Ausserdem füllt er die restlichen 8 Bit pro Kanal mit 0 auf. Das bedeutet bei einem 16 Bit stereo Signal schickt er ein 8 Bit mono Signal (natürlich nicht mehr korrektes Signal) raus. Normalerweise sollte er doch bei diesem Signal die
-
Thread
Meteotime Crypt Gesperrt
PIC keinen konstanten Wert DIREKT schreiben kann. Darum werden sie die Speicherstelle erst auf 0 setzen und dann die einzelnen Bits die sie brauchen per OR setzen. Warum man das dann allerdings in so vielen Schritten macht anstatt in einem ist mir noch ein Rätsel. Es werden auch nicht jedes mal alle
dass der Flash so aufgeteilt ist. Man muss bei bestimmten Sprüngen/Befehlen ja auch ein bestimmtes Bit setzen, falls das Sprungziel in der oberen Hälfte liegt oder so.
-
Thread
AVR ASCII Video Terminal - 40 x 25 - BAS Signal
setzen (Bsp.) X, X, X, X, 1, 1, 1 Datenübernahme 2.Steuerwort setzen 1, 1, 1, 0, 1, 0, 0 L-Teil Cursor auf Zeile X setzen 0, 0, 0, 0, 1, 0, 1 H-Teil Cursor auf Zeile X setzen
baud2: ldi mpa,0x10 ;Receiver enable out UCSRB,mpa ldi mpa,0x86 ;8-Bit, 1 Stopbit, no Parity out UCSRC,mpa [/avrasm] Der Interrupt: [avrasm] nop ;Laufzeitausgleich synclo ;Syncsignal Lo setzen
-
Thread
LCD Uhr mit Alarmfunktion mit Drehencoder in BASCOM (Ein kleines Projekt für BASCOM Änfänger Vol3)
1000 mal aufgerufen ist eine Sekunde rum, also Variable in der ISR hochzählen bis 1000 und dann ein Bit setzen.
auch noch nicht gebraucht. Zum Auslösen eines Compare-Interrupts werden sie glaube nicht gebraucht. Setzen wir sie auf 00. Der bisherige Steuerwert für TCCR1A ist also: &b000000xx Es folgen Bit 1: WGM11 und Bit 0: WGM10. Hier ist ein Stolperstein, denn diese beiden Bits sind nur die halbe Miete
-
Thread
STM32F4 SPI Problem
disabling the SPI." Wenn man nicht aufpasst, gerät das BSY-Bit da durcheinander ... Und: Diese Spaghetti-Initialisierung ist schon arg hässlich. die Bits nacheinander einzeln zu setzen, erhöht die Übersicht nicht gerade. (Außerdem wird dabei stillschweigend
setze ich meist (nicht immer) das entsprechende Register ohnehin immer gesamt auf Null bevor ich anfange die entsprechenden Bits zu setzen. Hier ist es diversen Löschereien/Umschreibaktionen zum Opfer gefallen
-
Thread
ARM: kompliziert?
32Bitter, wow. Das Atomic-Problem fällt einem auch hier auf die Füße. Man hat SFRs für einen 16Bit-Port setzen oder nur einen Pin. Zusätzlich kann man auch ein Maske setzen, um Outputs zu schützen. D.h. ein Interrupt kann Pins ändern, und diese Änderungen kann man schützen, auch wenn der Interrupt
für die man per Befehlssatz schon hochkomplexe Bitfeld-Befehle benötigen würde. Wenn man mehrere Bits eines Ports, aber nicht alle, gleichzeitig auf einen beliebigen Wert setzen will.
-
Thread
PIC XC8 Mehrere Registerbits auf einmal setzen
Als AVR Umsteiger bin ich es gewohnt die Bits in den Registern folgendermaßen zu setzen: [c]PORTA=1<<PA1|1<<PA2;[/c] Der Compiler optimiert es dann zur PORTA=6 und alle Bits werden gleichzeitig gesetzt. Wenn ich mir die Tutorials zu PICs
auf folgende Variante: [c]LATAbits.LATA1=1; LATAbits.LATA2=1;[/c] Dies wird zu einem Haufen Bit sets kompiliert, was Ausführungszeit und Platz kostet. Im Moment behelfe ich mir so: [c] #define my_LATA0_BIT 0 #define my_LATA1_BIT 1 #define my_LATA2_BIT 2 LATA=1<<myLATA1bit|1<<myLATA2_