-
Artikel
16/32Bit Computer/Konsole
, wird mit setzen von Bit 8 (A = ACK (schreiben)) das Datenwort in die unteren 8 Bit des Register übertragen (zwei Cycles delay). Um die Handhabung mit einer PS/2 Tastatur zu vereinfachen, sind unter components/ps2keyboards.s
muss (Bit 11-9). Also beim setzen des CLK-Pins (z.B.: $22 = Enable CLK, setze CLK = '1'). Wie schon erwähnt, ist das eigentliche I2C Protokoll in Software umgesetzt. Unter components/i2c.s sind die benötigten
-
Artikel
Bitmanipulation
Bits, die in der Maske auf „0“ gesetzt sind, bleiben unverändert. AVR-Assembler. Man beachte den Unterschied! Eine „5“ würde von sbr als „setze Bit 2 und 0“ gedeutet (=0b00000101), während sbi sie als „setze
nur 8-bit immediates; möchte man also eines der bits 8-31 setzen, muss man den entsprechenden 32bit-Literalwert per ldr aus dem Literal-Pool im Flash laden: Per .ltorg wird ein separater Flash-Bereich deklariert
-
Artikel
AVR-GCC-Tutorial/Der UART
) Diese Bits setzen die Anzahl der zu sendenden Stopbits eines Frames. Beim Setzen werden 2 Stopbits übertragen, andernfalls nur 1 Stopbit. USBS Anzahl der Stop Bits 0 1 1 2 UCSZ1:0 (Character Size) Diese Bits setzen in Verbindung mit UCSZ2 aus dem UCSRB Register die Anzahl der Datenbits eines Frames. Diese Bits setzen den entsprechenden Paritätsmodus. UCSZ2 UCSZ1 UCSZ0 Character Size 0 0 0 5-Bit 0 0 1 6-Bit 0 1 0 7-Bit 0 1 1 8-Bit 1 0 0 Reserved 1 0 1 Reserved 1 1 0 Reserved 1 1 1 9-Bit UCPOL (Clock Polarity
-
Artikel
AVR TWI
einen wiederholten Start durchführt. SLA +R --> Adresspaket mit einer Slave-Adresse und einem Lese-Bit SLA +W --> Adresspaket mit einer Slave-Adresse und einem Schreib-Bit Das höchstwertige Bit wird prinzipiell zuerst übertragen (MSB: Most Significant Bit). Die Slave-Adressen können durch den Anwender
Daten an mehrere Slaves senden möchte. Sinn ergibt die Verwendung nur in Verbindung mit dem Schreib-Bit. Ein Setzen des Lese-Bits hätte zur Folge, dass verschiedene Slaves ja verschiedene Daten auf den Bus stellen könnten, was zu einem Durcheinander führen würde. Wird das Schreib-Bit gesetzt, so setzen
-
Artikel
OneBitSound
hat zum Ziel darzulegen, wie man einen einfachen Synthesizer baut, welcher auf dem Prinzip der Ein-Bit-Schwingungen basiert. ---- Klangsynthese mit Sampletiefe von einem Bit. Um zu verstehen, was mit One Bit Sound (deutsch: Ein-Bit-Klang) gemeint ist muss man zuerst verstehen, was mit One Bit Sound nicht
Klanggenerierung. Damit die Sounderzeugung nicht bereits beim Einschalten des Systems losläuft, setzen wir den Anfangswert der Variable so, dass dieser die Millisekunden des Klangs übersteigt. Dazu definieren man den Zwischenspeicher für das resultierende Bit. Der Datentyp uint8_t wird verwendet, weil
-
Artikel
Diskussion:Bitmanipulation
der ioxxx.h Headerfiles und ist mit "0" (0x00) zu ersetzen. Das entspricht der Stelle an dem dieses Bit steht. bestimmte bits setzen und löschen. manchmal möchte man man in einem register bestimmte bits so setzten, wie sie in einem anderen sind. deshalb schlage ich vor folgendes macro in den artikel mit
richtet sich ja an Anfänger, das sollte man es doch etwas landläufiger erklären. Fehler in Abschnitt Bits setzen - Standard C. Dort steht folgendes: reg_32 |= (1 << MEINBIT15); /* FEHLER: Setzt die Bits 31 - 15, da ((int)1 << 15) == 0xFFFF8000 */ Das ist soweit ich das sehe nicht korrekt. Sowohl (int)1
-
Artikel
AVR-GCC-Tutorial
Schlafzustand versetzen zu können. Um den Schlafmodus nicht irrtümlich einzuschalten, wird empfohlen, das Bit erst unmittelbar vor Ausführung des SLEEP-Befehls zu setzen. SM (Sleep Mode) Dieses Bit bestimmt über den Schlafmodus. Ist das Bit gelöscht, so wird der Idle-Modus ausgeführt. Ist das Bit gesetzt, so
dieser Funktion geschieht in einer Timed Sequence. Hierbei ist unbedingt zu beachten, dass das BODS-Bit 3 Takte nach dem Setzen wieder gelöscht wird. Daher muss der Aufruf des Sleep unmittelbar nach dem Setzen erfolgen und das BODS-Bit muss jedes Mal vor einem Sleep Aufruf erneut gesetzt werden. Siehe
-
Artikel
USB-Tutorial mit STM32
gesetzten Bits zu erhalten. Das übergeben wir an setEPnR, um nur diese Bits auf 0 zu setzen und zwischenzeitlich auf 1 geänderte Bits zu zu belassen. Bei empfangenden Transfers auf dem Endpoint 0 müssen wir noch die
tatsächlicher und gewünschter Länge nutzen. Dann kopieren wir jeweils 2 Bytes des Deskriptors in ein 16bit-Wort des Pufferspeichers, und ein ggf. einzelnes übrig bleibendes Byte. Schlussendlich können wir das Absenden aktivieren, indem wir im EPnR-Register die STAT_TX-Bits auf "VALID" setzen. Das könnte
-
Artikel
AVR ASM Befehlsübersicht
SRAM, indiziert STD ry+k63,r1 2 Register = Port OUT p1,r1 1 Register = Stack PUSH r1 2 Addition 8 Bit, +1 INC r1 Z N V 1 8 Bit ADD r1,r2 Z C N V H 1 8 Bit+Carry ADC r1,r2 Z C N V H 1 16 Bit, Konstante ADIW rd,k63 Z C N V S 2 Subtraktion 8 Bit, -1 DEC r1 Z N V 1 8 Bit SUB r1,r2 Z C N V H 1 8 Bit, Konstante
Exklusiv-Oder EOR r1,r2 Z N V 1 Einer-Komplement COM r1 Z C N V 1 Zweier-Komplement NEG r1 Z C N V H 1 Bits ndern Register, Setzen SBR rh,k255 Z N V 1 Register, R cksetzen CBR rh,255 Z N V 1 Register, Kopieren nach T-Flag BST r1,b7 T 1 Register, Kopie von T-Flag BLD r1,b7 1 Port, Setzen SBI pl,b7 2 Port,
-
Artikel
ZPU: Softcore Implementierung auf Spartan-3 FPGA
die Wishbone-Adressen 32 Bit breit sind, wird das höchstwertigste Bit (Bit 31) genutzt, um den Lese- oder Schreibmodus zu setzen. Geschrieben wird wenn Bit 31 = 0 und gelesen für Bit 31 = 1. Adresse für SRAM-Adresse: 0x800C0000
bereits zwei Grundfunktionalitäten des Bildschirms beherrscht. Zum einen ist es möglich, über einen 3 Bit Wert die Farben des Bildschirms zu setzen (8 Farben). Durch setzen des nächst höheren Bits wird über eine Zustandsmaschine aus einem ROM der die Zeichen enthält ein statischer Text angezeigt. Beides
-
Artikel
AT32UC3C - Einstieg in die Programmierung
des bezeichneten Bits eine 1 enthält. Setzt man sie mit dem Register gleich, setzt man an der entsprechenden Stelle das Bit. Im Beispiel ist AVR32_USART_CR_TXEN_MASK gleichbedeutend mit 0x00000040. Beschreiben von Registern
jedoch der Default-Einstellung und muss nicht zwingend durchgeführt werden. 9. Setzen des PBA-Clocks auf den halben Main-Clock (33MHz): Der PBA-Clock wird hier auf die Hälfte des Main-Clocks gesetzt. Der Main-Clock kann nur durch Zweierpotenzen geteilt werden. Hier wird durch setzen
-
Artikel
JDY-24M BLE Bluetooth Mesh I/O
MADDR wie gewünscht eingestellt werden. Bitte nicht vergessen spätestens im Wirkbetrieb auch PIN zu setzen und mit TYPE zu aktivieren, damit nicht mit einem beliebigen Smartphone in das Netz eingedrungen werden kann. Es folgen weiter AT Befehle die für den MESH Betrieb benötigt werden. Nach dem Setzen der
High (01) oder Low (00) AA B2 E7 [Ausgang] [Pegel] - sehe kein Unterschied zu AA B1 E7 AB B1 E7 FF [Bits] - das Kommando setzt die Ausgänge Bit zugeordnet. Bit 0 -> Ausgang 1, Bit 4 -> Ausgang 5 AB B2 E7 FF [Bits] - sehe kein Unterschied zu AB B1 E7 FF A1 B1 E7 [Ausgang] [beliebig] - das Kommando toggelt
-
Artikel
STM32F10x Standard Peripherals Library
STM32F10x verfügt zur Manipulation der IO-Pins über ein sehr raffiniertes Feature, das es erlaubt Bits für die IO-Pins zu setzen / löschen ohne vorher deren aktuellen Zustand auslesen zu müssen (üblicherweise Read-Modify-Write). Dadurch ist gewährleistet, dass beim Setzen/Löschen von Bits kein Interrupt
stm32f10x_gpio.h sind darüber hinaus Definitionen für alle Pins vorhanden: Will man also von Hand auf die Bits dieser Register zugreifen, so ist das denkbar einfach: setzt das Bit für Pin 13 im Port C. oder löscht dieses Bit wieder. Mit kann man die Pins 4..7 auf einen beliebigen Wert setzen, ohne die übrigen
-
Artikel
ARM Bitbanding
Hintergrund = Eine RISC Architektur wie die der ARM Prozessoren besitzt oft keine Befehle, um einzelne Bits im Speicher zu manipulieren. Um ein einzelnes Bit in einem Peripherieregister zu setzen ist daher eine Folge mehrerer Befehle erforderlich, wie beispielsweise oder in C formuliert Wenn eine solche Befehlssequenz
weiterhin um eine Abfolge von drei getrennten Operationen: Wert aus dem RAM/Peripherieregister laden, Bit setzen, Wert wieder speichern. Nur wird diese Sequenz vom Core im Store-Befehl ausgeführt. Die Bitbanding-Operation ist also nicht exakt äquivalent zu speziellen Peripherieregistern mit Setzen/Löschen
-
Artikel
AVR-Tutorial: Power Management
verfügbaren Sleep-Modi des ATmega32 zu betreten, müssen folgende Schritte ausgeführt werden: das SE-Bit im MCUCR-Register wird auf 1 gesetzt, die SMx-Bits im MCUCR-Register je nach gewünschtem Modus setzen, der sleep -Befehl wird ausgeführt. Der Mikrocontroller geht dann sofort in den Sleep-Modus, d.
to Digital Converter: Der ADC ist standardmäßig aktiviert. Um ihn zu deaktivieren, muss man ADEN (Bit 7) im Register ADCSRA auf Null setzen. Analog Comparator: Der Analogkomparator ist standardmäßig aktiviert. Um ihn zu deaktivieren, muss man ACD (Bit 7) im Register ACSR setzen. Brown-Out Detector:
-
Artikel
AVR-Tutorial: LCD
wir dem LCD noch mitteilen, ob wir Daten oder Befehle senden wollen. Das machen wir, indem wir das Bit, an dem RS angeschlossen ist (PD4), auf 0 (Befehl senden) oder auf 1 (Daten senden) setzen. Um ein Bit in einem normalen Register zu setzen, gibt es den Befehl sbr (Set Bits in Register). Dieser Befehl
immer wieder 100 von der Schleife ab, bis bei der Subtraktion ein Unterlauf, angezeigt durch das Setzen des Carry-Bits bei der Subtraktion, entsteht. Die Anzahl wird im Register temp1 mitgezählt. Da dieses Register mit dem ASCII-Code von '0' initialisiert wurde, und dieser ASCII-Code bei jedem Schleifendurchlauf
-
Artikel
NIC
beenden. Dieses sollte die LETZTE aufgerufene MCURSES-Funktion eines NIC-Programms sein. Syntax: ---- BIT. bit.set. bit.set() setzt ein Bit. Syntax: Beispiel: Alternativ kann man auch den Operator '|' nutzen, um ein Bit zu setzen: bit.reset. bit.reset() setzt ein Bit zurück. Syntax: Beispiel: Alternativ kann man auch den Operator '&' zusammen mit '~' nutzen, um ein Bit zu zurückzusetzen: bit.toggle. bit.toggle() wechselt den Zustand eines Bits. Syntax: Beispiel: bit.isset. bit.isset() gibt den Zustand eines Bits zurück Syntax: Rückgabewert: TRUE, wenn das Bit gesetzt
-
Artikel
CAN Bibiliothek für AT90CAN Prozessoren
dem das Senden eines MOb ausgelöst wurde (= Wert des oberen Bytes von CANTIMH), cs_rcvOK = eine 16-Bit Liste mit Bits zur Markierung von MObs, für welche die Anwendung den Empfang einer neuen Nachricht behandeln muss (0 wenn keine), cs_xmtOK = eine 16-Bit Liste mit Bits zur Markierung von MObs, für welche
Abtasten zum Finden des ersten verfügbaren MObs beginnt bei dem niedrigsten MOb wenn der Wert des Bits in der Position MG_PRIORITY 0 ist, sonst bei dem MOb mit dem höchsten Index (Index 14). Setzen der IDT Register Der binäre Wert in p_header.mob_ID wird in die entsprechenden Werte für die IDT Register
-
Artikel
AVR-Tutorial: Logik
0 0 1 1 1 Das Ergebnis ist genau dann 1, wenn A und B gleich 1 sind. Verwendung. Gezielt einzelne Bits auf 0 setzen, ohne die anderen Bits eines Bytes zu beeinflussen. Dadurch auch die Verwendung um einzelne Bits auszumaskieren. AVR-Befehle. Die beiden Operanden werden mittels UND miteinander verknüpft
1 Das Ergebnis ist genau dann 1, wenn A oder B oder beide 1 sind. Verwendung. Gezielt einzelne Bits auf 1 setzen, ohne die anderen Bits eines Bytes zu beeinflussen. AVR-Befehle. Die beiden Operanden werden miteinander ODER-verknüpft, wobei die jeweils gleichwertigen Bits der Operanden laut Wahrheitstabelle
-
Artikel
AVR PWM
Folgenden hier und im Datenblatt mit Platzhalter n). T/C 0 ist beim tiny2313 der 'einfache' mit 8 Bit Auflösung (das Aus-An Verhältnis läßt sich in 256 Stufen einstellen), T/C 1 dagegen hat eine Auflösung von 16 Bit und bietet einige weitere Möglichkeiten. 8 oder 16 Bit ?. Außer der Tatsache, daß die
genau dies, da sie in der Mitte des High- bzw. Lowpegels liegen. Praktisches Vorgehen. Pins low setzen Pins als Ausgang konfigurieren. Geeignete Wellenform ermitteln Registerinformationen für ausgewählten T/C im Datenblatt aufschlagen Modus & Prescaler setzen und damit starten Bits in Control-Register
-
Artikel
NRF24L01 Tutorial
empfangene auszulesen. Innerhalb der Register belegen die Informationen eine unterschiedliche Anzahl an Bits. Als Beispiel das STATUS Register. Bit 1 bis 3 geben hier zum Beispiel Auskunft über die verwendete Pipe. Während alle anderen Informationen nur 1 Bit groß sind in dem Register. Es muß also immer entsprechend
Informationen enthält auf die wir reagieren müssen. So werden alle drei Interrupts in dem Register durch setzen eines entsprechenden Bits abgebildet. Dieses Bit muß durch schreiben einer 1 auch wieder gelöscht werden. Es läßt sich außerdem die Pipe auslesen die die Daten gesendet hat sowie, auch ganz wichtig
-
Artikel
Benutzer:Nummer5
wir diese Zeilen nun etwas verallgemeinern erhalten wir einen Algorithmus mit dem man von einem B Bit breiten Zähler Eins subtrahieren kann: Jetzt müssen wir noch eine Möglichkeit finden den Zähler in Abhängigkeit von changed zurück zu setzen (auf den Wert MAX). Aufgeschrieben beudeutet das, dass wir
ausschreiben: Nun folgt constant propagation indem wir alle konstanten Werte einsetzen. Zusätzlich setzen wir die temporären Variablen ein: Nutzt man die Beziehungen erhält man und Da wir nur zwei Zählbits haben können wir für das toggle Signal auch einfach prüfen ob beide Bits 1 sind und brauchen die
-
Artikel
Verilog
Entsprechend kann auch ein reg-Vektor spezifiziert werden. wire [15:0] data; ... data[0] = 1; // Setze nur Bit 0 data[15:13] = 3'b110; // Setze Bits 15, 14 = 1, Bit 13 = 0, Wert ist binär data[13:11] = 3'd2; // Setze Bits 13-11, Wert ist dezimal data[10:1] = 9'h0a; // Setze Bits 10-1, Wert ist hexadezimal
erreicht: wire [7:0] data; wire [3:0] nibble; ... data = {4'b0000, nibble}; Dem wire data wird ein 8 Bit breites Wort zugewiesen, bei dem die oberen 4 Bit auf Null gesetzt sind und die unteren 4 Bit den Signalzustand von nibble erhalten. Die Wiederholung wird auch mit geschweiften Klammern beschrieben
-
Artikel
ELV UP2000 Protokoll
frei Bit 5: 0 - Baustein nicht leer 1 - Baustein ist leer Bit 6: 0 Bit 7: 1 DB3: Adresse (24-bit) LOW-Byte DB4: Adresse (24-bit) MID-Byte DB5: Adresse (24-bit) HIGH-Byte NACK. Das ist die allgemeine Negative
. PC UP2000 SetupDevice ----------------------------> <------------------------- SendStatus Flag setzen. Protokoll für das Setzen von Flags oder Security Bits. PC UP2000 SetupDevice ----------------------------> <------------------------- SendStatus Spannungsabgleich. Es folgt ein Beispiel für einen
-
Artikel
MINOS
Syntax: file.tell. Ermittlung der Position in einer Datei. Syntax: Siehe auch: file.seek() file.seek. Setzen der Position in einer Datei. Syntax: Mögliche Werte für whence: SEEK_SET - Setzen der absoluten Position SEEK_CUR - Setzen der relativen Position - ausgehend von der aktuellen Position SEEK_END - Setzen
Taster wird automatisch vom NIC-Laufzeitsystem per Software entprellt. Syntax: int button.init (PORT, BIT, MODE) Als PORT kann GPIOA, GPIOB, GPIOC usw. gewählt werden. BIT ist das jeweilige Bit am I/O-Port, beim STM32 also ein Wert von 0 bis 15. Bei Verwendung des Tastereingangs können folgende Alternativen
-
Artikel
Ports benutzen (GCC)
printer 2 16 initialize printer# 1 14 automatic line feed 0 1 strobe data: Pin 9, I/O, Bit 7 = data bit 7 Pin 8, I/O, Bit 6 = data bit 6 Pin 7, I/O, Bit 5 = data bit 5 Pin 6, I/O, Bit 4 = data bit 4 Pin 5, I/O, Bit 3 = data bit 3 Pin 4, I/O, Bit 2 = data bit 2 Pin 3, I/O, Bit 1 = data bit
PPWDATA , &r ); // schreibt das "data" Register "read modify write" umgehen. Wenn man nur ein paar Bits setzen/löschen möchte, könnte man erst den Registerinhalt lesen, die Bits ändern, und den Inhalt wieder schreiben. Das geht aber besser, weil der Kernel dafür selbst eine Funktion anbietet: /* struct
-
Artikel
IRSND
Speicherplatzgründen deaktivieren, sind die entsprechenden Werte in irsndconfig.h anzupassen. Mit Setzen auf 0 wird das Protokoll deaktiviert, mit Setzen auf 1 wird es aktiviert. Die deaktivierten Protokolle werden dann nicht mitübersetzt. Das spart Speicherplatz im Flash, siehe Angaben in obigen Kommentaren
, f=0x00 Zweiter Tastendruck ^ Toggle-Bit Bitte beachten: Je nach benutztem Protokoll sind die Bit-Breiten der Adressen bzw. Kommandos verschieden, siehe Tabelle Die IR-Protokolle im Detail. Man kann also nicht mit jedem IR-Protokoll komplett
-
Artikel
MenuDesigner
Controllertyp gebunden Grafischer Editor für Linux und Windows Benötigt 5KB Flash (bei einem ATMega8 und 16Bit Adressen) Auch als PC Programm testbar Sehr geringer statischer RAM Verbrauch (allerdings durchaus etwas mehr Stack) Der Sourcecode steht unter der GPL, der auf der Mikrocontroller benötigte Code steht
auf einem beliebigem wahlfrei lesbarem Speicher Die Menüstruktur darf bis zu 16MB groß werden (24/32 Bit Adressen) oder 64KB bei 16 Bit Adressen Die Navigation innerhalb des Menüs ist auf eine Bedienung mit wenigen Tasten optimiert. Alternativ kann auch eine Maus oder ein Touchscreen verwendet werden (
-
Artikel
Diskussion:Erweiterte LCD-Ansteuerung
//// // Pinbelegung für das LCD, an verwendete Pins anpassen define LCD_PORTS // LCD DB4-DB7 PORTD Bit PD4-PD7 define LCD_PORT PORTD define LCD_DDR DDRD define LCD_DB PD4 // LCD RS PORTD Bit PD2 (RS: 0=Data, 1=Command) define LCD_RS PD2 // LCD EN PORTD Bit PD3 (EN: 1-Impuls für Daten) define LCD_EN PD3
DCF-Modul define DCF_PORTS define DCF_PORT PORTC define DCF_DDR DDRC define DCF_PIN PINC // DCF PON PORTC Bit PC1 (PON: 1=Aus, 1->0=Start) define DCF_PON PC1 // DCF DATA PORTC Bit PC0 (DATA: 0->1->0 Impulse mit Daten) define DCF_DATA PC0 ... Auf diese Weise sind alle Pinbelegungen des Projektes an einer zentralen
-
Artikel
AVR Fuses
, ob nun die dargestellten Häkchen invertiert sind oder nicht. Dann ändert man nur die relevanten Bits und schreibt diese in den Controller. Bei Atmel AVR µCs heisst eine Fuse setzen (programmieren) übrigens, dieses Bit auf Null zu setzen, das wird manchmal gerne falsch verstanden (siehe auch Erklärung
eine 1 aus dem Datenblatt durch ein nicht gesetztes Häkchen symbolisiert. Vor dem Neusetzen der Fuse-Bits unbedingt vorher die momentane Einstellung vom Chip auslesen lassen! Bei einem nagelneuen Prozessor sind die Fuse Bits so gesetzt, dass er mit dem internen Taktgenerator auf 1Mhz arbeitet. Das Muster
-
Artikel
AVR-Tutorial: PWM
das Datenblatt verwiesen. Fast PWM. Die Fast PWM gibt es beim ATmega8 mit mehreren unterschiedlichen Bit-Zahlen. Bei den Bit-Zahlen geht es immer darum, wie weit der Timer zählt, bevor ein Rücksetzen des Timers auf 0 erfolgt: Modus 5: 8-Bit Fast PWM – Der Timer zählt bis 255 Modus 6: 9-Bit Fast PWM – Der
den Timer-Endstand mittels ICR1 festzulegen, genügt es, den Timer einfach nur in den 8-, 9- oder 10-Bit-Modus zu konfigurieren und damit eine PWM mit 256 (8 Bit), 512 (9 Bit) oder 1024 (10 Bit) Stufen zu erzeugen. PWM in Software. Die Realisierung einer PWM mit einem Timer, wobei der Timer die ganze Arbeit
-
Artikel
Entwicklungsboard mit AT91SAM7Sxxx - selbstgemacht
vorzeichenlos (unsigned) und vorzeichenbehaftet. Alle Peripherieeinheiten des Controllers werden durch das Setzen von Werten in bestimmten Registern konfiguriert. Ein Register ist nichts anderes als eine bestimmte Adresse im Adressbereich des Controllers. Bei einem 32Bit Controller ist jedes dieser Register 32Bit
Übertragungsmöglichkeiten: Daten können entweder „Little Endian“, d.h. das LSB (Least significant Bit, also niederwertigstes Bit) wird zuerst übertragen, oder aber „Big Endian“, wo das MSB (Most significant Bit) zuerst geschickt wird, gesendet werden. Je nach Gerät werden die Daten bei steigender oder
-
Artikel
Speicherdirektzugriff (DMA) mit dem ATxmega
sondern es ist möglich die Blockgröße mit dem Repeat Count auf das maximal 255-fache seiner Größe zu setzen. Eine besondere Bedeutung hat ein Repeat Count von 0. Er führt dazu, dass eine Transaction nie beendet wird, weil ein Block sozusagen unendlich oft abgearbeitet wird. Single Shot Mode: Der Single Shot
Transaction-Complete-Flag. Obwohl man denken sollte, dass eine Transaktion beendet ist, sobald das entsprechende Bit in DMA.INTFLAGS gesetzt ist, ist dies unter bestimmten Bedingungen nicht der Fall. Angenommen man hat eine Transaktion auf Kanal 0 gestartet und wartet in einer while-Schleife auf das Bit, welches die
-
Artikel
HD44780
einen externen vorsehen, falls man mit Open-Drain-Ausgängen arbeitet.) 7 DB0 Datenleitung (bleibt im 4-Bit-Modus offen) 8 DB1 Datenleitung (bleibt im 4-Bit-Modus offen) 9 DB2 Datenleitung (bleibt im 4-Bit-Modus offen) 10 DB3 Datenleitung (bleibt im 4-Bit-Modus offen) 11 DB4 Datenleitung 12 DB5 Datenleitung
S/C Cursor bewegen Displayinhalt schieben R/L Nach links schieben Nach rechts schieben DL 4-Bit-Interface 8-Bit-Interface N 1-zeiliges Display 2/4-zeiliges Display F 5×7-Font 5×10-Font BF Kann Kommandos annehmen Ist beschäftigt Ansteuerung per Mikrocontroller. Die Ansteuerung eines HD44780-basierten
-
Artikel
AVR-Tutorial: Servo
Man nimmt, was vom Zählbereich des Timers übrig bleibt. Beispiel: F_CPU = 16 MHz Vorteiler = 8 16 Bit Registerbreite → Overflow nach 2 16 Zyklen CTC-Modus aus, steigende Flanke durch Overflow-Interrupt erzeugen Overflow-Interrupt: 16 MHz / 2 16 / 8 = 30,52 Hz, 32,8 ms, Ausgangspin auf 1 setzen Servostellung
pro Timer, wobei das CTC-Bit nur bei einem Match mit dem Output-Compare-Register A wirkt. Damit können für die Pulserzeugung zwei getrennte Interrupt-Handler angelegt werden, und ein Umbelegen von OCR und CTC-Bit entfällt. Bei
-
Artikel
AVR-GCC-Tutorial/Analoge Ein- und Ausgabe
werden, um die kontinuierliche Messung zu aktivieren. Wenn das Bit nach dem Setzen des ADEN-Bits zum ersten Mal gesetzt wird, führt der Controller zuerst eine zusätzliche Wandlung und erst dann die eigentliche Wandlung aus. Diese zusätzliche Wandlung wird zu Initialisierungszwecken
bei der Umschalterei ersparen will. Nutzung des ADC. Um den ADC zu aktivieren, müssen wir das ADEN-Bit im ADCSRA-Register setzen. Im gleichen Schritt legen wir auch die Betriebsart fest. Im Folgenden ein kleines Beispiel für den "single conversion"-Mode bei einem ATmega169 und Nutzung der internen Referenzspannung
-
Artikel
AVR-GCC-Tutorial/Die Timer und Zähler des AVR
TCCR0B sind nach dem Reset 0 und sollen auch 0 bleiben. Wenn man sicher nur bestimmte Bits ändern will, ist das ODER (bzw. UND mit dem Kehrwert) sicherer. Näheres dazu im Artikel Bitmanipulation. 16-Bit Timer/Counter. Viele AVR-Modelle besitzen außer den 8-Bit Timern auch 16-Bit Timer. Die
aktiviert. Timer/Counter 1 arbeitet als normaler Timer bzw. Zähler. 0 1 8-Bit PWM Betriebsart aktivieren. 1 0 9-Bit PWM Betriebsart aktivieren. 1 1 10-Bit PWM Betriebsart aktivieren. TCCR1B Timer/Counter Control Register B Timer 1 Bit 7 6 5 4 3 2 1 0 Name ICNC1 ICES1 - WGM13
-
Artikel
DCF77 Wetterinformationen
Protokoll ist hinreichend bekannt. Es gibt 14 Datenbits, in 3 Minuten wird ein Datensatz übertragen (= 42 bit) 90 Regionen, 4 mal täglich Informationen, jeweils 3 Minuten: ergibt 1080 Sendeminuten pro Tag (1440 Minuten). Rest 360 (5040 bit). 4 mal täglich werden Infos zu einer Zone gesendet: * 22:00 - 03:59
Uhrzeit+Datum wird als Schlüssel(teil) verwendet. Es wird Fehlerkorrektur angewandt, die Korrektur von 1-bit-Fehlern ist möglich Die 1 und 0 in den Daten sind nicht gleichverteilt: In den ersten 14 Bits scheinen größere regelmäßigkeiten vorhanden zu sein. Grund unbekannt. Möglich ist eine Schwäche im Algorithmus
-
Artikel
Pollin Funk-AVR-Evaluationsboard
Taster offen, liegt eine eine logische 0 (LOW Pegel) an. Das ist andersrum als im AVR Tutorial. 2-Bit Zähler. Jeder Tastendruck auf TASTER1 soll eine Variable um Eins hochzählen. Der Inhalt der unteren beiden Bits der Zählvariable soll mit den beiden LEDs angezeigt werden. Das Hochzählen darf nur erfolgen
Hardwareentprellung über einen Tiefpassfilter mit C17 330 nF zwischen Taster und GND erfüllt hier ihren Zweck. 8-Bit Zähler mit RS232-Anschluss. Das Beispiel 2-Bit Zähler soll jetzt ausgebaut werden. Im Detail soll der 8-Bit Zählerstand über RS232 auf einen PC ausgegeben werden. Ausserdem soll "ferngesteuert" eine
-
Artikel
AVR-Tutorial: ADC
Abschluss einer Messung automatisch die nächste Messung. Die erste Messung wird ganz normal über das Setzen des ADSC-Bits gestartet. ADIF – ADC Interrupt Flag: Wenn eine Messung abgeschlossen ist, wird das ADIF-Bit gesetzt. Ist zusätzlich noch das ADIE-Bit gesetzt, so wird ein Interrupt ausgelöst und der
+---+---+---+---+ +---+---+---+---+---+---+---+---+ 9 8 7 6 5 4 3 2 1 0 Ist keine 10-Bit-Genauigkeit gefragt, kann diese Zuordnung aber auch geändert werden: Durch Setzen des ADLAR-Bits im ADMUX-Register wird die Ausgabe geändert zu: ADCH ADCL +---+---+---+---+---+---+---+---+ +---+---+
-
Artikel
AVR-Studio Bugs
Correct, 9-bit kein Fehler 3 PWM, Phase Correct, 10-bit kein Fehler 4 CTC kein Fehler 5 Fast PWM, 8-bit arbeitet wie Mode 1 6 Fast PWM, 9-bit arbeitet wie Mode 2 7 Fast PWM, 10-bit arbeitet wie Mode 3 8 PWM, Phase
Änderung angezeigt. AVR-Studio 4.10 (Build 356). ATMega8. Simulator (AD Wandler). Beim manuellen Setzen des ADIF Bits in ADCSR, wird nicht die dazugehörige Interrupt Routine angesprungen. <--- Kein Bug, eher Programmierfehler: Interrupt-Flags lassen sich nicht per Software setzen, sie lassen sich nur
-
Artikel
Interrupt
Hilfsmittel zur Fehlersuche kann man auch am Ende der ISR prüfen, ob das jeweilige Interrupt-Request-Bit schon wieder gesetzt ist. Wenn ja, dann ist die ISR in den meisten Fällen zu lang. Auch hier kann man einen Ausgang auf HIGH setzen und somit den Fehler anzeigen. In hartnäckigen Fällen lässt der Check
verwendeten Port sein (einige Ports bzw. I/O Register können mit den atomaren Befehlen sbi, cbi zum Setzen und Löschen einzelner Bits erreicht werden, andere nicht). Ein ähnliches Problem entsteht bei Variablen, deren Größe die Wortbreite der Maschine übersteigt, unter Umständen auch Bitfeld-Zugriffe. Bei
-
Artikel
Porterweiterungen
0 1 M S x x Display-Einstellungen Es kann festgelegt werden, ob die Kommunikation mit dem LCD im 4 Bit oder 8 Bit Modus erfolgen soll. B = 0: 4-Bit-Bus B = 1: 8-Bit-Bus N = 0: 1 Zeile N = 1: 2 Zeilen F = 0: 5 × 7 Punkte F = 1: 5 × 10 Punkte RS D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 B N F x x Adresse im Zeichensatztabelle setzen Mit diesem Befehl, kann ein eigenes Zeichen in die Zeichensatztabelle des LCD-Controllers eingetragen werden. RS D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 A5 A4 A3 A2 A1 A0 Adresse im Datenspeicher setzen Es wird
-
Artikel
AVR - Die genaue Sekunde / RTC
compare match" (CTC) Modus eines Timers an. Die obigen Zahlen lassen sich jedoch nicht in einer 16 Bit Variablen ausdrücken da sie zu gross sind und somit ist ein direktes Setzen des Compare-Wertes des Timers T1 im AVR nicht möglich. Deshalb unterteilt man die Quarzfrequenz in zwei Faktoren; der erste
. Dann kann die ISR eine 32-bit-Konstante auf einen 32-bit-Akkumulator addieren; bei Überlauf ist eine Sekunde vergangen. Zugegeben, es gibt "lange" und "kurze" Sekunden, aber der Fehler summiert sich nicht, und der Code ist sehr
-
Artikel
Pony-Prog Tutorial
programmierten Controller günstig, typisch via MAX232 u.ä. ungünstig, archaisch Funktioniert unter 64-Bit-Versionen von Windows ja ja ※ ‡ Entweder mit jenem USB2LPT oder einem USB-Drucker-Konverter und einer speziellen Version der InpOut32.dll. Nur USB2LPT: Der Einsatz von USB Low-Speed dehnt alle Zeiten
ist in PonyProg leider nicht eingebaut. Fuses. Mit Ponyprog kann man auch die Fuses bei den AVRs setzen, muss dabei aber sehr aufpassen: Die Fuses sind im AVR invertiert, d.h. 0 = ein und 1 = aus. Das steht auch so im Datenblatt. Ponyprog invertiert das wieder (steht auch da, allerdings in dunkelgrau
-
Artikel
High-Speed capture mit ATmega Timer
Der Verschiebungsfaktor zwischen den beiden Messbereichen kann über die Konstante RANGE_EXTENSION_BITS (Standardwert: 4 Bits) geändert werden. Es gilt: Verschiebungsfaktor = 2^(RANGE_EXTENSION_BITS + 1) Um die Zahlen schneller verarbeiten zu können und weniger Schiebebefehle bei der Ablage zu benötigen
auch. Informationen über AVR Timer AVR-Tutorial: Timer AVR-GCC-Tutorial/Die Timer und Zähler des AVR Bits schieben, setzen, rücksetzen Bitmanipulation Modulo-Arithmetik (für Berechnung der Zeitdifferenzen) Restklassenring Zweierkomplement: Interpretation im Restklassenring Kongruenz Zahlentheorie Modular
-
Artikel
AVR-Tutorial: Speicher
Register) geladen. Da der ATmega8 mehr als 256 Byte EEPROM hat, passt die Adresse nicht in ein einziges 8-Bit-Register, sondern muss in zwei Register aufgeteilt werden: EEARH bekommt das obere Byte der Adresse, EEARL das untere Byte. Dann löst man den Lesevorgang durch das Setzen des Bits EERE (EEPROM Read
von 4 Taktzyklen das EEWE Bit setzen um den Schreibvorgang auszulösen. Um das unter allen Bedingungen sicherzustellen werden die Interrupts kurz gesperrt. Danach startet der Schreibvorgang und läuft automatisch ab. Wenn er beendet
-
Artikel
AVR Bootloader in C - eine einfache Anleitung
Adresse 0x1801 + X zu springen und dann zur ISR. Das Verbiegen der Sprungtabelle passiert mit dem Setzen des IVSEL-Bits im MCUCR (ACHTUNG: beim Atmega8 GICR), also beim Atmega88: temp = MCUCR; MCUCR = temp | (1 bzw. beim Atmega8: temp = GICR; GICR = temp | (1 Das IVCE-Bit wird nur benötigt, um dem Mikrocontroller zu sagen, dass wir als nächstes den Parameter IVSEL setzen wollen, das Bit wird nachher vom Controller wieder gelöscht. Um versehentliches verstellen der Interrupttabelle zu vermeiden muss das setzen von IVCE und IVSEL innerhalb von 4 Taktzyklen erfolgen.
-
Artikel
AVRDUDE
AVRDUDE. Ab v7.0: Bis v7.0: Die folgenden Dateien werden für die Intallation gebraucht: Windows MSVC 64 bit: avrdude- -windows-x64.zip Windows MSYS2 mingw 64 bit: avrdude- -mingw-x64.zip Linux: Es gibt fertige deb- bzw. rpm-Pakete unter oder in der Paketverwaltung der jeweiligen Distribution. Die Quellen
Anschlusseinstellungen⇒„Interrupt-nie-verwenden“ in „Jeden dem Anschluss zugewiesenem Interrupt verwenden“. 64-Bit-Problem. Unter 64-Bit-Windows-Versionen kann das Parallelport zunächst nicht benutzt werden, da der mitgelieferte 32-bit-GiveIO-Treiber nicht funktioniert. Es gibt seit 2015 eine 64-Bit-giveio.sys.
-
Artikel
AVR LCD KS0073/DIP204 mit Hardware-SPI
Enwurfsphase, Artikel ist noch in Bearbeitung! Allgemeines. Der KS0073 LCD-Controller ist im parallelen 8-Bit bzw. 4-Bit Mode ähnlich dem klassischen und weit verbreiteten Typ HD44780. Zusätzlich verfügt er über einige nützliche Funktionen und einen erweiterten Zeichensatz. Außerdem kann er in einer seriellen
verdrahten und hätte somit die Möglichkeit, dass LC-Display durch einen kurzen Low-Impuls zurück zu setzen. Die Betriebsspannung beträgt im Beispiel 5V. 3.3V sind auch möglich. Software. Im Beispielprogramm wird ein ATmega und ein LCD EA DIP 204-4 verwendet. Es wird zur Übertragung zum LCD (Write) immer