-
Artikel
String-Verarbeitung in C
bzw. auf einführende Literatur zum Thema 'Programmieren in C' verwiesen. Wie schreibt man eine Funktion, die einen String liefert?. Will man eine Funktion schreiben, die einen String liefert, so hat man ein Problem. So gehts nicht: Strings sind ja nichts anderes
Und das geschieht in C, indem man einen Zeiger auf das erste Zeichen nimmt. Das ist string. Falsch (und zwar richtig falsch!) ist diese Lösung aber aus folgendem Grund: string ist eine automatische Variable (alle lokalen Variablen
-
Artikel
C-Control
. C-Control I. Hochsprachen. Programmiert wird die C-Control I mit dem speziellen Basic-Dialekt BASIC++ oder dem Vorgänger CCBasic. Die Speicherverwaltung und Umsetzung der Hochsprachenkommandos (z.B. Strings
PUSH AD", "POP DA"). Alternativ kann man auch auf die Programmiersprache mBasic (DEAD LINK!) oder die C-ähnliche Sprache C3C zurückgreifen. Main() ' Dies ist ein Kommentar FUNCTION Main() DEFINE i AS BYTE DEFINE MeinString AS STRING * 10 LCD.INIT LCD.CLEAR FOR i = 1 TO 10 MeinString = "Wert von i = " &
-
Artikel
Templates (C++)
man Werte hat, die sinnvoll mit dem Operator > verglichen werden können. Ruft man das Makro mit Strings auf (max( "Emil", "Otto" )), dann wird natürlich nicht nach der alphabetischen Reihenfolge der Strings entschieden, sondern es werden vom Template die Adressen der Anfangsbuchstaben mit > verglichen
man nun für die meisten Datentypen den Vergleich mit > haben, allerdings für die nullterminierten C-Strings lieber strcmp() verwenden, um einen lexikalischen Vergleich zu haben, schreibt man sich eine Spezialisierung: Man kann bei Bedarf mehrere Spezialisierungen angeben. Analog kann man Templateklassen
-
Artikel
Plattformunabhängige Programmierung in C
Geräten (z.B. Display, serielle Schnittstelle) ausgegeben werden sollen, müssen sie zuerst in einen String umgewandelt werden. Bei Benutzereingaben benötigt man die Umkehrung, also die Umwandlung eines Strings in einen Integer. In C steht dafür die itoa/atoi - sowie die printf/scanf -Funktionsfamilie zur
in Integer oder Strings konvertieren. Auf Mikrocontrollern ohne FPU Fließkommaberechnungen zur Laufzeit grundsätzlich vermeiden. Alternative: Festkommaarithmetik. Bytereihenfolge: Nicht das C-Typsystem durch Type punning
-
Artikel
NIC
DMA auseinandersetzen zu müssen. NIC als strukturierte Programmiersprache ähnelt in manchen Teilen C, PHP, Pascal oder auch Basic. Datentypen müssen jedoch zum Beispiel im Gegensatz zu PHP stets angegeben werden. Trotzdem ist stets eine implizite Typumwandlung (zum Beispiel von Integer-Werten in Strings
sind, findet man im MINOS-Projekt, zum Beispiel: FILE GPIO UART BUTTON RTC WS2812 TFT TOUCH I2C usw. Interessant könnten auch die Beispielprojekte sein. ---- STRING. string.length. Die length-Funktion gibt die Länge eines Strings zurück. Syntax: Parameter: string: Die Eingabezeichenkette Rückgabewert
-
Artikel
NanoVM
Vorsicht walten. Ein Beispiel ist die Routine native_java_lang_stringbuffer_invoke() in native_stdio.c. In dieser Routine werden unter anderem zwei Strings zu einem neuen aneinandergehängt. Dazu besorgt sich die Routine zunächst die Adressen der beiden zu verbindenden Strings. Sie bestimmt deren Längen
'+' an einen String anzuhängen. public static native String append(char); Diese Methode erlaubt das Anhängen eines einzenen Zeichens an einen String. public static native String toString(String); Diese Methode wird intern
-
Artikel
FAQ
vermerkt wird und danach die Zahl positiv gemacht wird. Siehe auch: Forenbeitrag Integer-Zahl in String mit bestimmter Zeichenlänge Forenbeitrag (Resourcenschonend) Wert einer Variable am LCD ausgeben von Niels Hüsken Forenbeitrag Formatierte Zahlenausgabe in C von Peter Dannegger Festkommaarithmetik
String-Verarbeitung in C? = → Siehe: String-Verarbeitung in C = struct Strukturen = → Siehe: Strukturen in C = Funktionszeiger = → Siehe: Funktionszeiger in C = Header File - wie geht das = Ein Header File
-
Artikel
Festkommaarithmetik
Dabei gilt nahezu immer die Formel Den so errechneten Wert der Eingangsspannung kann man einfach per C-Funktion in einen String umwandeln und dann auf ein LCD oder den UART ausgeben. Soweit so gut. Das Problem ist "nur". Das Rechnen mit Gleitkommazahlen ist auf den meisten Mikrocontrollern mit recht viel
auf der linken Seite oder einen Cast benutzen. Doch wie wird nun diese Zahl in einen darstellbaren String umgewandelt? Im einfachsten Fall durch Verwendung der C-Funktion itoa (Integer to ASCII). Diese ist auf vielen Mikrocontrollern als C-Bibliothek verfügbar. Wenn dies jedoch nicht so sein sollte muss
-
Artikel
C-Präprozessor
ersetzen. Der Präprozessor macht dies überall, solange es sich an der zu ersetzenden Stelle um keinen String handelt. Mit obigem #define würde also in "Dies ist ABC" keine Textersetzung stattfinden. er den Ursprungstext als 'Wort' im Sinne eines C-Wortes handelt. Mit obigem #define würde also in cdABCef =
Makro-Definition keineswegs offensichtlich ist (max könnte auch eine echte Funktion sein). Die Tatsache, dass der C-Präprozessor die Syntax von C/C++ nicht wirklich berücksichtigt, ist allerdings auch nützlich. So lassen sich mit dem C-Präprozessor Datentypen parametrisieren, um systematische Programmteile zu vereinfachen
-
Artikel
AVR-GCC-Tutorial
, usw. Für weitere Funktionen und deren Prototypen siehe die Dokumentation der AVR-LibC. Strings. Strings sind in C nichts anderes als eine Abfolge von Zeichen und einem '\0' als Stringende. Der prinzipielle Weg ist daher identisch zum Lesen von Bytes, wobei auf die Besonderheiten von Strings
String-Literals zu initialisieren: Leider sieht der Embedded-C Draft nicht vor, String-Literale direkt in einem anderen Adress-Space als generic anzulegen, so dass hier der Umweg über FSTR genommen werden
-
Artikel
USB-Tutorial mit STM32
dann einen Befehl mit bmRequestType = 0xC0 und mit bRequest gleich der "Vendor"-Nummer, welche im String-Deskriptor definiert wurde. Im Beispiel ist sie "3". Auf diesen Request muss das Programm mit dem Compat Id Descriptor antworten. Im Beispielprogramm
libusb_device gefunden haben, müssen wir es öffnen und das erste Interface in Anspruch nehmen: Abfrage der String-Deskriptoren. Als nächstes wollen wir die String-Deskriptoren anzeigen. Dazu nutzen wir libusb_get_string_descriptor_ascii, um die Strings nach ASCII zu konvertieren, denn die plattformübergreifende
-
Artikel
Antrax GPS/GSM/GPRS Shield
für den interessierten Leser, der sie vielleicht erweitern möchte. Intern nutzt die Bibliothek die String Funktionen der C stdlib. Ähnlich wie die Funktion strtok der stdlib verändert auch die parse-Funktion das Argument durch das Einfügen von 0-Zeichen. Darum der Hinweis in der Header-Datei. Soll der
absichtlich so gewählt um Speicher zu sparen. Kopien werden nur bei Bedarf von der Anwendung angelegt. Die String-Klasse von Arduino verwende ich nicht, um einigermaßen plattformunabhängig zu bleiben. Weitere Hinweise zu Stringbearbeitung mit reinem C finden sich z.B. hier im Artikel String-Verarbeitung_in_C.
-
Artikel
AVR-GCC-Tutorial/Der UART
Text noch mit einem '\0' Zeichen abgeschlossen um einen Standard C-String daraus zu machen, mit dem dann weiter gearbeitet werden kann. Beim Aufruf ist darauf zu achten, dass das empfangende Array auch mit einer vernünftigen Größe definiert wird. Bei der Benutzung von
Pascal Stang (UART (interrupt driven), Byte Buffering (circular), VT100 Terminal Output) uart_driver.c Beispieltreiber in C mit minimalstem Code fuer ATMega8. Sendet und empfaengt Strings ueber Interrupts (von Markus Zimmermann) uartavr BSD-3-Clause Library von Christian Rapp für ATmega328. Interrupt
-
Artikel
MINOS
int i2c.lcd.move (int line, int column) int i2c.lcd.backlight (int on) int i2c.lcd.define_char (int n, byte buffer) int i2c.lcd.print (string str) int i2c.lcd.print (int character) int i2c.lcd.mvprint (int line, int column, string str) int i2c.lcd.mvprint (int line, int column, int character) int i2c.lcd.clrtoeol () LCD Beispiel. Beispiel: Versetzte Ausgabe von "Zeile N" in Zeile 1-4: Siehe auch: Kapitel I2C ---- I2C DS3231.
-
Artikel
UAC Mikrocontroller ASCII Console
einer mini-printf-variante (%i,%s,%c,%u,%f) Strings können auch aus dem Flash gelesen werden ohne RAM zu verbrauchen Variable Anpassung um einen Kompromiss zwischen Speicherplatz und Komfort zu finden Software. Allgemein. Vor der Benutzung
bekannte printf(). Allerdings stehen (in der Version 0.3) nur %i - int %u - unsigned int %s - char* %c - char % f - float bzw. double Beispiel Wichtig zu wissen ist, dass alle '\n' in der uac_printf() durch das define '_uAC_NewLineString' ersetzt werden. Man braucht sich also nicht darum kümmern, ob das
-
Artikel
Vektor-Font in C
zweidimensionalen Array setzt, könnte so aussehen: Übersetzt werden kann das ganze mit gcc -std=gnu99 main.c vektor-zeichen.c vektor-zeichen-data.c -DVEKFONT='(-1)' -O2 -o main.exe Konfigurierung. Die Konfiguration der Software geschieht i.W. beim Übersetzen über das Define VEKFONT. Die meisten Features können
Download. Dieses Archiv enthält alle Quellen, ein Makefile sowie die Beispielprogramme pc-vecfont.c (PC), pc-vecfont-svg.c (PC), avr-vecfont.c (AVR). Als Software wird benötigt: GNU make Eine gcc-Host-Toolchain Eine avr-gcc-Toolchain convert aus dem ImageMagick-Paket zum Umwandeln von PBM nach PNG.
-
Artikel
Einstieg in die ARM Entwicklung
, da bei Netbeans das Debugging noch nicht funktioniert. Sonst sind beide etwa identisch. Netbeans C/C++ Pack konfigurieren. Um die ARM Toolchain unter Netbeans nutzen zu können, muss diese dem C/C++-Pack bekannt gemacht werden. Dazu startet man Netbeans und wählt in der Menüleiste Tools, Options aus
den Vorsatz arm-elf- im Dateinamen haben. Deshalb muss man die einzelnen Tools selbst auswählen. Der C-Compiler ist "C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-gcc.exe". C++-Compiler ist "C:\Program Files\Devel\ARM\yagarto\bin\arm-elf-g++.exe". Make findet sich in "C:\Program Files\Devel\ARM\yagarto-tools
-
Artikel
Ports benutzen (PHP)
Einleitung. Da es schon einen netten Artikel über die Benutzung von Standard-Ports unter Linux in C/C++ gibt und ich die serielle Schnittstelle erst kürzlich unter PHP für mich entdeckt habe, war der Schritt einen Artikel, der an den für C/C++ gedachten angelehnt ist, bereits absehbar... Nun werden
dio_fcntl ( resource fd, int cmd [, mixed arg] ) Ändert den Dateideskriptor resource dio_open ( string filename, int flags [, int mode] ) Öffnet eine Datei mit den angegebenen Rechten string dio_read ( resource fd [, int n] ) Liest n Bytes und gibt sie zurück, ist n nicht angegeben wird ein 1K Block
-
Artikel
EZ-USB Firmware Kit - Tutorial
Bedarf die Firmware in dem EZ-USB-Mikrocontroller und den Bitstream in das FPGA hoch, sendet Benutzer-Strings zum Gerät und liest diese zurück. Das Hochladen der Firmware in den EEPROM wird ebenfalls unterstützt (z. B. mittels des zum Paket gehörenden Werkzeugs FWLoader). ucecho.c. Das ist der C-Quellcode
Beispielaufruf sieht wie folgt aus: stefan@ws2:/drv_a2/usb-fpga/ztex-1.1/examples/usb-fpga-2.13/2.13c/ucecho$ java -cp UCEcho.jar UCEcho FPGA configuration time: 44 ms Enter a string or `quit' to exit the program: Hello world! Send 12 bytes: `Hello world!' Read 12 bytes: `HELLO WORLD!' Enter a string
-
Artikel
MCURSES
(10, 10); // Cursor positionieren getnstr (buf, 80); // Einlesen eines String mit 79 Zeichen + '\0' mvaddstr (11, 10, buf); // Ausgabe des Strings eine Zeile darunter refresh. void refresh (void) : Aktualisieren des Bildschirminhaltes (Flush von evtl. noch auszugebenden Zeichen
Das einfachste Programm beginnt mit dem obligatorischen "Hello, World!": Nach dem Speichern als test.c lässt sich dieses unter Linux kompilieren mit cc -O test.c mcurses.c -o test Nach dem Start des Programms erscheint in der Zeile 12, Spalte 16 der bekannte Willkommensgruß. Der Aufruf der Funktionen
-
Artikel
AVR BASIC
Die Erweiterungen umfassen den Aufruf von C-Funktionen, den Zugriff auf C-Integer-Variablen (lesend wie schreibend), sowie den Zugriff auf C-Arrays (ebenfalls lesend und schreibend). Die Definition der Erweiterungen werden in der Konfigurationsdatei
Funktionen ersetzen. Dadurch ist es möglich z.b. bei Division durch 0 einzuschreiten. Erweiterung. Die C-Erweiterungen umfassen wie schon angesprochen das Aufrufen von C-Funktionen (mit Parametern), das lesen und schreiben von C-Variablen, sowie C-Arrays. Die aufzurufenden C-Funktionen haben alle ( ) dieselbe
-
Artikel
Interrupt
ä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
Texte eintippen. Mit RETURN wird die Eingabe abgeschlossen und der AVR vermittelt den empfangenen String an das Hauptprogramm. Diese sendet ihn einfach zurück, parallel dazu wird der String gemorst per LED angezeigt. Sollte es Probleme bei der Inbetriebnahme des UART geben, so findet man hier wichtige
-
Artikel
AVR-GCC-Tutorial/LCD-Ansteuerung
weitere Datei ist die Includedatei lcd-routines.h notwendig, die im Hauptprogramm und in lcd-routines.c eingebunden wird. Die Anpassung der Pinbelegung etc. macht man in dieser Datei. Datei lcd-routines.h. Datei lcd-routines.c:. LCD Beispiel 1. Ein Hauptprogramm, welches die LCD Funktionen benutzt, sieht
nteger To A scii ) wird von einem Zahlenwert eine textuelle Repräsentierung ermittelt (sprich: ein String erzeugt) und dieser String mit der bereits vorhandenen Funktion lcd_string ausgegeben. Das Einrichten des Projekts ist wie in Beispiel 1. Siehe auch. Erweiterte LCD-Ansteuerung Pseudo-Graphische LCD-Ansteuerung
-
Artikel
Testseite
Problem, ich wollte in der Linksammmlung eine URL aktualisieren und weiß noch nicht, wie??? a(a) "string"===typeof a){var b=[];a=a.length;for(var c=0;c<a;c++)b.push(c);return b}return _.yd(a)}}; _.Oja=function(a,b,c){if(a.forEach&&"function"==typeof a.forEach)a.forEach(b,c);else if(_.fa(a) "string"===
WIFI-MIDI. WIFI-MIDI WIFI-OTG. WIFI-OTG (Teil 1). WIFI-OTG WIFI-OTG (Teil 2). WIFI-OTG = Listen = a(a) "string"===typ yt artua6uq ),f=e.length,g=0;g<f;g++)b.call(c,e[g,d&&d[g],a)}; var Pja,Qja;_.yl=function(a){_.Ni.call( Listen. Liste: dies und das und jenes noch mehr jenes und noch viel mehr, danke und anderes
-
Artikel
Zeiger
übergeben, so empfielt es sich, die Grösse des Arrays ebenfalls an die Funktion zu übergeben (Ausnahme: Strings, siehe String-Verarbeitung_in_C): Anders kann die Grösse nicht an eine Funktion übergeben werden, folgende Prototypen sind identisch: Soll eine Struktur oder Union an eine Funktion übergeben werden
auf void ist in C++ im Allgemeinen nicht nötig, da die Sprache Templates und Überladen von Operatoren beherrscht. Mit diesen können alle Dinge erledigt werden, bei denen in C ein Zeiger auf void verwendet wird. Siehe
-
Artikel
Avr-gcc Bugs
36454 string.h: Error for long long in C90 1.8.1 35407 Missing multilib versions for tiny-stack targets 34695 stdint.h fixed-width int types without __attribute__((mode)) 33698 RJMP/RCALL can cause "relocation
on avr-gcc 8.3 combine 85495 lto-wrapper.exe: fatal error: file too short: No error 8.0 LTO 83801 String constant in __flash not put into .progmem 8.0 C 83729 ICE in convert_memory_address_addr_space_1 at explow.c:300 8.0 C 83738 Don't save registers in main / auto-add OS_task to main 8.0 81754 Building
-
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
Terminal mit Kommandointerpreter
Registern 1000 Hz internal clock Anzeige der Uhrzeit per Kommando, oder auf LCD-Display direkt oder per I2C Kommandointerpreter ist als stateengine implementiert stateengine und strings im flash funktioniert ab 16k flash mit allen Features, darunter nur abgespeckt (ohne symbolische Namen und Debugfeatures)
Evaluation V1 + V2 Pollin AVR Funk Microcontroller Starterkits ATMegaEvoBoard Microcontroller Starterkits uC-Dual-Board Eingesetzte Techniken: ISR-Routinen für UART ISR-Timerroutine für relativ genaue Uhrzeit TWI Basics, Support für DS1307 LCD direkt oder per I2C strings, structs in Flash abgelegt CAN im Aufbau
-
Artikel
GPS Logger Mini
Näheres dazu in der Anleitung. Benötigte Bauteile. Bauteil Beschreibung Wert Bauform Distributor Preis C1 Keramik-Kondensator 1µF 0805 Alle 0,07€ C2 Keramik-Kondensator 1µF 0805 Alle 0,07€ C3 Keramik-Kondensator 10nF 0805 Alle 0,05€ C4 Keramik-Kondensator 100nF 0805 Alle 0,05€ C5 Keramik-Kondensator 100nF 0805 Alle 0,05€ C6 Keramik-Kondensator 22pF 0805 Alle 0,05€ C7 Keramik-Kondensator 22pF 0805 Alle 0,05€ C8 Keramik-Kondensator 100nF 0805 Alle 0,05€ IC1 Low-Drop Spannungsregler 3.3V LP2985 SOT23-5L F 0,56€ IC2 Laderegler
-
Artikel
Speicherdirektzugriff (DMA) mit dem ATxmega
unendlich oft kopiert. Und diese Unendlich-Einstellung wird an dieser Stelle benötigt. Invertieren eines Strings. Man kann mit dem DMA Controller festlegen in welcher Richtung er sich im Speicher nach einem Burst bewegen soll. So ist es sehr einfach einen String im Hintergrund zu invertieren. Dazu ein Beispiel
- und C++-Datei zu finden, die das Konfigurieren des DMA Controllers vereinfachen sollen. Die Beschreibungen zu jeder einzelnen Methode finden sich in der Header-Datei. Anwendung. Ein paar kurze Hinweise zum
-
Artikel
LunaAVR
BASCOM, bietet sie wesentlich komplexere Möglichkeiten auf technischer Augenhöhe mit Pascal, Modula und C/C++. Einschränkungen, z.Bsp.bei Ausdrücken wie bei BASCOM, bei welchen nur zwei Argumente möglich sind, existieren bei Luna nicht. Bei Luna handelt es sich um ein freies Projekt von und für Entwickler
wie z.B. SPI, I2C oder UART und bietet zusätzlich viele Implementationen von Software-basierten Protokollen oder Schnittstellen. Entwicklungsumgebung. Das Luna-Entwicklungspaket besteht aus integrierter Entwicklungsumgebung
-
Artikel
MSP430 Codebeispiele
Funktionen selbst können natürlich auch anders genannt werden. Timer. IOs. ---- = Softwareroutinen: = I2C/TWI in Software. Diese Routinen wurden ursprünglich für einen MSP430F149 geschrieben. Es werden ausschließlich IOs benutzt. Da Code in C geschrieben wurde sollte er sich einfach auf alle MSP430s ohne
müssen wir noch die Interrupts im Initialisierungscode aktivieren: Senden eines Bytes. Senden eines Strings. Nullterminierte Strings; zugehörige Interrupts dürfen nicht aktiviert sein Binärdaten mittels DMA (hier: DMA-Kanal 0 an UART1) Beachte: Die Interruptfreigabe des UART priorisiert Interruptverarbeitung
-
Artikel
Unittests mit uCUnit
Programmiersprachen eine Reihe von Unit-Testframeworks, die Modultests unterstützen. Für die Programmiersprache C, die häufig bei Mikrocontrollern eingesetzt wird, gibt es mittlerweile auch eine Reihe von Frameworks: Check CUnit MinUnit EmbUnit uCUnit ... Im folgenden soll es über die Verwendung von uCUnit gehen
wenn ein Test fehlschlägt UCUNIT_Recover(): Holt das System aus dem sicheren Zustand UCUNIT_WriteString(msg): Kapselt die Funktion zur Ausgabe eines Strings an den Hostcomputer UCUNIT_WriteInt(n): Kapselt die Funktion zur Ausgabe eines Integerwertes an den Hostcomputer. Wird für die Zusammenfassung der
-
Artikel
AVR-Bootloader mit Verschlüsselung von Hagen Re
PC-Software zum Bootloader wird somit autom. der AVR in den Reset versetzt. Wer möchte kann ein Copyright String oä. in AVRootloader.asm einbauen. Dieser String wird dann in der PC-Software in der Device Information angezeigt. Das Timeout-Handling in der Baudratedetektion wurde geändert. 24.04.2008 19:06 Bugfix
angeschlossen ist. Neu ist die Möglichkeit das die PC-Software bei der Verbindung einen definierbaren String sendet. Die Anwendung im AVR, die selber die UART benutzt, kann diesen Befehl dann benutzen um in den Bootloader zu springen. Auswahlbox für das BootSign in PC-Software eingebaut. Bugfix: Fehler beim
-
Artikel
Versenden von SMS mittels Mobiltelefon
zu reduzieren. So können z.B. die Bibliotheken zur Ansteuerung des Temperatursensors entfallen (twi.c, twi.h, ds75lv.c und ds75lv.h). Alternativ dazu wäre auch die Verwendung der pinkompatiblen Controller ATmega168 bzw. ATmega328 denkbar. Diese haben 16KiB bzw. 32KiB Flash und sind unwesentlich teurer
bei der Übertragung eingespart werden. Die zu übertragende Nachricht „Hallo Welt“ wird damit durch „C8309BFD065DCB6C3A“ repräsentiert. Funktionsbeschreibung. Ich beschränke mich bei der Funktionsbeschreibung lediglich auf die wesentlichen Funktionen in sms.c. Die Funktionen der anderen Bibliotheken wie
-
Artikel
AVR-Tutorial: Speicher
Fallbeispiel: Zeichenketten. Eine häufige Anwendung von lpm ist das Auslesen von Zeichenketten ("Strings") aus dem Flash-ROM und die Ausgabe an den seriellen Port oder ein LCD. Das folgende Programm gibt in einer Endlosschleife den Text "AVR-Assembler ist ganz einfach", gefolgt von einem Zeilenumbruch
besonders möchte man eine Speicherfläche zur Verfügung haben, die ihren Inhalt auch dann behält, wenn dem µC die Versorgungsspannung abgedreht wird. Man denke z.B. an irgendwelche Konfigurationsdaten oder an Informationen, wie weit der µC in der Bearbeitung von Daten vorangekommen ist oder irgendwelche Statistikdaten
-
Artikel
Diskussion:AVR-Tutorial: LCD
hochlädt, wahrscheinlich ist es einfach zu spät ;-) --Yahp 01:31, 1. Aug 2007 (CEST) Bitte keinen C-Code im Assembler Tutorial. Auch wenn es sehr anständig ist, C-Funktionen zur LCD Ansteuerung zu schreiben, so sollte man doch bedenken, dass es sich hier um das Assmebler-Tutorial handelt. Hier hat C-Code nichts verloren! C-Code gehört in das gcc-Tutorium, dort ist er wesentlich besser aufgehoben. Kommentar dazu siehe Stefan 12:27, 29. Aug 2007 (CEST) Diskussionen neuerdings im Artikel?. Hier der
-
Artikel
AVR-Tutorial: UART
+12-Volt-Signale an der seriellen Schnittstelle des PCs zu den 5/0 Volt des AVRs kompatibel macht. C1 ist ein kleiner Elektrolyt-, Tantal- oder Keramikkondensator, wie er immer wieder zur Entkopplung der Versorgungsspannungen an digitalen ICs verwendet wird. Die vier Kondensatoren C2…C5 sind Elektrolyt
genutzt werden (Freeware). Senden von Zeichenketten. Eine bequemere Methode, um längere Zeichenketten (Strings) zu übertragen, ist hier zu sehen. Dabei werden die Zeichenketten im Flash gespeichert. Als Abschluss des Strings wird der Wert 0x00 genutzt, so wie auch in der Programmiersprache C. Empfangen von
-
Artikel
Und noch 'ne Nixie-Uhr
bietet (FTDI, CP210x, PL2303). Ich habe ein PL2303-Modul genommen. Real Time Clock. Das RTC-Modul, „I2C RTC DS1307 AT24C32 Real Time Clock Modul“, ist die eigentliche Uhr. Der Chip darauf ist der DS1307 von Dallas Semiconductor, er hat Uhrzeit, Datum und 56 Byte RAM. Als Zugabe ist auf dem Modul noch ein EEPROM AT24C32 mit 32K Byte. Der DS1307 wird mit einer Batterie gepuffert, womit die Uhr bei Spannungsausfall weiter läuft. Das Modul wird über die I2C-Schnittstelle angesprochen. Die für die I2C-Schnittstelle notwendigen
-
Artikel
STECCY
aufgelistet: + Anschluss Nunchuk Pin Nunchuk Farbe Original Farbe Clone Pin STM32 1 Grün Gelb PB9 (SDA) 2 n.c. Schwarz n.c. 3 Rot Grün 3,3V 4 Weiß Rot GND 5 n.c. n.c. n.c. 6 Gelb Weiß PB8 (SCL) Da man in der Regel einen Clone erworben hat, kann man sich auf die Farben nicht verlassen. Besser ist es, den Stecker
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
-
Artikel
STM32 jump to bootloader
Reboot_Loader'. Diese setzt einen Pointer auf den Bootloader und hüpft dann dort hin. startup.S. app.c. app.c ohne fwlib/HAL. Beispiel. Der folgende Code-Ausschnitt zeigt die ISR des USART1 eines STM32F103. Der Code sammelt alle empfangenen Bytes und zählt mit. Sobald 32bytes oder ein '\r' empfangen wurden
gewährleisten. Siehe ST-Forum-Lunk unter "Quellen". Quellen. Autor. clive1 - ST-Forum (code) Nils S. - µC.net (Artikel)
-
Artikel
AVR-GCC-Tutorial/Assembler und Inline-Assembler
konstanten String angegeben, der ähnlich wie bei einem printf verwendet wird: %-Platzhalter werden durch die Werte der nachfolgenden C-Ausdrücke ersetzt, und die resultierende Zeichenkette wird in die Assembler-Ausgabe
Assembler Programs Assembler-Module werden analog zu C-Modulen übersetzte: Während ein C-Modul modul.c mittels avr-gcc -c modul.c zum Object übersetzt wird, ist der Compileraufruf für eine Assembler-Quelle modul.sx avr-gcc -c modul.sx Durch die Endung .sx
-
Artikel
AVR-Tutorial: ADC
Spannungen zu messen, wird der Analog-Digital-Wandler (kurz: A/D-Wandler) oder englisch A nalog D igital C onverter (ADC) benutzt. Er konvertiert eine elektrische Spannung in eine Digitalzahl. Prinzipiell wird dabei die Messspannung mit einer Referenzspannung verglichen. Die Zahl drückt daher das Verhältnis
Vergleich zur Vorgängerversion geändert. Die Multiplikation sowie die Umwandlung der Zahl in einen ASCII-String sind als Unterprogramme geschrieben, dadurch erhält man wesentlich mehr Überblick im Hauptprogramm und die Wiederverwendung in anderen Programmen vereinfacht sich. Außerdem wird der String im RAM gespeichert
-
Artikel
YaMenü
Datei für die Zielhardware angepasst werden. Das ist einmal displayroutines.h und displayroutines.c. displayroutines.h für PDCurses: displayroutines.c für PDCurses: Mit diesen beiden Dateien wird dem Menüsystem ermöglicht Ausgaben auf dem Display zu machen. Ich denke die Funktionsnamen sollten selbsterklärend
weiter. Wir legen eine neue Datei idle.app im Unterordner apps an. Und es müssen einige Teile aus main.c die mit der Zeit zu tun haben in die Dateien atime.h und atime.c verschoben werden. Jetzt zeige ich noch mal die geänderte main.c. Ja, ich weiß, ein Haufen Quelltext. Aber nur so könnt ihr dem Beispiel
-
Artikel
IAQ-2000
hier schwanken die Datenblattangaben) Sonstiges. Abmessungen 22 x 8mm Gewicht 10g Ansteuerung per I2C. Je ein Pull-UP-Widerstand von 1K zwischen VCC und SDA bzw. SCL notwendig Leseadresse: 0xB5 Schreibadresse: 0xB4 Sensor liefert nach dem Einschalten für 15 Minuten 0x01C2, was einem Wert von 450ppm entspricht
Schnittstellenbaustein notwendig Baud-Rate: 9600BD, 8,N,1 Der Sensor liefert alle Sekunde einen ASCII-String. Die erste "Spalte" repräsentiert den Sensorwert in PPM Die zweite "Spalte" repräsentiert den Sensorwiderstand IAQ-Engine. Ansteuerung per I2C. Adresse (8bit) = 0xB4 Adresse (7bit) = 0X5A Adresse Binär
-
Artikel
SJC
Testaufruf für ATmega-Projekte Linux: ./compile -t atmega -L -P batmel32.bin -y -e 0x60 -E -a 0 -o boot -B -C -k src Windows: compile.exe -t atmega -L -P batmel32.bin -y -e 0x60 -E -a 0 -o boot -B -C -k src Erzeugt werden sollten aus allen (!) Quelltexten im Verzeichnis "src" eine Datei syminfo.txt mit textuellen
statt für ia32 erzeugen. -L: Möglichst abgespeckte Objekte ohne Heap-Informationen verwenden. -y: Strings mit byte- statt char-Werten verwenden. -B: Keine Bound-Checks für Arrays (Vorsicht: ein ungültiger Index wird nicht mehr erkannt!). -C: Keine Array-Store-Checks für Arrays (Vorsicht: die Ablage eines
-
Artikel
HiDTemp
aber schnell genug um die USB Kommunikation einwandfrei zu gewährleisten. Die beiden Kondensatoren C1 und C2 sorgen für eine Glättung und Filterung der 5V USB Spannung. Die LED1 signalisiert, wenn sie aktiv ist, einen gerade stattfindenden Messzyklus der bei einem DS18B20 typ. 750ms dauert [5]. Die
nichts miteinander zu tun haben. Der Sensor hat gemäß Datenblatt eine Grundgenauigkeit von +/- 0,5°C. Die Auflösung für einen DS18B20 ist dabei 12Bit also 0.0625°C oder 1/16°C. Fazit. Die Schaltung und die Software für das HiDTemp Gerät arbeitet auf meinem Windows 7 x64 Systemen schon länger stabil
-
Artikel
Klopfsensormessgerät
verzichtet. Erste Version siehe Aktuelle Version: Schaltplan: KiCAD Projekt: Software. Programmiersprache: C Entwicklungsumgebung: AVR Studio Compiler: WINAVR Die Software ist zur besseren Übersicht in mehrere Module geteilt: SPI.c: Hardware SPI Treiber für ATmega8 TPIC8101.c: Treiber für TPIC8101 UART.c: UART
ugetchar0 können nicht mit streams umgehen, das erzeugt 2 Warnings beim Compilieren Fehler in TPIC8101.c: in TPIC_get_knock_value siehe Fehler in TPIC8101.c: in #define TPIC_hold hat "~" gefehlt Fehler in SPI Initialisierung behoben: Es muss mode 1 statt mode 0 sein Fehler in TPIC_set_integration_time_constant
-
Artikel
HD44780
Cursorposition inkrementieren S Displayinhalt fest Displayinhalt weiterschieben D Display aus Display an C Cursor aus Cursor an B Cursor blinkt nicht Cursor blinkt 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 der 8 möglichen benutzerdefinierten Zeichen transkodieren. Wie nutzt man diese Sonderzeichen in C oder C++?. Angegeben sind die Oktalnotationen der Sonderzeichen. Diese bettet man dreistellig in den String ein: "\3502" ergibt √2 auf der Anzeige und belegt 2 Bytes (mit der terminierenden Null 3 Bytes
-
Artikel
AVR-Tutorial: LCD
SP ! " # $ % & ' ( ) * + , - . / 3x 0 1 2 3 4 5 6 7 8 9 : ; = ? 4x @ A B C D E F G H I J K L M N O 5x P Q R S T U V W X Y Z [ \ ] ^ _ 6x ` a b c d e f g h i j k l m n o 7x p q r s t u v w x y z { } ~ DEL Die ersten beiden Zeilen enthalten die Codes für einige Steuerzeichen,
abwechselnd mit dem Buchstaben an dieser Stelle angezeigt wird. d = 0, Display aus d = 1, Display ein c = 0, Cursor aus c = 1, Cursor ein b = 0, Cursor-Blinken aus b = 1, Cursor-Blinken ein Ausführungszeit: 40 µs Cursor/Scrollen: 0b0001srxx. Bewegt den Cursor oder scrollt das Display um eine Position entweder