-
Thread
Atmega2560 SPI-Verbindung zu ext. AD-Wandler
Matthias H. (streno) >Das Programm habe ich wie von eprofi übernommen und getestet. die >einzelnen Schritte arbeitet er sauber ab. Dennoch erhalte ich immer >16383 als Data. Dann sit was faul. Auch beimbesten AD-Wandler wackeln die untersten Bits, erst recht bei 14 Bit. Wie sieht dein Hardwareaufbau
read // sign extention tmp &= 0x3FFF; // clear MSBs if (tmp & (1<<13)) tmp |= 0xC000; // copy bit 13 to 14 and 15 return tmp; } int main(void) { // IO init DDRB |= (1<<PB1) | (1<<PB0); // set SCK und SS to output // SPI init SPCR
-
Thread
ENUM Name vergeben wie Struktur
man denn einen Enum in einen struct reinpacken? Ja, aber das löst kein Problem. Wenn man bei C bleibt, wird man sich eine eigene sinnvolle Notation für die einzelnen enum-Werte einfallen lassen müssen. Eine Variante ist die Verwendung des Enum-Namens als Präfix: [c] enum _states { _
bit-field in C: "The order of allocation of bit-fields within a unit (high-order to low-order or low-order to high-order) is implementation-defined." Das verhindert die Benutzung von bit-fields für
-
Thread
allgemeine PicoMite Anfängerfragen
Uwe D. schrieb im Beitrag #7353274: > I2C verwendet (ursprünglich) nur 7 Bit zur Adressierung Nee, es sind 8 Bit. Das unterste Bit gibt an, ob es sich um eine Lese- oder Schreibadresse handelt ;-)
Peter N. schrieb im Beitrag #7353370: > Die I²C-Adresse ist ja ein 8-Bit-Wort, bei dem das Bit 0 RW darstellt. Nein! Die I²C Adresse ist ein 7 Bit Wort. Danach wird das R/W Bit übertragen. Das sind zweierlei Parameter. Wie PicoMite das handhabt
-
Thread
Adresse erkennen vom Slave mit USI
Hallo Für einen I2C Bus mit dem Master ATm1284p und einem Slave mit ATi 2313A mit USI verwende ich den Code von Martin Junghanns. Im Master erfolgt eine Abfrage nach dem Slave. Als Slave Adresse habe ich die 0x52 angegeben
#define sbi(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT))) // Set bit #define cbi(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT)))// Clear bit #define toggle(ADDRESS,BIT) ((ADDRESS) ^= (1<<BIT)) // Toggle bit #define bis(ADDRESS
-
Thread
Hilfe (Arduino) bei Schrittmotor Steuerung - Arduino zu langsam ?
Entweder man verwendet eine Hardware I2C Schnitte, oder man unterbricht die I2C Übertragung ein paar mal. Denn bei einem 400kHz I2C kann man z.B. Nach jedem 10 Bit unterbrechen und ist dann immer noch 10x schneller als 3,5kHz... Daniel H. schrieb im Beitrag #5855984: > Funktionieren Interrupts auch innerhalb der i2c-Übertragung ? Ideal wäre > dass die Übertragung zB. alle 100us unterbrochen wird Kommt auf die Implementierung des I2C an. Bei halbwegs sinnvoller Umsetzung geht das. Aber warum willst du da so oft
-
Thread
Python SCPI - Keithley DMM6500 u.ä.
Formatierung und du wirst es zu schätzen lernen. ;-) ad1: Geht übrigens auch mit Hex-Werten, zB. ein 32Bit WORD optisch in zwei HALFWORDS zu splitten. Oder 32bit Bin-Werte in vier Gruppen à 8Bits.
prinzipiell klar, coole Sache. Mir erschließt jedoch nicht das 123_123 > als Integer durchgeht. Seit C++14 gibt es das ähnlich in Cpp, nur mit dem "'" anstelle des "_": [c] long long int foo = 1'234'567; [/c]
-
Thread
Starthilfe Programmierung
Reihe nach bedient werden könnten. Ist sowas generell mit einem Controller möglich (kann ich einzelne Bits ansprechen oder nur das komplette Byte), oder braucht es da vier Stück? Wo finde ich denn den Befehlssatz samt einer kurzen Beschreibung für einen MC? Gruß, Matthias
direkt bei ATMEL oder ganz bequem von http://www.avrfreaks.net/. Natürlich kannst du auch einzellne Bits von einem Port auf high/low ziehen, ich weiss nicht auf welcher Platform du deinen Controller programmieren willst (C, ASM, Pascal, BASCOM) aber jedenfalls gibt es dafür Befehle und Möglichkeiten.
-
Thread
unterschiede beim setzen von registerinhalten
c-quelltextausschnitt: DDRA = 0xff; //port a als ausgang PORTA = 0x04; //ein bit in port a auf 1 setzen beispiel 2: c-quelltextausschnitt: DDRA = 0xff; //port a als ausgang PORTA
Also mit port ist eben der ganze port gemeint, mit PIND6 z.b. kannst du ganz gezielt ein einzelnes bit setzten oder abfragen. bsp: [avrasm] sbis PORTA, PINA1 [/avrasm] Dazu braucht man die zwei verschiedenen ausdrücke. PINA0 ist also der name des 0-ten bits im register PORTA
-
Thread
Guter Rauschgenerator in VHDL
lassen sich viele Dinge einfacher paralleler Lösen. Ich produziere mit meinem Rauschgenerator die Bits auch einzeln, um auf die Datenrate zu kommen.
wird, dann braucht man für so ein einzelnes Bit eigentlich keinen ganzen Integer. Und das prbsreg ist im Prinzip nichts anderes als das Signal x... Fazit ist damit das hier: [vhdl] x <=((a*x)+c) mod m when rising_edge(prbsclk); prbs_out
-
Thread
Computer Cluster mit alten PC`S
Message_Passing_Interface Es gab auch mal einen Artikel zum Rechnen mit MPI und mehreren Computern in einem c't-Heft - weiß jetzt aber nicht mehr genau, in welchem.
kommt aber auf die "Rechnung" an. Gehts es dagegen um Analyse von Terabyte von Daten auf einer einzelnen HD, dürfte der Grafikbeschleuniger als Coprozessor nur für noch mehr collision im Flaschenhals sorgen. Aber soll der TO mal bauen, Erfahrung macht klug.
-
Thread
Forensystem veraltet!
einzelnen Abfragen kann die Datenbank keine Zusammenhänge erkennen und hat deshalb weniger Optimierungsmöglichkeiten. Und dass phpBB viel langsamer ist, habe ich selber festgestellt. Es ist mir völlig rätselhaft
Umstellung auf die in anderen KlickiBunti-Kasperlforen übliche Oberfläche würde ich nicht begrüßen. Bit- & Bytebruch... ...HanneS...
-
Thread
pow() Flash-speichersparend ?
Yalu X. schrieb im Beitrag #3482377: > - Hat int auf deinem µC 16 Bit? Die Variablen sind tatsächlich so groß wie definiert, d.h. es findet bei 255 kein Überlauf statt. > > - Wenn ja, geht also der Wertebereich von x von -32768 bis +32767? Der Wertebereich
Helge schrieb im Beitrag #3482407: > Yalu X. schrieb: >> - Hat int auf deinem µC 16 Bit? > Die Variablen sind tatsächlich so groß wie definiert, d.h. es findet bei > 255 kein Überlauf statt. Das ist keine Antwort auf diese Frage. Was er wissen will ist sizeof(int), dass ist
-
Thread
Wartezeiten effektiv (Scheduler)
auch von mir einige Anpassungen, aber damit komme ich immer sicher ans Ziel bei meiner Projekte. [c]utimer_t delta;[/c] kann 16-Bit oder 32-Bit je nach Problem haben und mit der Nutzung i.a. von GPIOR0 - GPIOR2; siehe |main.h|: [c]#ifdef GPIOR0 # define f_timer_tick SBIT(GPIOR0,0) #endif[/c] wird
; } [/c] tov0.c [c] #include "../main.h" uchar f_timer_tick; uchar key_state; // debounced and inverted key state: // bit = 1: key pressed uchar key_press; // key press detect
-
Thread
Anfängerfrage: Eingang und Ausgang
1) Wenn du einen Eingang abfragen willst, musst du das PIN Register benutzen. Ausgang: PORT Eingang: PIN 2) Du kannst kein | benutzen, um gezielt einzelne Bits auf 0 zu setzen. Dafür benutzt man ein & Bits setzen: | Bits löschen: & 3) Überleg dir gut, welcher Wert herauskommen wird, wenn du gezielt einzelne Bits in einem Datenwort auf 0 setzt. 4) Wenn du einfach an PORTB eine Zuweisung der Form 0b00000010
-
Thread
Digitales Potentiometer hier sinnvoll?
Profi dabei sitzt nützen dem Anfänger solche Tipps rein > gar nichts. Ein Anfänger baut auch kein µC gesteuertes Ladegerät.
noch 0.8V üblich, sagen wir 0.5V maximal am shunt bei vielleicht 5A, also 0.1 Ohm. Dann reicht die 10 bit Auflösung für 25mA, reicht ja wohl. Besser ware ein uC mit 2 differentiell messenden Analogeingängen mit PGA, wie Attiny85 mit 0.125V full scale an 0.05 Ohm bis 2.5A mit 2.4mA Auflösung. Damit
-
Thread
MAX7313 Input Auswertung
Ganz einfach, so wie es gedacht ist. Du musst die einzelnen Bits auswerten. Das geht mit Bitmasken oder Bitfields.
if(Input.in3){ // tu etwas wenn Taste 3 } if(Input.in4){ // tu etwas wenn Taste 4 } .... [/c] Wenn die Bits invertiert sind also eine 0 da steht wenn der Taster gedrückt ist dann musst du die Abfragen eben invertieren also sowas wie: [c] if(!Input.in1){ // tu etwas wenn Taste 1 }
-
Thread
SREG – Status Register beim Attiny 841
Hallo Es geht mir um das Register "SREG – Status Register" beim Attiny 841. Laut DB muss das Bit 7 (I) gesetzt werden damit Interrupt funktionieren. Bei einigen Tuts und Beispielen stand, das es nicht unbedingt notwendig wenn man sei() verwendet. Habe ein Beispiel dazu: [c] #define F_CPU 16000000UL
> wenn man sei() verwendet. Jaja. Mensch, sei() ist ein C-Makrto, welches dein Assemblerbefehl sei umsetzt, eben damit das Bit gesetzt wird (Set Interrupt Bit)! > Habe ein Beispiel dazu: Schlechtes Beispiel, weil in beiden ISRs die gleich LED geschaltet
-
Thread
ebus protokoll mitschnitt bei einem Wolf Heizkessel
9C}{08}{03}{4C} Ich kann gerne mit weiteren Telegrammbeispielen dienen, falls noch Interesse besteht. Ziel ist, einzelne Daten aus der Heizung über das Internet abfragen zu können. Die Anbindung mit
sicher sind noch mehr Stellen reserviert Messages bei Abfrage der Werte durch BM: 07 76 50 22 03 89 7C 09 CF 00 02 A0 01 42 00 ^ ^ WW Solar 24H Max * 10 07 76 50 22 03 41 7B 09 7D 00 02 5F 01 39 00
-
Thread
Was war für euch der größte Entwicklungssprung beim x86 PC?
verwendet (oder Compact, Huge). Leider war das traurig langsam, besonders im Protected Mode. Mit 16-Bit Pointern war in C keine Trennung möglich.
Beitrag #7006565: > Einmal bei Pat Gelsinger nachfragen... ... oder bei Andreas Stiller, ehem c't. Auf diesem Steckenpferd ist er recht oft geritten. Wikpedia sagt indes: "... und ist auf x64-Prozessoren (64-Bit-x86-Architektur) ab ca. 2010 größtenteils nicht mehr implementiert." Virtuell war
-
Thread
(Umfrage) Was war eure erste Programmiersprache usw.?
Ab 1983: Pascal 8086 Assembler 68000 Assembler irgendwelche 8 Bit µC Assembler C ...
aufgegeben habt. Meine ersten Schritte waren ja wie oben schon angedeutet Maschinensprache, Anlegen der Bits mit Laborleitungen und Takterzeugung mit einem Taster. Dann kam natürlich irgendwann Basic, Pascal, Assembler, C und letztlich C++. Wobei ich ehrlich gesagt eher C in einer C++ Umgebung sagen sollte
-
Thread
Selbstbau von Überspannungsrelais
ähnliches Problem hab ich so gelöst: Auf der Seite, auf der die Messung gemacht wird, sitzt ein kleiner µC (bei mir: STM32F030F4) und misst per ADC. Bei mir muss er zusätzlich noch ein Bus abfragen und ein paar GPIOs vergleichen, daher ging es nicht ohne µC. Letztlich gibt der µC einen festen Takt aus
Problem hab ich so gelöst: Auf der Seite, auf der die > Messung gemacht wird, sitzt ein kleiner µC (bei mir: STM32F030F4) und > misst per ADC. Bei mir muss er zusätzlich noch ein Bus abfragen und ein > paar GPIOs vergleichen, daher ging es nicht ohne µC. > Letztlich gibt der µC einen festen
-
Thread
Speicher nach Stromausfall
Unterbrichst Du dann den laufenden Schreibvorgang? Falls ja, was passiert, wenn Du z.B. einen 16- oder 32-Bit-Wert in einen 8-Bit Speicher schreibst und mittendrin fällt der Strom aus? Markus
Wahrscheinlich!?! Leider kenne ich nur C. Martin
-
Thread
Boolscher Interpreter zur Laufzeit
zusammenpappt. Immerhin kennt einer yacc aber selbst das ist hier Kanonen auf Spatzen. Ausser Pins abfragen kann der E-Technik-Ing nix mit C.
versuche es nochmal, vielleicht habe ich ja wirklich die falsche Herangehensweise: Im Bedienpanel des µC sind verschiedene Menüs und Untermenüs gelistet. Je nach Einstellung sollen einzelne Menüpunkte angezeigt oder ausgeblendet werden. Die Definition der Zusammenhänge ist dem Entwickler (mir) unbekannt
-
Thread
Rundenzähler Carrera
dass du dich in der Behandlung des Reset-Tasters um die 7-Seg Anzeige kümmern musst, in dem du die einzelnen Bits ansteuerst. Deine loop sieht dann so aus [c] void loop() { Logik, welche diverse Eingangsleitungen überwacht uns auswertet. Als Ergebnis dieser Auswertungen verändert sich der
[C] // Um die Runden der Fahrzeuge zu zählen, bedarf es einer Abfrage am Startzielbogen // um dem Mikrocontroller mitzuteilen ob das Fahrzeuge durchgefahren ist oder nicht. // Die Kontrolle
-
Thread
Atmega, Timer und Takte
[c] SIGNAL(SIG_OVERFLOW1) { //ui_tim1sreg - steuert diesen Interrupt //Bit 0 - Sekunden Impuls! //Bit 1 - Warte-Funktion - zählt jede MilliSekunde //Bit 2 - Warte-Funktion DCF
nicht mehr aktuell. Am besten bei Gelegenheit eine aktuelle Version besorgen. 2. Du brauchst in C nicht einzeln auf High- und Low-Byte der Timer-Register zuzugreifen. Es sind in der entsprechenden Header-Datei 16-Bit-Register definiert. Wenn Du die benutzt, brauchst Du Dir auch keinen Kopf wegen
-
Thread
Funkmodul 433/868Mhz
Funkmodule. Zweck: Mein Haus mit einer Alarmanlage ausrüsten. Es soll eine Zentrale geben mit µC die alles auswertet und per Funk die einzelnen Alarmstellen abfragt. Die Alarmstellen sollen Fenster und Türen sein: Mit Reedkontakt und Glasbruchmelder. In jede Alarmstellen soll auch ein µC rein und
Habe jetzt von funkmodule(.)de nen Angebot bekommen: das RT868F5 kostet ca. 40€ für einzeln Mengen und bei ca. 30-40 Stück nur noch 32€. Ich werde mir denk ich erstmal 2 Stück bei denen einzeln bestellen und testen ob alles so klappt wie ich es mir vorstelle. Später bestelle ich dann
-
Thread
Uhrzeitrechner
Korrektur, muss nach ganz oben vor die Schleife [c] DateTime temp= rtc.now() - TimeSpan( 0, 11, 0, 0 ); //zieht 11 Stunden ab [/c]
Außerdem kann es vorkommen das die rtc durch die vermehrten i2c abfragen Ticks verliert, also sollte man die interne rtc alle 15-20 Minuten mit der externen Uhr synchronisieren und diese nutzen. Wenn es nur ein Lehrbeispiel/Aufgabe ist macht der Aufwand aber keinen
-
Thread
AVR Tiny 13, EEPROM schreiben, der Prozessor ist danach "von der Rolle"
und war erstaunt dass auch hier ein Aufruf der EEPROM-Routine erfolgte. Langsames Abbarbeiten der einzelnen Schritte zeigte dann das Problem auf: Die Flags wurden während der Abfrage des Write-Flags durch die Interrupt-Routine verändert, so dass ein Aufruf stattfand, obwohl das Register des Write-Flagsnoch
Computergeneration bekommen möchte, der kann sich ja die erste Chip herunterladen: http://www.chip.de/downloads/c1_downloads_auswahl_15815484.html?t=1331074379&v=3600&s=f4a6f1c2317e6ff2111fbb34356275d4 Mein Bruder hatte die damals gekauft, aber ich kann die nicht mehr finden, ist wohl irgendwann doch ins Altpapier
-
Thread
Dynamisches Array (mit calloc() und realloc()) löst BusFault aus. Wieso?
Erstmal solltest du wohl ehr eine 8bit breite Variable für ein einzelnes Bit nehmen. Gleich 32bit für nur 1 bit zu verwenden, ist etwas verschwenderisch. Wenn du es dir leichter machen willst, kannst du in der Doku deines Cortex nachsehen
Wie schon Peter angesprochen, fehlt die Fehlerbehandlung und dann musst du beachten, dass das ein µC und kein PC mit mehreren GHz/GB ist. Also verwende geeignete Datentypen um Speicher zu sparen, kein ULONG um nur ein mickriges Bit zu speichern! Und dann sollte man auf einem µC immer auf einen Heap
-
Thread
C8051F020 P1 als Ein- und Ausgang
möglich ist, den P0 und 1 als ein und Ausgang zu nutzen. Stimmt dass? Wenn Ja wie muss ich das in C deklarieren? Vielen Dank für eine schnelle Hilfe.
verwende den Wizard von Silab, aber mir ist nicht klar, ob ich ein push-pull oder Opendrain für die einzelnen Bits brauche.
-
Thread
Suche Automotiv Mikrocontroller den man mit einem free Compiler kompilieren kann!
Fab L. schrieb im Beitrag #3008503: > Ich bräuchte einen AUTOMOTIV (da der uC min. 10Jahre Verfügbar ist) > 16Bit uC mit: gingen auch 32 Bit? Da hättest du diverse ARM implementierung zur auswahl > Dies soll nämlich für eine Steuerungselektronik/Leistungelektronik für >
habe im Moment das Problem, das der uC nicht mehr > lieferbar ist, deswegen möchte ich einen Automotiv uC haben. Wenn Du einen 16Bit Infineon µC hast, dann ist es wohl ein Controller aus der C167-Familie. So wie ich Dich verastanden
-
Thread
PIC Probleme mit Programm BIN zu BCD
behandeln Beispiele: #define LED_ANZEIGE PORTB ; Segmente a-g (h) #define DIGITS PORTA ; Bit 0-3 #define TASTER PORTA,0 ; Bit 0 Abfrage: btfsc TASTER ; skip next wenn Taster offen ; liest sich einfacher wie btfsc PORTA,0 oder #define DIGIT1_AUS bcf
gesetzt zählt aber nicht wie in seinem programm bis 65 hoch. Ja habe clrf OPTION_REG drin somit ist bit3 auf 0.
-
Thread
DOGM081 Display Fehlersuche *HILFE*
*************************************************** #define FUNCTION_SET_EXT 0x21 // 4bit mode, 1 line, instruction table [0,1] #define BIOS_SET 0x1C // 1/5 bios #define POWER_ICON 0x51 // Booster on, contrast C4 on #define FOLLOWER_CONTROL 0x6A /
DisplayClock (void) { _delay_us (30); // 30µs warten DISPLAY_E_ON; // Clock-Bit auf high _delay_us (0.4); // High muss min. 200ns anliegen DISPLAY_E_OFF; // und jetzt auf low } void DisplayWriteChar (char c) { DisplayWriteData(MESSAGE, c); }
-
Thread
Kam Reset durch Watchdog
mal so: [c] uint8_t buffer = MCUCSR; if(buffer & (1 << WDRF)) IsWatchdogReset = 1; [/c]
Watchdog Reset schrieb im Beitrag #4115699: > [c] > int main () { > // Gab es einen Watchdog-Reset? > if (IsWatchdogReset) { > [/c] Wo setzt Du denn IsWatchdogReset? Ich sehe in main() lediglich die Abfrage der Variable. Deine Funktion wdt_init
-
Thread
ARM-GCC: No strict alias
with gcc -fwrapv to get a more meaningful result: // x86_64-w64-mingw32-gcc.exe -fwrapv -O1 -Wall -c bug2.c // int f(int i) { return i+1 > i; } [/c] Abfrage auf Überlauf: [c] void foo(int a, int b) { if (a <= 0 || b <= 0) return; // only deal with positive numbers if (
Wissen, ob ein Überlauf stattgefunden hat. Und diese builtin-Funktion ist das beste Mittel, unter C an das Carry-Bit zu gelangen.
-
Thread
RS485 - viele Teilnehmer - hohe Geschwindigkeit
RS485 Netz mit 30 Teilnehmern. Gut und schön, aber bei 2000m Leitungslänge sollte das selbst bei 9600kBit/s eher NICHT laufen. ODER.... die Steuerungen so aufbauen, dass es immer ZWEI ein RS485 Netzte gibt (UART1 und UART2 des µC nutzen und 2 RS485 Wandlerbausteine nebst galvanischer Trennung einplanen
Netz mit 30 Teilnehmern. Gut und schön, aber bei 2000m > Leitungslänge sollte das selbst bei 9600kBit/s eher NICHT laufen. Unsinn, das läuft schon, wenn man keinen Murks baut. > die Steuerungen so aufbauen, dass es immer ZWEI ein RS485 Netzte gibt > (UART1 und UART2 des µC nutzen und 2 RS485
-
Thread
AVR als I2C-Slave macht Probleme
Ich bin auf ein seltsames Problem gestoßen: Ich möchte, dass diese beiden Geräte per I2C kommunizieren: - Raspberry Pi Zero als Master, 2 GPIOs bit-banged - ATmega328P (3.3V) als Slave mit Hardware-I2C Sonst hängt niemand am Bus (abgesehen vom LA). Ich habe externe 2,4-kOhm-Widerstände
Jobst M. schrieb im Beitrag #4661868: > Zeig mir bitte mal die richtige Stelle. [c] • Bit 7 – TWINT: TWI Interrupt Flag This bit is set by hardware when the TWI has finished its current job and expects application software response. If the I-bit in SREG and TWIE in TWCR are set,
-
Thread
STM32L031K6 Sprung in Bootloader aus Applikation funktioniert nicht
mit der Beschreibung der Bits. [c] void JumpToBootloader(void) { void (*SysMemBootJump)(void); RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; //Takt aktivieren SYSCFG->CFGR1 &= ~SYSCFG_CFGR1_MEM_MODE; //Bits löschen SYSCFG
; //Takt aktivieren SYSCFG->CFGR1 &= ~SYSCFG_CFGR1_MEM_MODE; //Bits löschen SYSCFG->CFGR1 |= SYSCFG_CFGR1_MEM_MODE_0; //System Memory auf Adresse 0 remappen [/c] ,wie in den vorherigen Posts, jetzt diese Zeilen verwende: [c] RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN
-
Thread
Protokoll für einfache Kommunikation rs485
hinbekommen können. Die PC-Standard-UART löst zwar keinen Interrupt aus, wenn sie mit Senden des letzten Bits fertig ist, aber es gibt ein Flag in einem Statusregister, das man abfragen kann, notfalls in einem Timerinterrupt, der mit dem Übertragen des letzten zu sendenden Zeichens an die UART aufgezogen wird
[c] ISR (UART0_RECEIVE_INTERRUPT) { if(uart_str_rx_ct>uart_string_len+1)uart_str_rx_ct=0; uart_str_rx[uart_str_rx_ct++] = UDR0; return; } [/c] C und anderer Code wird durch Einsatz von Leerzeihen
-
Thread
Digitales Display und Keyboard mit PC verbinden
c-hater schrieb im Beitrag #4594892: > OMG, dir fehlen massiv sämtliche Grundlagen. > > Konkret: Abfrage einer Matrix-Tastatur. Du findest das Prinzip an > hundertausend Stellen im INet erklärt.
Spannungswandler? Oder an sendval, was ja bei einem A gleich "01000001" sein müsste. Wenn laut Datenblatt das C-Bit (Bit 7) eine 1 ist, kommt es nicht zur Anzeige des Wertes auf dem Display sondern es wird eine Controlfunktion angesteuert. (Datenblatt Table 1)
-
Thread
AT90USB162 Endpoint Interrupts funktionieren nicht
Naja, wie geschrieben, bei USB kommt noch dazu, dass du 16-Bit-Strings brauchst. Die normalen C-Strings sind halt erstmal 8 Bit pro Zeichen.
clr z.B. ersetzen). Wenn ich weis das alles Funktioniert wollte ich noch sowas wie btm (kurz für "bit mask") machen, wo ich dann z.B: schreiben kann [c]btm(PLLCSR, PLL0, 0, 1, 0);[/c] Also quasi erst der Register, dann das Erste Bit und dann die Bits die von da aus gesetzt werden sollen. Oder irgend
-
Thread
IR-Schalter mit tiny 13
Projekt hinzufügen. Dann main.c mit Leben füllen, z.B. den Beispiel-Code von irmp-main-avr.c ins main.c kopieren. Als nächstes irmpconfig.h anpassen und den Pin eintragen, den Du verwenden willst. An der Stelle: [c]
mich noch interessieren. Wieviele Bytes brauchst Du zum Speichern und damit Wiedererkennen eines einzelnen Frames? [[IRMP]] braucht dafür konstant 5 Bytes - egal wieviele Bits der Frame hat (ich kenne welche mit bis zu 80 Bits/Frame) oder aus wievielen Frames sich ein Tastendruck zusammensetzt. Damit
-
Thread
xc866 indirekt adressierbaren speicher in C beschreiben
c nur für asm. kann man das in c einfacher realisieren? gruss erol
dort gibt es ja bereits einen FlashHandler, mit welchem man in den D-Flash schreiben kann, alles auf C- Basis. Ich werde leider aus den Beispielen überhaupt nicht schlau - ich möchte einfach nur wissen, mit welcher Funktion ich einen Wert (8 oder 16 Bit) in den D-Flash speichern kann und wie ich diesen
-
Thread
Akku-Lader mit Datenbank
ja auch, wenn der Barcode-Scanner mal nicht will. Ich denke nun an einen 3-stelligen Hex-Code (12 Bits) für bis zu 4096 Akkus. Ich habe gerade festgestellt, dass es 64 Zeichen gibt, die mit dem AliExpress-Teil trotz deutscher Tastatur mit Code128 korrekt übermittelt werden. Also hat man 6 Bits pro
, da ich sie in der Bastelkiste habe: https://github.com/TorstenC/Notizblog/wiki/Mikrocontroller … natürlich zuzüglich ESP8266.
-
Thread
80c166 Assembler: Erzeugung von Pseudzahlen
Hallo Leute, ich habe ein (für mich) mächtiges Problem. Ich soll das aufleuchten einer LED mit einer pseudozufälligen Position (0..15) erzeugen. Der Ansatz wäre hier über ein rückgekoppeltes Schieberegister (mein Ansatz wäre über rol) zu machen. Also linksschieben in einem 16 bit Register (und die 12 höchsten Bits löschen, dann erhalte ich die Zahlenwerte 0..15). Nach dem Linksschieben Abfrage der Bit Nr. 1 und 15 (nicht 0 u. 14). Bei gleichheit der beiden Bit das Bit 0 setzen. Bei n=15 ergeben die Abgriffe k1=14 und k2=0). Wie kann ich das lösen? Unten könnt ihe mein altes Programm sehen
-
Thread
1 Bit AD-Wandlung - Erhöhung der Auflösung durch oversampling
first measurement was A and the second measurement was B, the value must be exactly (A+B)/2 or for two bit, (A+B+C+D)/4. You cannot get detail from nothing. It's like in those movies where they "enhance" a blurry photo and are able to reproduce the entire page of text from 4x4 pixel area. Dem ist eigentlich
[c] Das mit den 1 Bit Wandler scheint zu funktionieren. Ich habe das mal simuliert. #include <stdio.h> #include <stdlib.h> void main(void) { double Umess,URnd,UOut,UVer; int i;
-
Thread
PIC16F1825 - I2C Acknowledge Problem?
; letztes Bit 1 = read Data call i2c_tx ; sende I2C-Adresse call i2c_rx ; lesen Speicherzelle nach W ; call i2c_ack call i2c_off ; Bus stop
= 0; // Clear the flag bit return ACKSTAT; // Return ACK/NACK from slave } [/c] Dann bekommst du Du das ACK Bit als Ergebnis zurück. /regards
-
Thread
abweichung beim zeitmessungsprogramm
* Spar dir die cli / sei in den Interrupt Funktionen. Die sind kontraproduktiv! * [C] void uitoa(long endergeb, char* string) //addaptiertes unterprogramm zum speichern der einzelnen zeichen in einen string { unsigned int i;
sollte sobald t=1 ist abgearbeitet werden { endergeb = berechung(); [/C]