-
Thread
Menu Designer für Grafik LCDs inklusive grafischem Editor
komplettes Menüsystem für schwarz-weiß Grafik LCDs erstellt. Features: Bis zu 16 MB Menü Größe im 24/32 Bit Adressen Modus Bis zu 64 KB Menü Größe im 16 Bit Adressen Modus Implementiert ist das ganze als Bytecode Interpreter. Das Menü kann auf jedem beliebigen wahlfrei lesbarem Speicher untergebracht werden
XP 32bit + Lazarus 1.2.2: Menuedit compiliert, keine weiteren Tests durchgeführt Windows Vista 32bit + Lazarus 0.9.28.2 + Cygwin: Compiliert nicht, Lazarus zu alt [/code
-
Thread
Wieder mal Tastenabfrage geht das auch so?
zwei Ports habe Da kann man alle Tastenvariablen auf uint16_t aufbohren und beide Ports zu einem 16Bit-Wert kombinieren. Oder sparsamer, die entsprechenden Bits mit AND/OR/SHIFT auf einen 8Bit-Wert kombinieren. Peter
> Da kann man alle Tastenvariablen auf uint16_t aufbohren und beide Ports > zu einem 16Bit-Wert kombinieren. > > Oder sparsamer, die entsprechenden Bits mit AND/OR/SHIFT auf einen > 8Bit-Wert kombinieren. > 4 Pins von einen Port und einer vom anderen, da ist der Vorschlag mit der
-
Thread
AD7177 SPI Kommunikation durch Schleifringe
einer CRC überprüfen, ob die Daten korrekt sind. Also kann man ihn nach jedem CRC-Fehler mit 64 1-Bits neu synchronisieren. Und mit dem Bit CRC_ERROR kann man überprüfen, ob er selber alles richtig verstanden hat und die Befehle nach der Synchronisation nochmal senden. Man kann dann mitzählen, wie
Kanäle? Also in der Summe 10kS/s? Oder nur 1 Kanal? Bei einem Kanal wären das ja grade mal 32 Bits/Sample * 2500 Samples/s = 80kBit/s und damit würde eine Tatkfrequenz von 100 eigentlich ausreichen. Also deutlich langsamer als derzeit. Und dann könntest du für den Takteingang ein wenig Shaping mit
-
Thread
ATMega328, komisches Verhalten bei fast vollem Speicher
Du solltest deine Register beim Start ordentlich initialisieren. Keine Bits gezielt löschen/setzen, sondern einfach einen definierten Wert reinschreiben. Du weißt ja nicht, was vorher drin war.
Deine Nibble-Funktion löscht auch Bits vor dem Setzen kurz. Wenn D4 z.B. high war, wird es, wenn es nach dem Aufruf wieder high sein soll, kurz auf low getoggelt. Eigentlich kein Problem, aber total unschön.
-
Thread
Shiftregister Programmieren M74HC595
Schiftregister ist an meinen ATmega16 angebunden. Ich verwende die ersten 4 Pins des PortDs. Dabei ist Bit0 der takt und Bit3 ist SI. Bit1 ist RCK und Bit2 ist G.(Meine ich. Ist schon länger her) Mit dem Nachfolgenden Programm kann ich alle Pins des Schiftregisters auf 1 oder 0 setzen. Programm1: ___
Damit kann ich die Ausgänge entweder auf 1 oder 0 setzen. Das Programm Läuft so, dass ich die Bits des PortD mit dem Register verbunden habe. Dabei ist Bit0 der Takt und Bit3 ist mit den Daten gefüllt. Die anderen beiden Pins sind für die Aktivierung der
-
Thread
Viele Fragen und ein kleiner Blog
[avrasm] ; RS232 Frame-Format: 8 Bit ldi Dummy1, (1<<USBS0)|(3<<UCSZ00) ; 8 Bit Daten kein Paraty, 1 Stopbit sts UCSR0C, Dummy1 [/avrasm] Braucht der 88 kein URSEL? (Ich hab nicht nachgesehen, ich frag nur)
UBRR_VAL) sts UBRR0H, Dummy1 ldi Dummy1, LOW(UBRR_VAL) sts UBRR0L, Dummy1 ; RS232 Frame-Format: 8 Bit ldi Dummy1, 1<<TXEN0 ; TX aktivieren sts UCSR0B, Dummy1 ldi Dummy1, (1<<USBS0)|(3<<UCSZ00) ; 8 Bit Daten kein Paraty, 1 Stopbit sts UCSR0C, Dummy1 [/avrasm]
-
Thread
Linux Rechtesystem im Vergleich zu Windows
um die es nicht geht. Es kam einer daher und hat behauptet, man müsse sich nur mal mit sticky bits und dergleichen auseinander setzen, dann wäre das doch alles machbar (/ohne/ ACLs). Nachdem A. K. ein Szenario schildert, welches damit eben /nicht/ machbar ist, kommst du als Lehrmeister daher
Beitrag #3423671: > Es kam einer daher und hat behauptet, man müsse sich nur mal mit sticky > bits und dergleichen auseinander setzen, dann wäre das doch alles > machbar (ohne ACLs). Nicht Alles, sondern Vieles.
-
Thread
Wie bekommt man bitte zwei DWord in das lds si, rein ?
DWord (Double Word) = 32bit passt nicht in ein Word = 16bit Willst du deine Frage also nochmal anders stellen Ein segment oder offset kann (bei dir) nur Word breit sein
plane masking function OUT scDATA, &HF ' select all four planes OUT gcINDEX, gcBitMask ' select CPU bit masking function OUT gcDATA, &H0 ' unmask all bits IF (dstPage < srcPage) THEN ofs = CLNG(srcPage - dstPage) * 16000 DEF SEG = &HA000 + dstPage
-
Thread
ADC interne Funktionsweise
Hallo, Noch eine Frage: Nachdem ich das GO Bit setze, startet meine eingestellte Acquisition time in der der Kondensator aufgeladen wird. ABER, laut Datenblatt : "When the GO bit is set, the A/D module CONTINUES to sample the input for the selected
studentMax schrieb im Beitrag #4218127: > "The GO bit should not be set in > the same instruction that turns on the ADC." > Wieso? Damit der ADC Zeit zum Einschalten hat. Erst durch das Setzen des ADON bits wird der ADC überhaupt mit Strom versorgt.
-
Thread
LCD mit Infineon Entwicklungsboard
Enable-Puls static void lcd_enable( void ) { LCD_CTRLPORT |= (1<<LCD_EN); // Enable auf 1 setzen _delay_us( LCD_ENABLE_US ); // kurze Pause LCD_CTRLPORT &= ~(1<<LCD_EN); // Enable auf 0 setzen } // Sendet eine 8-bit Ausgabeoperation an das LCD static void lcd_out8( unsigned char data ) { LCD_DATAPORT = data; // Bits setzen lcd_enable(); } // Initialisierung: muss ganz am Anfang des Programms aufgerufen werden. void lcd_init( void ) { // verwendete Pins auf Ausgang schalten unsigned char pins
-
Thread
128x64 Grafikdisplay von Pollin
Ergebnis ist dann, dass das erste Pixel links oben aus ist, das zweite ist an, usw. Für das Pixel setzen/löschen unterstützt der T6963 noch einen eigenen Befehl. Dazu musst du ebenfalls den Adresspointer des Displays auf die 8-Bit-Speicherstelle setzen, indem sich das Pixel befindet, das du steuern willst
Home Adress setzen lcd_send_data(); // Auf 0200H setzen LCD_DATA = 0x02; lcd_send_data(); LCD_CMD = 0x42; lcd_send_cmd(); LCD_DATA = 0x15; // Grafik
-
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
Fuse Bits bei AT90USB647 setzen - wie ?
Paltinenlayouts haben wir den Boot-Taster vergessen und müssen somit in den Fuses BOOTRST von 1 auf 0 setzen. Nun habe ich mir ein Kabel für den Parallel Port (Picoweb) gebastelt und kann auch auf den uC Connecten und das hfuse-Bit Aulesen, jedoch können wir dieses Bit nicht verändern. Folgendes habe
Ja hab mir auch schon gedacht, dass es an den lockbits liegt - aber ich konnte dieses auch nicht setzen - hier tritt ebenfalls der selbe Fehler auf - kann ich das Bit auch ohne avrdude setzen?
-
Thread
uint64_t und Bits 33-64 lesen bzw. setzen
Hallo, ich habe ein Problem mit dem uint64_t Datentyp. Mein Testprogramm sieht so aus: [code] #include <inttypes.> #include <stdio.h> #define SET_BIT64(port, bit) ((port) = (uint64_t)((uint64_t)(port) | (uint64_t)(1ULL << (bit)))) #define IS_BIT_SET64(port, bit) ((uint64_t)((uint64_t)(port) & (uint64_t)(1ULL << (bit))) ? 1 : 0) void dbg(unsigned long long b) { for (int i = 0; i < 64; ++i) { if (IS_BIT_SET64(b, i)) { printf("X"); } else { printf("."); } } printf("\n"); } void test() { unsigned long long test; for (int i = 0;
-
Thread
GPIO-Port via DMA-Transfer setzen
Geschwindigkeit ablaufen. Ich stelle mir den Ablauf so vor: - Die Sequenz liegt als Array von 32bit Werten im Speicher, wobei die unteren 16bit jedes Wertes den Registerbereich "BSRRL" und die oberen 16bit den Registerbreich "BSRRH" repräsentieren. (Das BSRR-Register dient dem Setzen/Rücksetzen der GPIO-Pins (untere 16bit für Setzen & obere 16bit für Rücksetzen.)) - Per DMA wird nun Wert für Wert aus dem Array transferiert und nacheinander das BSRR-Register entsprechend gesetzt. Auf diese Weise ergibt sich eine Sequenz
-
Thread
Getakteter Zweiflankendetektor
Schaue dir doch die Datenblätter der beiden ICs mal an 7493 ist ein 3bit und ein 1bit Zähler in einen Gehäuse Da nimmst du den 3bit zähler. Der zählt immer durch von 0-7 Die Ausgänge des Zählers gibst du auf einen BitVergleicher 7485 Eingang A Den Eingang B verdrahtest
das weiter Dann nimmst du halt nen programmierbaren und stellst den auf -1 (bzw binär 111 bei 3bit oder 1111 bei 4 bit Zählern der Rest ist identisch)
-
Thread
AVR8ASM TWI Interrupt
devices, always write this bit to zero when writing the UCSRA Register. " Was meinen die jetzt mit " write this bit to zero ... " ? Das übliche, dieses Bit durch "setzen" zu löschen, also beschreiben mit einer Eins oder wirklich
C9. Spalte 5 = Z-Achse vom Beschleunigungssensor. ?Wert = $C0. Spalte 6 = Die beiden unteren Bits der 3 Achsen des 10Bit -Beschleunigungssensors( jeweils Bit 1&0 ) und die Taster C & Z. Die RS232-Aufnahme zeigt die " Neutralstellungen ". Durch schütteln werden auch die maximal und minimal
-
Thread
Analyse der Arduino Libraries
wird: > > https://github.com/arduino/Arduino/blob/1.5.2/hard... > > Leider braucht das PIN-setzen dadurch auch einige Zeit. Nicht nur das, der Zusammenhang zwischen Bits und Ports geht auch verloren. Wenn ich damit z.B. einen 8Bit-DAC ansteuern will, kriege ich zwischen 2 Werten riesige Spikes
wird: >> >> https://github.com/arduino/Arduino/blob/1.5.2/hard... >> >> Leider braucht das PIN-setzen dadurch auch einige Zeit. > > Nicht nur das, der Zusammenhang zwischen Bits und Ports geht auch > verloren. > Wenn ich damit z.B. einen 8Bit-DAC ansteuern will, kriege ich zwischen 2 > Werten
-
Thread
MCU mit 24-Bit-SPI?
was auch immer. Was du mir gerade versuchst zu erzählen: Wenn das Eingangs-Schieberegister nur 8 Bit hat, kann ich da trotzdem 24 Bit drin empfangen, weil die überschüssigen 16 Bit ... ja bitte wo landen die denn? Und wieos soll nach 8 Bit Ruhe sein, wenn der Sender eben 24 Bit in einem Frame schickt
bei 24bit eben 3 mal, und am Ende hast du alle 24 bit.
-
Thread
Hattet ihr in eurem PC mit < 80486DX Prozessor einen separaten Co-Prozessor?
Intels i386DX 32-bit Daten- u. Adressbus bis 40 MHz i386SX 16-Bit Daten- 24-Bit Adressbus bis 25 Mhz i386SL mit Cache u. ISA Bus-controller 20/25Mhz .... AMD Am386DXL (L - Low Power) statisch ;) AM386DXLV
Der 386 DX hatte keinen integrierten Co-Prozessor. Der Unterschied des 386 SX zum DX waren der 16 Bit-Datenbus und der 24 Bit-Adressbus für den Speicher (= max. 16 MB). 386 DX: je 32 Bit.
-
Thread
8x BCD-2-dec fuer 55 Outputs - Tabelle
Anwendung hat. Also im Klartext suche ich nach einer Tabelle wie sowas: um ausgang.1 auf 1 zu setzen -> A=1,B=1,C=0....F=0 um ausgang.20 auf 1 zu setzen -> A=0,B=0,C=1....F=1 um ausgang.55 auf 1 zu setzen -> A=1,B=0,C=1....F=1 usw. ewtl. hat es jemand schon in C implementiert, das waere noch
Michael Gromov schrieb im Beitrag #2414605: > um ausgang.1 auf 1 zu setzen -> A=1,B=1,C=0....F=0 > um ausgang.20 auf 1 zu setzen -> A=0,B=0,C=1....F=1 > um ausgang.55 auf 1 zu setzen -> A=1,B=0,C=1....F=1 Wesentlich einfacher wäre es, wenn du tatsächlich eine binäre
-
Thread
LCD von Pollin ( mc1001aw-tgr ) 1*10 wie steuere ich die 2. displayhälfte an ?
& (1<<6))temp2|=(1<<LCD_DB6);//schiebt das bit von DB4 auf den platz LCD_DB4 if(temp1 & (1<<7))temp2|=(1<<LCD_DB7);//schiebt das bit von DB4 auf den platz LCD_DB4 LCD_PORT |= temp2; // setzen lcd_enable();
LCD_DB4 if(temp1 & (1<<2))temp2|=(1<<LCD_DB6);//schiebt das bit von DB4 auf den platz LCD_DB4 if(temp1 & (1<<3))temp2|=(1<<LCD_DB7);//schiebt das bit von DB4 auf den platz LCD_DB4 LCD_PORT |= temp2; // setzen lcd_enable();
-
Thread
10khz rechteckspannung mit uC
ADC läßt sich durch gewisse Timer-Ereignisse starten. Daß das passieren soll, legt man über das Setzen des ADATE-Bits in ADCSRA fest, welches Timerereignis der Trigger sein soll, legt man über die ADTSx-Bits (beim Mega32 im SFIOR-Register) fest. Für Timer1 als Quelle stehen hier drei Varianten zur Verfügung
in der ISR erfolgen muss. Das bläht aber die ISR nicht unnötig auf. Start-AD ist einfach nur das Setzen des Bits zum Starten des ADC und den Bit_Swap erledigst du mit [avrasm] Push R16 Push R17 In R16, PortB LDI R17, 0b00000011 EOR R16, R17 Out PortB, R16 Pop R17 Pop
-
Thread
Fuse-Bit's und Assembler
Hallo, gibt es eine Möglichkeit in Assembler die Fuse-Bit's zu setzen bzw. zu löschen !? In Bascom geht das mit $prog. Ich möchte den RESET-PIN eines ATtiny4 als IO nutzen, im AVR-Studio kann ich den Haken RSTDISBL setzen. Diese möglichkeit ist für größere Stückzahlen umständlich, daher suche ich eine Möglichkeit direkt im Assembler-Code das Fuse-Bit zu ändern. Danke ! MM
-
Thread
Windows 10 - jetzt bekomme ich richtig Angst
sehr viel seltener. Neben des alten 16-Bit-Zeugs fällt aber auch sämtliche Hardware unter den Tisch, für die es nur 32-Bit-Devicetreiber gibt. 32-Bit-Software lässt sich problemlos unter 64-Bit-Windows nutzen, 32-Bit-Devicetreiber aber nicht
schon Dateien für Windows Vista 64 Bit enthalten. Das Gerät ist von 2010. Ich habe gerade gelernt, daß es sogar mal eine 64 Bit Version von XP gab.
-
Thread
GCC: Pin toggeln in einem Takt?
, versuchst du daher unter Umständen mehrere Bits auf einmal auf 1 zu setzen und toggelst daher auch mehrere Bits.
tatsächlichen Zustand des Pin Registers vor der > Operation, versuchst du daher unter Umständen mehrere Bits auf einmal > auf 1 zu setzen und toggelst daher auch mehrere Bits. Das war in früheren Zeiten auch meine Befürchtung bis ich den entsprechenden Abschnitt im Datenblatt gelesen habe (s. mein letzter
-
Thread
Fusebits im AVR-Studio beim Tiny24 setzen
Hallo! Die Fuse-Bits des ATtiny24 kann ich nicht mit dem MYsmartUSB-Programmer (kompatibel zu AVR910) im AVR-Studio setzen, da ich den Controllertyp nicht auswählen kann. Ich gehe beim AVR-Studio über Tools –> AVRprog
aber der Controller lässt sich nicht auswählen. Hat jemand von euch eine Lösung, wie ich die Fuse bits des Controllers setzen kann. Danke für euere Hilfe.
-
Thread
Variable Portzuweisung PXOUT
Der Port wird ja über ein Register angesprochen. Das Register besteht aus einzelnen Bits. Die Nummer des Ports ist das entsprechende Bit. Willst du Port POUT.0 auf 1 setzen, dann sieht das so aus: 00000001 Bei POUT.1: 00000010 Natürlich kannst du die Bitvektoren beliebig angeben.
PORT7 &= 0xf3; // löscht Bit 2 und 3 PORT7 |= VAR1; // setzt die Bits aus VAR1 Port 8 entsprechend. Anmerkung: Als Port werden iA die gesamten 8 Bit bezeichnet. Du möchtest einzelne Portbits setzen.
-
Thread
SPS-Programmierung / uC Programmierung in C
aber nichts mit der Frage zu tun. Hier noch mein Senf zum Thema: Bei einer SPS bedeutet: Setzen => Ein Bit auf TRUE setzen, egal wie sein Zustand vorher war Das Bit ist hinterher auf jeden Fall TRUE Rücksetzen => Ein Bit auf FALSE setzen, egal wie sein Zustand vorher war Das Bit ist hinterher auf jeden Fall FALSE Wert zuweisen => Ein Bit gleich setzen zu einem anderen Wert Das Bit kann hinterher TRUE oder auch FALSE sein, je nach dem wie der Wert seiner "Mutter" ist. Das wurde hier schon angedeutet: Autor: Dennis Heynlein (c-logic
-
Thread
PIC 16F628 Fehler im Lauflicht
wenn du den 1.er rausschiebst, das hast du nicht drinn. > > Durch den rlf schieb ich doch Alle Bits in der Speicherzelle um eine > Position nach links. Das Lauflicht läuft von Bit0 nach Bit7, dann kurz > Pause und es fängt wieder von vorne an. > Die Bitschiebebefehle (rlf und rrf) schieben zwar alle Bits nach links oder rechts, sie schieben aber auch immer das aktuelle Carry-Flag mit rein (bei rlf wird das Carryflag auf Bit0 geschoben, bei rrf auf Bit7). Gleichzeitig wird das Bit welches rausgeschoben
-
Thread
Menü programmieren
springen */ break; case 2: /* Ventil */ if(T_UP) {AUF=1; P5OUT &=~BIT5;} else {AUF=0; P5OUT |= BIT5;} if(T_DOWN) {ZU=1; P3OUT &=~BIT0; if(ADC12MEM3 > 100) {hub=1;}} else {ZU=0; P3OUT |= BIT0;} break;
Zeilen müssen etwa so angepaßt werden. [c] #define KEY_PIN P2IN #define KEY0 BIT7 #define KEY1 BIT6 #define KEY2 BIT5 #define ALL_KEYS (KEY0 | KEY1 | KEY2) #define REPEAT_MASK (KEY1 | KEY2) // repeat: key1, key2 get_key_press(KEY0)
-
Thread
C++ für Mikrocontroller
Reference-Manual eines beliebigen ARM Cortex-Mx Controllers. Die Controller sind kaum komplexer als die gängigen 8Bit Mikrocontroller, allerdings kann die Peripherie oft mehr. Die Libraries braucht man ebenfalls nicht. Karl H. schrieb im Beitrag #4258930: >> Compiler-Schalter setzen um diese Vorteile zu nutzen:
irgendwie komplizierter empfindest obwohl da ebenfalls nur eine Handvoll Bits in einer Handvoll Registern zu setzen sind, Register und Bits deren Namen einem sogar schon irgendwie seltsam vertraut vorkommen sollten und (o Wunder) im Wesentlichen die vergleichbaren Funktionen
-
Thread
Temperatur an LEDs ausgeben
ADMUX ist ein Register es besitzt 8 Bit. Hier sehr schön zu sehen, jede 0 steht für 1 bit das du wahlweise auf 0 oder 1 setzen kannst. Rechts das LSB und links das MSB. ADMUX = Binary(00000000); // |||+++++---------- MUX
Selection (external // Reference) Du müsstest im ADMUX Register alle Bits auf 0 setzen. Das hier... ADMUX &= ~((1<<REFS1) | (1<<REFS0)); // interne (externe meinte ich) ...bedeutet einfach nur das du bit 7 und 6 auf 0 setzt. Du kannst das ADMUX Register aber auch
-
Thread
PIC12F683 2 LED auf ON
benötige: Zitat Sprut -> Damit ein Ausgangspin auch als Ausgangspin funktioniert, muss das zugehörige Bit im TRIS-Register des Ports auf 0 gesetzt werden. Ich werde das also heute Abend mal prüfen. Ich meine aber das ich im TRIS-Register alles auf 0 setze? Danke dafür, Gruß Reiner
as I/O, COUT pin is configured as I/O, Comparator output disabled, Comparator off. D.h. Du musst Bit 0-2 des CMCON0 auf 1 setzen.
-
Thread
STM32: Drama mit "Hard Fault Error"
data) { #define DELAY_595 2 for (uint8_t i = 0; i < 8; i++) { // Datenbit setzen GPIO_SetPinValue(GPIOE,HCT595_DS,(data & 0x80)); GPIO_SetBits(GPIOE,HCT595_SHCP); // SHCP -> High //wait(DELAY_595); GPIO_ResetBits(GPIOE,HCT595_SHCP); // SHCP -> LOW //wait(DELAY_595); data = data << 1; } // 8 Bit an die Ausgaenge clocken GPIO_SetBits(GPIOE,HCT595_STCP); // STCP -> HIGH //wait(DELAY_595); GPIO_ResetBits(GPIOE,HCT595_STCP); // STCP -> LOW GPIO_ResetBits(
-
Thread
Signal mit Timer erzeugen
Port invertieren anders schreiben. Gibt es nicht ne Möglichkeit ihn einfach auf HIGH oder LOW zu setzen...??
Erreichen des Endwertes definierten Pegel ausgeben (sbi oder cbi) und den Pointer auf Startwert setzen (ldi). In den übrigen Fällen (also nicht beim Telegrammende) wird der Port (aber nur das gewünschte Bit!) einfach invertiert. Das geschieht durch Einlesen (in) des Ports, exor mit Hilfsregister, in
-
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
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
ATMega8 an Serieller SS sendet Müll
Kannst auch Testweise mal das UCPOL-Bit setzen, das invertiert die Pegel. Manche Schnittstellen kommen mit 0 und 5V aus.
Thilo M. wrote: > Kannst auch Testweise mal das UCPOL-Bit setzen, das invertiert die > Pegel. Manche Schnittstellen kommen mit 0 und 5V aus. Zitat ATmega8 Datenblatt(10/06) Seite 157: > UCPOL > This bit is used for Synchronous mode only. Write this
-
Thread
Assembler-Verständnisproblem beim attiny13a
#7801574: > Der Timer hat Kontrolle über den Pin und kann ihn mit COM0A0=1 und > COM0A1=1 nur setzen. Dann haben aber SBI/CBI auf den Portpin keinen > Einfluss mehr. Dafür gibt es auch die Bits FOC0A, FOC0B. Damit kann man ein sofortiges Compare Match erzwingen und so die Ausgänge setzen. "The OC0A output is changed according to its COM0A1:0 bits setting."
-
Thread
STM32 F746zg nucleo und ILI9488 TFT per SPI langsam ?
schrieb im Beitrag #4879003: > Im Falle eines TFTs mit SPI müssen jedoch für das > einzelne Pixel 16-Bit Worte geschrieben werden, also > alternierend Low Byte / High Byte. Das kann die DMA Maschine > aber nicht leisten. Da war ich ganz froh, das der STM32 das kann (16 Bit SPI und 16 Bit DMA). Sonst
lohnt sich DMA schon oft bei kleinen Datenmengen. Bei 20MHz SPI kann eine 180MHz-MPU während eines 16-Bit-Transfers (ein Pixel) schon etliche Befehle ausführen. Erst recht gilt das für die 216MHz F7 oder gar die 400MHz H7 MCUs. Der Overhead bei DMA beschränkt sich ja meistens auf das Setzen vom CS, der
-
Thread
Interupt schaltet nicht alles ab?
zeitrelevante SChritte auswertest. Etwa so: Timer_ISR: Inc Zeitzähler Zeitzähler = 10 Setze Flag 10 msek Zeitzähler = 100 setze Flag 1/10 Sek Zeitzähler =1000 setze Zeitzähler zurück und setze Flag 1 Sek. Ende Interrupt Was macht nun das Hauptprogramm ? Hier noch einmal das
[avrasm] LDS r16, Prg_Ctrl ; Programmsteuerkontrolle ANDI r16, 0b00010000 ; Bit Verzögerung für Abschnit "x" starten ? BREQ Weiter_1 LDS R16,50 ; Verzögerungszeit setzen STS Zeit_Zaehler, R16 ; und im Zähler ablegen LDS r16, Prg_Ctrl
-
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
Picoboard, Arduino, Gpio / Port direkt per Register-Zugriff steuern?
geht das so?: 0x40014000 = 0x1000 //bit13 setzen, Dann ist GPIO0 als Ausgang definiert :-D ?
Epi K. schrieb im Beitrag #7401091: > geht das so?: > > 0x40014000 = 0x1000 //bit13 setzen, > > Dann ist GPIO0 als Ausgang definiert :-D ? Nein. So aber vielleicht: *((unsigned int *)0x40014000) = 0x1000; Wenn da wirklich ein Register liegt die auch mit 32 bit beschreibbar
-
Thread
TCNT0 anhalten oder "einfrieren"
Int-Variable ist aber genau das Problem: wo zählst Du die denn hoch? Ich mach das mit dem erwähnten 8-Bit Timer und einem Überlaufzähler. Genau wie Du setze ich bei steigender Flanke die Werte auf Null, und werte das bei fallender Flanke aus. Läuft während dieser Aktion der Timer über, stimmt das Ganze
probier mal in C, mache ja eigentlich mit FastAVR-Basic. Ich verwende einen Mega8 im MCUCR das Bit2(ISC10) setzen : Interrupt1 bei jedem Flankenwechsel SIGNAL (SIG_INTERRUPT1) // vector 2 { if (pind.3) //steigende flanke löste int1 aus { pulscounter=0; } else //fallende Flanke
-
Thread
anfänger bei assembler
rjmp xyz rjmp Beispiel cbi - lösche BitX im I/O PortX zu '0' sbi - setze BitX im I/O PortX zu '1' Beispiel: sbi PORTB,PB4 Übrigens: [avrasm] out PORTB3, r16 // <<---- müsste Error-Meldung bringen [/avrasm] sollte nicht
dass dieses 'Spezialregister' 'magisch' auf die Ausgabepins gespiegelt wird. Um einen Ausgang zu setzen/löschen genügt es, in diesem Register ganz einfach das betreffende Bit zu setzen. Und: Wenn ich will kann ich mir da auch 80 Ausgangsleitungen machen, OHNE dass sich am zugrundeliegenden Mechanismus
-
Thread
DS18s20 Probleme mit Timer 8051
mittels Oder die entsprechenden Bits setzen, damit die wieder nicht das gesetzte Bit aus der Interrupt Routine zurücksetzen. [c] ... P0 = 0x08;//debugging flag = 0; TR0 = 1; while(flag ==0) //Der Mikrocontroller springt
=1; erhöht. Wenn (wie beim AT89C5131) 4 Prioritäts-Ebenen möglich sind, kann man das niederwertige Bit aus IPL0 einzeln setzen (Register ist Bitadressierbar). Die Bits in IPH0, IPL1 und IPH1 muss man über Maskierung setzen. Meiner Meinung nach liegt das Hauptproblem im letzten geposteten Code an 2
-
Thread
Ampelschaltung funktioniert nicht
Also, du hast 3 LED Rot, Grün und Gelb. Nun nimmst du eine Variable und spendierst der diese 3 Bits. [avrasm] Ampel_LED: .Byte 1 ; Bit 0 = Rot ; Bit 1 = Gelb ; Bit 2 = Grün ; Bit 3-7 nicht benutzt [/avrasm] Nun überlegst du, wie viele Ampelphasen es gibt: 1=nur Grün 2=nur Gelb 3=nur
man nutzen, indem man dieses Muster in ein Variablenfeld packt. [avrasm] Phase1: .Byte 1 ; nur Bit 2 setzen, alle anderen auf 0 Phase2: .Byte 1 ; nur Bit 1 setzen, alle anderen auf 0 Phase3: .Byte 1 ; nur Bit 0 setzen, alle anderen auf 0 Phase4: .Byte 1 ; nur Bit 0 und 1 setzen, alle
-
Thread
STM32 - Low Level Library Dokumentation
heraus? Nein, eben nicht. Lowlevel-treiber sollten die Dinge abstrahieren, also nicht so: void SetzePin(int port, int bit, bool hi_lo); sondern so: void SchalteLampeEin(void); Ich denke, du merkst den Unterschied: Das SetzePin abstrahiert überhaupt nichts, sondern verallgemeinert bloß. Noch mehr verallgemeinert wäre das: void SetzeBit(int variable, int bit, bool hi_lo); Aber wer braucht so etwas denn? Zweck der Abstrahierung ist, daß man sich in den höheren Programmschichten eben NICHT mehr um die niederen Details zu kümmern
-
Thread
LCD-Modul SAMSUNG UG12D228AA von Pollin
demnächst mal bei Mouser bestellen ... da könnte ich ein paar von den Steckern mit auf die Bestellung setzen
dann so aus: [c]// Display Initialisieren S6B33B2_INIT(to_rgb565(255,255,255)); // X und Y setzen setXY(2,2); // Hintergrundfarbe setzen setBackColor(to_rgb565(255,255,255)); // Fordergrundfarbe setzen setFrontColor(to_rgb565(0,0,0)); // Einen Text Schreiben writeLn("LCD Init complete