-
Artikel
USB-Tutorial mit STM32
Puffer Nr. 0. Im EP0R-Register finden wir dann weitere Informationen dazu, was passiert ist: Das CTR_RX-Bit gibt an, ob ein empfangender Transfer abgeschlossen wurde, und CTR_TX ist für sendende Transfers. Nach dem Abfragen dieser beiden Bits müssen wir sie auf 0 setzen, aber so dass zwischen Abfragen und
Device Descriptor an indem wir ihn zunächst als simples char-Array definieren: Dabei werden die 16bit-Zahlen in einzelne Bytes aufgeteilt, und das Byte mit den weniger signifikanten Stellen zuerst abgelegt (Little Endian). Die Lösung mit dem #define W() funktioniert auch in C ohne ++, ist flexibel,
-
Artikel
Interrupt
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 8-Bit-Prozessoren
ähnlich wie Hardwareregister) mit dem Schlüsselwort volatile (flüchtig) versehen werden, damit der C-Compiler berücksichtigen kann, dass diese Variablen jederzeit (durch das Auftreten des Interrupts) gelesen oder geschrieben werden können. Ansonsten würde der C-Compiler das regelmäßige Abfragen oder
-
Artikel
AVR-Tutorial: IO-Grundlagen
Widerstände mehr notwendig und die Beschaltung vereinfacht sich zu einem Taster, der einfach nur den µC-Pin mit GND verbindet. Zugriff auf einzelne Bits. Man muss nicht immer ein ganzes Register auf einmal einlesen oder mit einem neuen Wert laden. Es gibt auch Befehle, mit denen man einzelne Bits abfragen und ändern kann: Der Befehl sbic (skip if bit cleared) überspringt den darauffolgenden Befehl, wenn das angegebene Bit gleich 0 (low) ist. sbis (skip if bit set) bewirkt das gleiche, wenn das Bit gleich 1 (high) ist. Mit cbi (clear bit) wird das
-
Artikel
Entprellung
gedrückt und ist immer noch gedrückt war gedrückt und ist nicht mehr gedrückt (fallende Flanke) Diese einzelnen Zustände lassen sich jetzt bequem abfragen/durchlaufen. Die Entprellung geschieht dabei durch die ganze Laufzeit des Programms. Die Taster werden hierbei als active-low angeschlossen, um die internen
als dem zuletzt bekannten entprellten Tastenzustand. An dieser Stelle ist i daher ein Vektor von 8 Bits, von denen jedes einzelne der Bits darüber Auskunft gibt, ob die entsprechende Taste mehrmals hintereinander im selben Zustand angetroffen wurde, der nicht mit dem zuletzt bekannten Tastenzustand übereinstimmt
-
Artikel
ZPU: Softcore Implementierung auf Spartan-3 FPGA
Entwicklungsumgebung: Xilinx ISE WebPack 10.1 CPU: ZPU von Øyvind Harboe (opencores.org) stackbasiert 32 Bit breit 8 Bit Opcode klein, einfach, übersichtlich per GCC-Toolchain (ZPUGCC) in C / C++ programmierbar integrierter Programmspeicher (BlockRAM) Bus: Wishbone-Bus 32 Bit Peripherie: Interrupt-Controller
auf dem Board. Eine Abfrage der Adressen der Schalter und Taster liest den Zustand der Schalter (8 Bit) bzw. Taster (4 Bit) ein. Ein Senden eines 8 Bit Wertes an die LED-Adresse schaltet die LEDs. Ein Senden eines 32 Bit Wertes
-
Artikel
AVR-Tutorial: Schieberegister
8 auf GND geschaltet werden. Die Programmierung gestaltet sich dann nach folgendem Schema: Die 8 Bits eines Bytes werden nacheinander an den Ausgang PB3 (SER) ausgegeben. Durch Generierung eines Pulses 0–1–0 an Pin PB5 (SCK) übernimmt das Schieberegister nacheinander die einzelnen Bits. Dabei ist zu
weiter erhöht. Dies deshalb, da ja die einzelnen Bits im Gänsemarsch durch alle Bausteine geschleust werden müssen und für jeden einzelnen Schiebevorgang etwas Zeit notwendig ist. Ein Ausweg ist die Verwendung des SPI-Moduls, welches schneller
-
Artikel
NanoVM
Kosten eines höheren Speicherbedarfs. Aufgrund des geringen Speichers beim ATmega8 ist dort die 16 Bit Variante zu bevorzugen. Implementierungsdetails. Üblicherweise würde man den Befehlsdekoder, der die einzelnen Opcodes analysiert, in einem grossen C-Switch-Statement implementieren. Die NanoVM verwendet
auf SELECTIVE gesetzt, dann liefert diese Methode einen Bitvektor zurück, der den Zustand jedes einzelnen Tasters anzeigt. Die SELECTIVE -Funktionalität wird durch eine Analog-Digital-Wandlung erreicht, die etwas zeitaufwändiger ist, als die Abfrage mit ANY. Ausserdem ist die Erkennung einzelner Taster
-
Artikel
AVR-GCC-Tutorial
anderen Compilern bzw. älteren Versionen des gcc genutzt werden soll. Verändern von Registerinhalten. Einzelne Bits setzt und löscht man "Standard-C-konform" mittels logischer (Bit-) Operationen. Es wird jeweils nur der Zustand des angegebenen Bits geändert, der vorherige Zustand der anderen Bits bleibt erhalten
Befehlszeilen: Mit den C-Bitoperationen kann man den Status der Bits abfragen. Siehe auch Bitmanipulation#Bits_prüfen Interne Pull-Up Widerstände. Portpins für Ein- und Ausgänge (GPIO) eines AVR verfügen über zuschaltbare interne
-
Artikel
Der Multiplex Sensor Bus (MSB)
Bit im gesamten 16 Bit Wort) hat eine spezielle Funktion. Es ist das Alarm-Flag. Der eigentlich Wert ist also um ein Bit nach links verschoben. Durch ein gesetztes Alarm-Flag, teilt der Sensor mit, dass
lediglich auf GND ziehen oder loslassen. Dies erledigen zwei defines. Ein weiteres define übernimmt das Abfragen des Pegels. MB_Bitlen enthält die Zeitdauer für ein Bit in µS. UART. Da der Tiny85 keinen HW-UART besitzt muss er in Software nachgebildet werden. Das Senden eines oder mehrerer Bytes auf den Bus
-
Artikel
Bitmanipulation
den C-Regeln, die 1 als Integer-Typ ansieht. Beim AVR-GCC bedeutet das 16-Bit/signed und die folgende Operation bringt ggf. nicht das gewünschte Ergebnis (Stichwort: „Integer Promotion“). Angenommen, Bit 15
, um direkt einzelne Bits in den CPU-Registern r0…r31 sowie den IO-Registern 0…0x1F zu prüfen. ARMv6-M (Cortex-M0). Zum Prüfen von einzelnen Bits wird auf ARM-Prozessoren im Wesentlichen die lsls -Instruktion in Kombination
-
Artikel
NRF24L01 Tutorial
dankenswerter Weise zur allgemeinen Verwendung zur Verfügung gestellt hat. siehe Tinkerer.eu spi.h spi.c Der SPI Befehlssatz. Command name Command word (binary) # Data bytes Operation R_REGISTER 000A AAAA 1 to 5 LSByte first Read command and STATUS registers. AAAAA = 5 bit Register Map Address W_REGISTER
. Das ist die ziemlich kurze main-Routine zum Abfragen der Daten die im Empfänger angekommen sind. Geübten Augen wird sofort auffallen, daß die Abfrage über Polling in diesem Beispiel den µC solange in einer while-Schleife fest hält bis neue Daten angekommen
-
Artikel
Festplatte
man adressieren will etc). Den Command Code ins Command Register schreiben Das Status-Register abfragen Wenn BSY = 1, gehe zu 7 Das Daten-Register lesen (16 Bit!) Das Status-Register lesen Wenn DRQ = 1 ist, dann gehe zu 9 fertig! Im Detail: Sector Count Register Adressieren Anzahl Sektoren an DD0..7
DIOW = 0 DIOW = 1 Status-Register Adressieren DIOR = 0 Wert von DD0..7 zwischenspeichern DIOR = 1 BSY-Bit abfragen, und wenn gesetzt gehe zu 15 Daten-Register adressieren DIOR = 0 Wert von DD0..15 lesen DIOR = 1 Status-Register adressieren DIOR = 0 Wert von DD0..7 zwischenspeichern DIOR = 1 DRQ-Bit abfragen
-
Artikel
Modellbauservo Ansteuerung
Servomittelstellung bei etwa 1.4ms erreicht wird. Viele programmierbare Fernsteuerungen haben daher für einzelne Servos getrennte Einstellungen und unterscheiden zwischen Standard-Servos und MPX-Servos. Signalerzeugung für 1 Servo (C). Für einen ersten Servotest reicht es aus, ein Servo mit seinem Signaleingang
z.B. anderer Quarz) entsprechend angepasst werden. Signalerzeugung für mehrere Servos mittels Timer (C). Das Prinzip der Servoansteuerung mehrerer Servos besteht darin, dass die Pulse für die einzelnen Servos nacheinander generiert werden. Dazu wird mit einem Timer im CTC Modus jeweils eine Zeitdauer
-
Artikel
AVR-GCC-Codeoptimierung
möglicherweise etwas langsamer werden. Logische Operatoren werden auf int-Größe erweitert. Obwohl der AVR ein 8-Bit Controller ist, verlangt der C-Standard, daß ein int mindestens 16 Bits groß ist. Wegen den Promotion-Regeln von C werden 8-Bit Operanden in Operationen auf 16 Bits aufgeweitet. Beispiel: Den zweiten
Your C Code for 8-bit AVR Microcontrollers (Beispiel-Code)
-
Artikel
Umstieg von Arduino auf AVR
einige kleine, aber hilfreiche Schritte aufgezeigt. Diese Anleitung ist nur für die Arduinos mit einem 8bit-AVR als Prozessor (Uno, Mega, Leonardo, ...) gedacht und nicht für 32bit-Mikrocontroller (Due, ...). Der Mikrocontroller wird in dieser Anleitung in C programmiert. Grund dafür ist die Verteilung von
empfehlen, ein C-Buch oder wenigstens ein (gutes) C-Tutorial durchzuarbeiten. Im Artikel C stehen einige Links zu Tutorials und Einführungen zur Sprache C. Es dürfte einfacher sein, sich die C-Kenntnisse auf einem PC
-
Artikel
Hausbus auf I2C- und ATtiny-Basis: Home2L Brownies
Notification ist optional, sodass bei entsprechender elektrischer Beschaltung die Brownies vollkommen I2C-konform kommunizieren können. Experimente beim Autor des Home2L-Projektes haben gezeigt, dass eine Kommunikation über 100 Meter KNX-Kabel mit ca. 30 kBit/s praktisch übertragungsfehlerfrei funktioniert
Wartungs-Tool. Für den Linux-Host gibt es ein Wartungs-Tool (home2l-brownie2l). Dieses kann mit den einzelnen Brownies über eine beliebige I2C-Schnittstelle kommunizieren, die von Linux unterstützt wird (Kernel-Modul i2c-dev). Alternativ ist es auch möglich das "ELV USB-I2C"-Interface direkt zu verwenden
-
Artikel
AVR-Tutorial: LCD
Der 4-Bit-Modus verwendet nur die oberen vier Datenleitungen (DB4–DB7). Um ein Byte zu übertragen, braucht man somit zwei Zugriffe, wobei zuerst das höherwertige Nibble (= 4 Bits), also Bit 4 bis Bit 7, übertragen
verständlich sein. Binär ausgeben. Um die Sache komplett zu machen; hier eine Routine, mit der man eine 8-Bit-Zahl binär auf das LC-Display ausgeben kann: Eine 16-Bit-Zahl aus einem Registerpärchen ausgeben. Um eine 16-Bit-Zahl auszugeben wird wieder das bewährte Schema benutzt, die einzelnen Stellen durch
-
Artikel
FIFO
Vergleich nicht mehr (wegen dem 'Überlauf' am Ende des Arrays, der den Ringschluss bewirkt) und die Abfrage einer zusätzlichen Bedingung ist zur Voll-Abfrage erforderlich. Bei gleichzeitigem Zugriff zwischen dem Befüller (zb. einer UART-ISR) und dem Entnahmecode (zb. der Code in der Hauptschleife) muss
wird der Gegenstelle signalisiert, dass sie mit dem Senden fortfahren kann. Code-Beispiel. FIFO mit C-Präprozessor. Hinweis: viele C-Compiler übersetzen automatisch eine Modulo-Division mit einem Divisor einer 2-er Potenz in Form einer entsprechenden Bitmaskierung. Zum einen erspart man sich dadurch
-
Artikel
Pollin Funk-AVR-Evaluationsboard
Neigung zum Prellen. Die auf dem Board vorhandene 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
neuen Anzeige erfolgt einmalig zu Beginn des Hauptprogramms (Bsp: led7segment_init). PFA_7segment.c - Die eigentliche Ansteuerung PFA_7segment.h - Die Prototypen für PFA_7segment.c Mit einem Logikanalysator kann das Multiplexen auf den einzelnen Leitungen gemessen werden (wie praktisch, dass am zweckentfremdeten
-
Artikel
ELV UP2000 Protokoll
=1 style="text-align:center" Message 0x4C DB1 DB2 .. DB7 DB1: Startadresse (24-bit) HIGH-Byte DB2: Startadresse (24-bit) MID-Byte DB3: Startadresse (24-bit) LOW-Byte DB4: Leertestalgorithmus, siehe Algorithmen DB5: Länge (24-bit) HIGH-Byte DB6
auf einen GetPinStatus. {| border=1 style="text-align:center" Message ACK AckSubType Data 0x06 0x6C DB1 DB2 DB3 DB4 DB5 Zuordnung der Pins zu den DatenBytes: Bit 7: Bit 6: Bit 5: Bit 4: Bit 3: Bit 2: Bit 1: Bit 0: DB1: PIN_12 PIN_11 PIN_10 PIN_09 PIN_08 PIN_07 PIN_06 PIN_05 DB2: PIN_20 PIN_19 PIN_18
-
Artikel
AVR-GCC-Tutorial/LCD-Ansteuerung
Der 4-bit-Modus verwendet nur die oberen vier Datenleitungen (DB4-DB7). Um ein Byte zu übertragen braucht man somit zwei Zugriffe, wobei zuerst das höherwertige "Nibble" (= 4 Bits), also Bit 4 bis Bit 7 übertragen wird und dann das niederwertige, also Bit 0 bis Bit 3. Die unteren Datenleitungen des LCDs, die beim Lesezyklus Ausgänge sind, lässt man offen (siehe Datasheets, z. B. vom KS0070). Der 4-bit-Modus hat den Vorteil, dass man 4 IO-Pins weniger
-
Artikel
CtLab FPGA SigLab
den SPI-Slave kann ein Master (z.B. ein Mikrocontroller wie der ATmega644 auf der FPGA-Karte aus dem c´t-Lab) Konfigurationswerte ans CtLab FPGA SigLab übergeben und Messwerte auslesen. Der SPI-Slave besitzt mehrere Datenregister mit 32 Bit Breite, die über ein separates Adressregister ausgewählt werden
Kanal des c´t-Lab-Busses, über welche die FPGA-Karte angeschlossen ist, eingestellt werden. Zusätzlich zu diesen intervallgesteuerten Abfragen werden die Messwerte aber auch unmittelbar ausgelesen, wenn Einstellungen
-
Artikel
Speicher
enable) und /CS (chip select) angeschlossen. Der Datenbus für einen Speicher der Organisation 32k x 8 Bit hat eine Breite von 8 Bit, der Adressbus ist dann 15 Bit breit. Um den Speicher zu aktivieren, muß /CS auf LOW (Masse) gelegt werden. Das kann verwendet werden, um mehrere Speicher- oder andere Bausteine
60 Bit (8 Byte) großen EEPROM-Abschnitt löschen. Oder sekundenweise in 3600 Bits (450 Byte). Dann wird jedes Bit nur noch stündlich mit einem Schreib- und Löschzugriff belastet. Die restliche Uhrzeit wird
-
Artikel
Entwicklungsboard mit PIC
werden. I2C Interface Board. I2C Modul Wenn MSSP im I2C Modus ist, wird die I2C Interface Platine benötigt. Entsprechende MCU Pins RC3 und RC4 sollen dann mit I2C-Input beschaltet werden. Über I2C Protokoll können
mit 8 LED , Serial-to-Parallel Wandler mit 4x4 Tastatur und ein Temperatursensor. Zugang zu den einzelnen Bauelementen erfolgt über verschiedene Adressen der Peripherie. Damit werden die Kollisionen vermieden. HW-Adressen der I2C Peripherie Comm-Modul. RS-232& USB Modul Peripherie- Com-Modul ermöglicht
-
Artikel
8051 Timer 0/1
/12 (Maschinentakte) und externem Eingang. Dies geschieht mit dem Bit C/T im TMOD-Register. C/T auf 0 bedeutet Timer-Betrieb (bekannte Frequenz wird gezählt -> Zeit), C/T auf 1 bedeutet Counter-Betrieb (externe Ereignisse werden gezählt -> z.B. Abfüllen von Werkstücken
'Harte' Schreibzugriffe konfigurieren beide Timer gleichzeitig. + TMOD-Register Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 G C/T M1 M0 G C/T M1 M0 + Timer Betriebsarten M1 M0 Betriebsart 0 0 Mode 0: 13-Bit Timer/Counter ( ) 0 1 Mode 1: 16-Bit Timer/Counter 1 0 Mode 2: 8-Bit Timer/Counter
-
Artikel
AVR-GCC-Tutorial/Analoge Ein- und Ausgabe
SREG gesetzt). Das Bit 4 ACI wird wieder gelöscht, wenn die Interruptroutine ausgeführt wurde oder wenn es manuell auf 1! gesetzt wird. Das Bit kann für Abfragen genutzt werden, steuert oder konfiguriert aber nicht den Comparator
berücksichtigen. Eine Empfehlung ist deswegen diese, dass der frei laufende Betrieb nur bei einem einzelnen zu verwendenden Analogeingang verwendet werden sollte, wenn man sich Probleme bei der Umschalterei ersparen will. Nutzung des ADC. Um den ADC zu aktivieren, müssen wir das ADEN-Bit im ADCSRA-Register
-
Artikel
Eigenbau ADC am Raspberry Pi
erkennt wurde Im verwendeten Aufbau wird der Messzeitpunkt durch die Wartezeit zwischen setzen eines einzelnen eines bits des DAC und if-Abfrage des Vergleichsergebnisses eingestellt. bitspezifische Wartezeit für Verstreichen der settling time kapazitätsarmer Aufbau Genauigkeit. Tabelle von 256 Referenzwerten statt nur 8 referenzwerte für die bits
-
Artikel
RFM12
Phasenrauschen für 1 MHz Offset. (bw1 = 1 in der RFM12B-Dokumentation) x0 = -107dBc/Hz für max. 86,2 kBit/s x1 = -102dBc/Hz für max. 256 kBit/s Unterspannungs-Detektor und Taktausgangsteiler (LowBatt / µC Clock Control C0xx). {|class="wikitable" rowspan=4|d rowspan=4|divider rowspan=4|Bestimmt den Teilungsfaktor
den letzten Pegel fest Bei entsprechender Füllstands-Einstellung kann man hiermit auch mehr (bspw. 9 Bit) oder weniger (bspw. 7 Bit oder auch jedes Bit einzeln) abholen. Da das Senderegister auf 8 Bit festgelegt ist, hat das meistens keinen Sinn. Die Taktfrequenz darf für das FIFO-Auslesen maximal 2,5
-
Artikel
Word Clock Variante 1 - Software
uart.c, uart.h USER Verantwortlich für die Interaktion mit dem Benutzer, z.B. dem Anlernen der IR Befehle user.c, user.h, usermodes.c WCEEPROM Funktionen, die das persistente Ablegen und Abfragen von Informationen im bzw. aus dem EEPROM ermöglichen wceeprom.c, wceeprom.h Im Folgenden soll nun die genaue Funktionsweise der einzelnen Module näher erläutert werden: DCF77. Zur Programmierung siehe den Artikel DCF77-Funkwecker mit AVR. Im Abschnitt Programmierung
-
Artikel
FAQ
double-Operationen durchgeführt werden. Wohl kann es aber sein, dass double und float dieselbe Anzahl an Bits benutzen. Damit reduziert sich eine double Operation effektiv auf eine float Operation. (Anmerkung: mit dem C99-Standard hat sich dieses geändert. Dort gibt es dann auch echte float Operationen) Hat
Programmes geschieht in mehrerern Schritten: Compilieren: zunächst werden alle Einzelteile (jede *.c Datei) für sich compiliert. Dabei ensteht aus jeder c-Datei eine sogenannte Object-Datei, in der bereits der Maschinencode für die im c-File programmierten Funktionen enthalten ist Linken: die einzelnen
-
Artikel
FPGA
kompatibel zu etablierten Prozessorarchitekturen (MIPS, SPARC, AVR), zum Teil aber auch auf die FPGAs einzelner Hersteller hin optimiert. Als Programmspeicher werden die FPGA-internen RAM-Blöcke oder externe Speicher (SDRAM, SRAM) genutzt. Für einige Prozessorkerne stehen Hochsprachen wie C, C++ etc. zur Verfügung
Blockrams als FIFO mit "breitem" Busanschluss: Linksseitig besitzt das FIFO eine Breite von z. B. 256 Bit (Xilinx-Rams lassen sich ohne weitere Umbeschaltung über den Wizzard mit bis zu 1024 Bits deklarieren und nutzen). Rechtsseitig einen 16- oder 32 Bit breiten Busanschluss für einen Prozessor bzw Parallelinterface
-
Artikel
UPlay Basic Interpreter per XMC2Go
um den einfachen Aufbau nicht zu verlieren. Der Interpreter besteht nur aus 4 Files : Dem "uBasic.c.+h" File und dem "Tokenizer.c+h" File. Im "Tokenizer" sind alle Basic-Sprachbefehle hinterlegt. Dieser liefert beim Aufruf der Funktion "get_next_token" zurück, um welchen Befehl oder welches Zeichen
SETPX 5,6 30 GETCOLL a 40 PRINT a GPIO-Befehle Bedeutung Beispiel IN einlesen eines Input-Kanals (c=Channel [0...4], Wert=[0,1]) 10 IN a=c 20 PRINT a OUT setzen eines Output-Kanals (c=Channel [0...1], Wert=[0,1,2]) 10 OUT c,1 ADC-Befehle Bedeutung Beispiel ADC einlesen eines ADC-Kanals (c=Channel [
-
Artikel
Hantek Protokoll
Hantek ein paar Fragen zu den 0x43 Meldungen beantworten. 0x00 FPGA Register lesen. Ermöglicht einzelnes oder mehrere FPGA Register zu lesen Die Abfrage für einzelnes Register 0x43 0x04 0x00 0x00 0x00 0x00 bis 0xFF (Register Nummer) Prüfsumme Die Antwort dazu beinhaltet 4 Byte Register Daten 0x43 0x06
clicks) Prüfsumme LSB MSB Die Antwort ist leer. D.h. sie enthält kein Datenbyte. 0x43 0x02 0x00 0xC3 Prüfsumme 0x08 0x44 DSO Buzzer. Aktiviert den Buzzer für die Zeit "BT" (1bit=100ms) 0x43 0x03 0x00 0x44 0x01 BT Prüfsumme Sobald die Zeit abgelaufen ist schaltet sich der Buzzer selbständig aus. Die
-
Artikel
USB IO Expander
zufriedenstellend möglich. Aus diesem Grund habe ich mich bewusst auf den niederfrequenten Bereich (einzelne Funktionen bis 100kHz) beschränkt, da alles andere nur Kompromisse gewesen wären. Ein wesentlicher Punkt war jedoch ein vollständige galvanische Trennung vom PC. Dies vereinfacht die Arbeit mit dem
nach dem FIFO-Prinzip arbeitet (First-In-First-Out). Es werden zwei Varianten verwendet, eine die 8 Bit Daten speichert und eine für 16 Bit breite Daten. Pattern Modul. Dient der Generierung von Mustern am Ausgang, sowie dem Timer-gesteuerten Einlesen der Eingänge. Die Funktionalität ist als Zustandsautomat
-
Artikel
16/32Bit Computer/Konsole
zwei Ports welche die jeweiligen Pins (SDA/SCK) der Komponenten bedienen können. Das eigentliche I2C-Protokoll ist in Software umgesetzt, d.h. mit den I2C_PORT_A/B Registern können nur Pins gesetzt bzw. ihr Zustand gelesen werden. Zum Daten lesen (SDA) wird Bit 3 (D) von Register I2C_PORT_A/B benutzt
schon erwähnt, ist das eigentliche I2C Protokoll in Software umgesetzt. Unter components/i2c.s sind die benötigten Funktionen implementiert. Timer im Detail. UCtrl besitzt zwei integrierte 32 Bit große Timer/Counter. Konfiguriert werden kann
-
Artikel
Installation von Debian 12 (Bookworm) auf Soekris-Rechner per RS232
= Einleitung = Der Rechner Soekris net6501 ist im Kern ein 32-Bit-System mit 4 schnellen Ethernet-Schnittstellen (1Gbit/s), zwei SATA- und zwei mSATA-Schnittstellen. Er wurde vielerorts als pfsense- oder OPNSense-Firewall betrieben. Mit seinen zwei SATA-Schnittstellen
niemanden stört's. Achtung: Das im August 2025 erschienene "Trixie" (Version 13) unterstützt keine 32-Bit-Architekturen mehr. Ein Ugrade auf Trixie ist somit nicht drin. Den Soekris net6501 gab es in mehreren Varianten. Ich verwende hier das dickste Modell mit der Endung "-70". Mit allen anderen Modellen
-
Artikel
AVR In System Programmer
oben; der Stecker hat am Pin 3 eine Rastnase zum verpolungssicheren Einstecken). Wie üblich gilt N.C. = Not Connected, d.h. nicht verbunden: DATA 1 2 VCC N.C. 3 4 N.C. N.C. 5 6 GND Programmer-Varianten. Mittlerweile existiert eine fast unüberschaubare Zahl von Programmer-Varianten und Untervarianten
UART, TWI, SPI verwendet werden (hab ich noch nicht probiert). ich aber: Beim Schreiben der Fuse Bits musste ich das Tool myAVR_ProgTool.exe verwenden Mit avrdude ist das Schreiben der Fuse-Bits mit dem AVR910-Modus möglich. avrdude-Kommandozeile : avrdude -c avr910 -P PORT -p PART -U lfuse:w:0xFF:m
-
Artikel
STECCY
werden. Dabei gilt folgendes Schema: + Ports für I2C Z80 Port 7-Bit I2C Adresse 0bbb bbbb 01111 1111 0bbb bbbb Konkrete Beispiele: Port Hex Port Dez Port Bin Typ A2 A1 A0 7-Bit I2C Adresse Bemerkungen + Ports für I2C 20 7F 8139 0010 0000 0111 1111 PCF8574
. Beispiel für PCF8574A mit Jumper A2=1 A1=1 A0=1: I2C Adresse ist dann: 0x3F (Basis-Adresse 0x38 + 0x07 = 0x3F). Z80-Port ist dann: 0x3F7F, also 16255. Aktivieren der oberen 4 Bits für Ausgabe: BASIC-Befehl: OUT 16255,BIN 00001111 oder OUT 16255,15 Assembler