-
Thread
Warum hängt vsync und hsync im RTL-Viewer in der Luft?
sein soll? Muss ich das wirklich? Nun, weil es der tatsächlichen Hardware entspricht. Ein Haufen Bits/Leitungen eben. Die noch vollkommen unbefleckt ist, was die Daten angeht, die darüber transportiert werden. Ich kann die Bits schieben, einzelne Bits invertieren oder verknüpfen, eine Zahl in Gray-Code
Dieser Vergleich ist, mit verlaub, genauso sinnfrei wie deine Behauptung, dass in einem RAM die Bits eine Ordung haben und diese eben eine Zahl repräsentieren. W.S. schrieb im Beitrag #3864525: > Verkaufszahlen von µC, insbesondere von kleinen PIC's. Der Grund, dass weniger FPGAs als µC verkauft
-
Thread
Pointer in STRUCT wollen einfach nicht funktionieren! (AVR-GCC)
späteren Schritt wird um 8 Bits geschoben..blahblah.. es wären ja 2 Bytes, da uint16_t, aber das vernachlässigen wir im Moment) [c] modbus_frame->data[0] = RS485_getc(); // data[0] = data ohne offset (z.B. 0x01) [/c] "modbus_frame
gerade Linie! :) Ich habe meinen Code mal wie folgt "umgeschrieben".. Was noch fehlt ist die Abfrage ob das Alloziieren überhaupt geklappt hat!! [c] typedef struct { uint8_t slave_address; uint8_t function_code; uint16_t *data; uint16_t crc; } modbus_frame_t; -----------------
-
Thread
Logische Funktion mit Gattern realisieren
Wenn man davon ausgeht, dass a,b,c in einem Register anfallen, sind die oben angegeben Abläufe sinnfrei weil man a,b,c erst auf Register aufteilen muss. Bei mehreren Registern ist eine aufeinander folgende Abfrage, ob ein Bit im jeweiligen Register gesetzt ist, vermutlich nicht langsamer als die Aufteilung auf einzelne Register plus Auswertung. Folgendes bei Bits a,b,c in r1 als 00000abc, mit Bitverdoppelung von Bit c. Benötigt temporär 2 Register (r1,r2) und T Flag bei Porteingabe auf einem PORT bei AVR z.B
-
Thread
"bus sniffer" oder sowas for Daten-/Adressbus gesucht
der Zeit graphisch anzuzeigen. Gibt es da auch Software mit der man die Scanergebnisse frei abfragen und programmieren kann? Z.B., dass stets der aktuelle 8 bit Wert des Datenbusses angezeigt wird, und zwar dann, wenn eine bestimmte Adresse am Adressbuss anliegt oder irgendein AE, WE oder CS Signal
nach meinem Laienverständnis doch die Adressen der Peripherie aber auch des Speicherzellen jeweils einzeln abfragen. Zum Speicher: Ich habe den Eindruck, dass die Programme so gestrickt sind, dass diesselben Daten immer an derselben Adresse abgelegt werden; deshalb meine Idee der Überwachung einzelner
-
Thread
16x2 LCD Langsamer Displayaufbau
( 5, 0 ); lcd_puts(buffer); } } [/c]
; } [/c] als nächstes schauen wir da mal bezüglich der Datentypen drüber. Du verwendest hier int. int hat zwar 16 Bit, da aber 1 Bit fürs Vorzeichen draufgeht, bleiben nur 15 Bit für die Zahl selber. Ein int
-
Thread
MSP430 PIN-Abfrage immer True
Hallo Forum, ich hab momentan ein Problem mit der Abfrage eines Pins am MSP430. Meine Abfrage: [c] if(P1IN & BIT3) { Do1(); } else { Do2(); } [/c] An P1.3 liegen dabei 4V oder 0V an. In beiden Fällen wird aber die Funktion Do1() ausgeführt
Hi Karol, wo es "noch" lief.. naja, wenn Do1() oder Do2() einzeln ablaufen... der Quellcode mit Initialisierung: [c] //INIT: P1OUT &= 0x00; // Shut down evrything P1DIR &= 0x00; // evrything is a input P1IE |= BIT1 + BIT2; //
-
Thread
Projekt: SerialComCNC Serielles Frontend für CNC GRBL mit ATMega
nichts weitergesendet wird, bis eben alles abgearbeitet wurde. Dies liese sich mittels '?' sogar abfragen. // Returns the number of active blocks are in the planner buffer. if (bit_istrue(settings.status_report_mask,BITFLAG_RT_STATUS_PLANNER_BUFFER)) { printPgmString(PSTR(",Buf:")); print_uint8_
Schwerwiegender > Verbindungsfehler Programm wird geschlossen" > Was kann das sein? > > OS ist Win10/64Bit Hey, das hatte ich auch, nachdem ich das setup in C/Programme installiert habe läufts
-
Thread
Messwert+Zeitpunkt komprimieren
Der Datensatz ist nur von Anfang an lesbar. Zu Beginn des Datensatzes müssen die Startzeit (32 Bit) und die Startwerte von A und B (je 16 Bit) eingetragen werden.
Der Datensatz ist nur von Anfang an lesbar. Nichts zu verbessern an seinem Vorschlag, nur halt ein Bit mehr nehmen, Zeitabstand geht auf 5bit, also von 1 bis 31 Sekunden, Bit7 für Zeitstempel nehmen. Also, wenn Bit7==0, Daten wie oben, wenn Bit7==1, handelt es sich um Zeitstempel, wenn Bits6-
-
Thread
UART strings einlesen
gibt viele Fehlermöglichkeiten. Angefangen von einer falschen Baudrate, einer falschen Taktrate des µC bis hin zu einem falsch ausgekreuzten seriellem Kabel. Nicht immer gleich mit den komplizierteren Dingen, wie der Übertragung einer ganzen Zeile (bestehend aus einzelnen Zeichen) anfangen. Erst mal
"'\n" ); } [/c]
-
Thread
DCF-Uhr Übungsprojekt
26]*40; //string2display(itoa(minute,minbuffer,2),ZEILE4); //<<<<<<Problemzeile<<<< } [/c] Ich kann mir die einzelnen Bits wunderbar auf dem Display anzeigen (Oszi hängt dran die Daten passen auch :) ): string2display(itoa(rawdata[i],buffer,2),ZEILE1+i); Wenn ich die Problemzeile
---------< | DB0 | +--------+ +---------+ [/code] DB7 hast du korrekt am µC auf Eingang umgeschaltet. Aber was ist mit dem Rest? Das dich die anderen Bits nicht interessieren, interessiert ja das LCD nicht. Das schaltet seine restlichen Bit-Leitungen ebenfalls auf Ausgang und
-
Thread
Input If abfrage
Hallo, Ich habe eine einfache Iff Input, dann Output (LED) programiert. Allerdings macht der Mikrocontroller genau das umgekehrte von dem was ich will. Ich möchte, wenn Input low, dann schalte Led ein wenn input high dann Led aus; er machts jedoch genau umgekehrt. Button habe ich keinen ich halte einfach Masse und Input zusammen oder nicht. controler ist ein Atmega8a. Hier das Programm:: [c] int main(void) { DDRB =0b00000000; //Input Pint DDRD = 0b00000010; //Output Pin PORTB = 0b00000100; //Input Pint while(1){ if (bit_is_clear (PINB , 2)) { PORTD
-
Thread
Viele Spannungsmeßwerte zum PC
user_produkte[PATTR]=HPG_1-UPG1_1-UPG2_2-UPG3_49&user_produkte[PR]=310&user_produkte[BTN]=produktbeschreibung&cHash=f270272b7c oder andere varianten http://www.plug-in.de/produkte/messen-steuern/?user_produkte[PATTR]=HPG_1-UPG1_1-UPG2_2-UPG3_0&cHash=pkkpocdhjz oder http://www.meilhaus.de/labjack+u12,i4
[c]Die Bilder in dem Forum, und dann "was gekauftes" - das paßt nit ;)[/c] Muß passen... Ich habe viele Projekte zum Thema meines Forums/ meiner HP zu laufen, habe früher auch ähnliches gebaut, siehe [
-
Thread
In Moodlight Programm Taster Entprellen
tar.gz Geiles Programm! mit den feinsten Farbübergängen die ich bis jetzt im inet gefunden hab. (16Bit Soft PWM mit 204 Helligkeitsstufen) Da ich nicht unbedingt der Fan von Fernbedienungen bin und lieber Taster am "Gerät" selbst haben würde, wollte ich die Taster enprellungs Routine in C von Perter
mit den einzelnen Programm Teilen durcheinander und weißt nicht wie das Programm insgesamt abläuft. Meine 1.Ansatz ist in der main.c die Taster ISR einzubauen und im moodlight.c abzufragen ob tasten gedrückt wurden
-
Thread
Wii Nunchuk und Atmega88P - Daten nur 0xFF
Dieser Artikel beispielsweise (hab ich erst jetzt entdeckt) schließt damit, dass man zwischen den einzelnen Abfragen der Bytes pausieren soll, und eine TWI Frequenz von 100kHz nutzen sollte: http://www.mikroe.com/forum/viewtopic.php?t=11121 [code] /* * get new data */ void wiinunchuck_update
received while(!(TWCR & (1<<TWINT))); // check value of TWI Status Register. Mask prescaler bits. twst = TW_STATUS & 0xF8; if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1; return 0; }/* i2c_start */ [/code]
-
Thread
Suche Software für RS232
Senderseite beeinflussen könnte würde ich einfach SerialComGrapher nehmen, top tool. Irgendwleche µC zum zurechtbiegen wollte ich eigentlich nicht zwischenschalten.
kannst du Programmieren, wenn ja welche Sprache? Ich würde es mit c# machen, das sollte das keine sehr gut machbar sein, man könnte dann sogar dort die Darstellung mit einbauen.
-
Thread
mehrere Bytes via SPI vom Slave
empfangen bekommen ohne zwischenzeitlich SS auf high zu ziehen, da der ADS1298 24bitconfig + ( 8 x 24bit Messdaten ) durchgängig an den µC sendet. Die Kommunikation wird vom Master eingeleitet und nur dann sollen Daten vom Slave bekommen werden. Nun verstehe ich zum einen nicht, wie oben beschriebener Code funktionieren kann, obwohl die Atmega nur 8bit Puffer haben und die Bits ja aber durchgängig ( also bei jeder Taktflanke ) gesendet/empfangen werden sollen. Da die Datenpakete der Messkanäle 24bit=3Byte groß sind, möchte ich zunächst natürlich
-
Thread
Digitale Sprünge beim XMEGA ADC
ADC von Atmel durch, da gibts jede Menge Einschränkungen/Fehler. Evtl. versuch mal die Channels einzeln hintereinander zu aktivieren/abfragen, oder Versuch mal folgendes: [c] ADCA.EVCTRL = ADC_SWEEP_0123_gc; [/c] Ah ja, und das ein ADC Werte liefert heißt nicht das er sauber läuft, ich spreche
<<ADC_FREERUN_bp) |ADC_RESOLUTION_12BIT_gc; [/c] Gruß, Christoph Nachtrag: Die Messungen erfolgen im Sekunden-Takt
-
Thread
I2C Bus schalten - Verhalten ?
abbildest. Und damit Du nicht die drei anderen LEDs beeinflusst, wenn Du den Zustand einer einzelnen änderst, merkst Du Dir immer den Zustand aller LEDs, manipulierst diesen Zustand und sendest den an den LED-Portexpander. Ein Bit setzt man am anschaulichsten z.B. mit [c]var |= 1 << 6[/c] var sei ein uint8_t, 6 ist Bit 6. Bits fängt man bei 0 an zu bezeichen, also Bit 0 bis 7 eines Bytes. Ein Bit löscht man z.B. mit [c]var &= ~(1 << 0)[/c] Hier wird Bit 0 von var gelöscht. Ob ein Bit gesetzt ist, prüft man
-
Thread
PIC18F2520 Ports abfragen
Wenn ich das richtig verstanden habe musst du nur die unteren drei Bits ausblenden. [c]keys = PORTB & 0xf8;[/c] Bits 0, 1 und 2 sind dann immer 0. Dürfte effizienter sein als jedes Bit einzeln zu lesen.
gesamten Portzustand doch zu vewenden? In deinem Fall macht man so: Ganzen Port lesen, mit einer Bit-Maske UND-verknüpfen, wobei alle Bits der Maske auf 1 gesetzt werden, deren Zustand dich am Port interessiert. Danach ggf. noch 3x Shift oder Division durch 8. > Ich benutze MPLAB und C18 Compiler
-
Thread
ATMega 8, assembler | lcd und led funktionieren zusammen nicht
Joachim Jakob schrieb im Beitrag #3802265: > interner pullup? was ist das Und Abfrage anders herum.
Marc Vesely schrieb im Beitrag #3802278: > Und Abfrage anders herum. Getan ?
-
Thread
Algorithmus für Logarithmus-Bererechnung?
M0..M14 (15bit)*/ zerg+=b; /*Nachkommastellen addieren*/ erg=zerg/32768.; /*Ergebnis Log2(20.000)*/ while(1) { Nop(); } return (0); } [/c]
M0..M14 (15bit)*/ erg+=b; /*Nachkommastellen addieren, Ergebnis = erg/2^15*/ while(1) { Nop(); } return (0); } [/c] Nochmals vielen Dank.
-
Thread
Taster - LED Beispiel
Bit 0), so war das Bit gesetzt. Nun gut, jetzt verstehe ich, warum ich die Verneinung nicht brauche - logisch. [c] a = PINC & (1<<0) [/c] sagt ja aus, dass sich a entsprechend der Änderung des PINC0
[c] /* Fuehre Aktion aus, wenn Bit Nr. 1 (das "zweite" Bit) in PINC gesetzt (1) ist */ if ( PINC & (1<<PINC1) ) { /* Aktion */ } /* Fuehre Aktion aus, wenn Bit Nr. 2 (das "dritte" Bit) in PINB
-
Thread
Große Datenmenge übertragen µC SD-Karte -> PC
Hi, ich würde gerne wissen wie man am geschicktesten ohne großen Ram/Puffer Daten einer SD-Karte (Fatfs) über eine UART an einen PC überträgt (UART in meinem Fall => Virtual-ComPort USB). Es geht um einen STM32 Temperatur und Feuchtigkeitslogger welcher die Daten in Tages-Dateien speichert YYmmdd.log Alle 24std gibts eine neue Datei. Ich habe viele einzelne Dateien welche aufgezeichnet werden, diese sind so ca. 30KB pro Stück groß. Wie macht man das nun ? Überträgt man immer Packetweise die Datei rüber? Oder gibts eine Methode wo ich nur die größe der Datei angebe und mein Transerfunktion
-
Thread
Rückgabe von ZWEI Werten aus einer Funktion
Lust auf Pointer hast, könntest du auch versuchen, die beiden Werte in einem zusammenzufassen: [c] uint32_t BeideWerte = 0; uint16_t Wert1 = 10; uint16_t Wert2 = 20; BeideWerte = Wert1 | (Wert2 << 16) [/c] Ist nicht getestet, aber so sollte dein Wert2 in den oberen 16 Bit des 32bit Werts
ich meinte sowas in dieser Art, keine Ahnung, ob "man" das so macht: [c]/* zaehltaste.c */ static int zaehlerstand = 0; void zaehlpin_abfrage (int pin_zustand) { static int alter_zustand = 0; if (pin_zustand != alter_zustand) { alter_zustand = pin_zustand
-
Thread
3stellige Zahl auf 3 7Segmente
Herrsche" Das währe die erste Aufgabe, die du lösen und in ein anspringbares Codesegment (das was in C ungefähr einer Funktion entspricht) gießen solltest. Die nächste Denkaufgabe die es zu knacken gilt ist, was der Laufindex deines ASM Arrays mit den einzelnen Ziffern deiner Zahl zu tun hat und dem
Gaestchen schrieb im Beitrag #3786012: > Oder du must den Wert vorher in eine vorzeigenbehafteten 16Bit > Variablen konvertieren. Hast du schonmal Assembler aufm µC programmiert?
-
Thread
7-Segment Display mit ATmega ansteuern
doch tatsächlich das Dokument des ATmega 16 gehabt, mea culpa. Beim ATmega 8 sind das die Portpins C0-C5, die zusammen sowohl 100 mA sinken als auch sourcen können. Portpin C6 und die restlichen Pins zusammen noch einmal 200mA. Somit ist die Verwendung der Ports nahezu beliebig für diesen Fall. Danke
>das ist allerdings der RESET-Pin. C6 wird ja nicht benötigt. 28-6 = 22 = 8+2*7, das reicht.
-
Thread
Retro Fieber: Z80 oder 68000 ?
Freundin ein paar Artikel zu dem Thema rausgesucht, vielleicht helfen sie ja (Heft/Seite/Titel): % c't 84/ 7 82 EPAC-80 (Prozessor Z80) % c't 84/ 8 93 Testprogramm für EPAC-80 (Prozessor Z80) % c't 85/ 3 47 Mehr als nur ein 16-bit-EPAC-95 (Prozessor TMS9995) % c't 85/ 3 52 EPAC-95 (Prozessor
Murks" bezog sich nicht auf Script vs. Makefile. Du könntest ja auch im Script den Compiler für jede C-Datei einzeln aufrufen. Mit Murks meinte ich das hier: [c] // Einbindung von weiteren Modulen. #include "driver.c" void main() { .... } #include "interrupts.c" // An das Ende des
-
Thread
3x LED-PWM-Faden
16-bit Timer zu besitzen. Hat jemand einen Tipp für einen passenden µC für 3*10-bit PWM? Danke! ;)
jna380 schrieb im Beitrag #3780102: > Hat jemand einen Tipp für einen passenden µC für 3*10-bit PWM? Zwei 16Bit-Timer (und damit 4 16Bit-PWM-Kanäle) haben z.B.: Mega1284P Tiny441 Tiny841
-
Thread
Drehgeber und Schrittmotor- 2 Riesenbaustellen im Programm
t val; cli(); val = enc_delta; enc_delta = val & 3; sei(); return val >> 2; } [/c] Problem 1: bei Höchstgeschwindigkeit (1450U/min) muss die "schnelle" Abfrage (TIMER0_COMPA_vect) so oft ausgeführt werden, dass kein Impuls verschluckt werden kann; bei 25U/s und 1024Impulsen/U sind
: > val ist bei dir int, also 16 Bit, da kann man DEUTLICH langsamer > abfragen, nämlich Faktor 32768. Die Variable, die abgefragt werden muss und überzulaufen droht, ist enc_delta, also nur 8bit. Überlege gerade, was gegen eine 16bit
-
Thread
Suche nach FPGA Board
c_divisor : INTEGER := 8192; signal c_sine_position_x : t_memory_position_x; begin c_sine_position_x <= (0 * c_rising_edges/c_divisor, ..., 2048 * c_rising_edges/c_divisor); -- enthält 65 Multiplikationen
wie Multiplikationen mit Integer gemacht werden, aber ich würde vermuten, dass c_rising_edges/c_divisor immer Null ergibt wenn c_rising_edges > c_divisor. Denn mit c_divisor = 8192 kann man schreiben c_rising_edges/8192, das ist das Gleich, wie wenn du c_rising_edges um 13 Stellen
-
Thread
Funktionsgenerator 7706 - Sweep reparieren
. Der Unregelmäßige Takt spricht etwas für Software SPI und 9 bzw. 11 µs passt auch auch etwa zur µC Geschwindigkeit. 20 Pulse passt aber nicht zu den 74HC... Schieberegistern: da sollen es eigentlich immer vielfache von 8 Pulsen sein (U600 könnte auch 7 Bits (notfalls 5) gebrauchen). Ein Teil könnte
dort dann wohl zum Sweepboard. Auf dem CPU-Board sitzt neben der CPU auch noch ein XC9572XL-7VQ64C im TQFP64-Gehäuse mit JTAG-Interface. Der wird wohl als Frequenzzähler genutzt. > Wenn die Daten für den 12 Bit AD sind, dann wohl als 4 Pulse für den > FPGA (um zu zeigen das es Daten für den
-
Thread
Wlan2Serial Modul für 5 euro
würde daher jetzt ergänzen/ändern: ergänzen in include/driver/uart.h typedef enum { BIT_RATE_312500 = 31250, .. } UarBaudRate; ändern in user_main.c void user_init(void) vorher uart_init(BIT_RATE_115200, BIT_RATE_115200); nachher uart_init(BIT_RATE_31250, BIT_RATE
++) { sar_dout += sardata[i]; } tout = (sar_dout + 8) >> 4; //tout is 10 bits fraction // // re-enables interrupts rom_i2c_writeReg_Mask(0x6C,2,0,5,5,1); while (GET_PERI_REG_BITS(0x60000D50, 26, 24) > 0); //wait r_state == 0 CLEAR_PERI_REG_MASK(0x60000D5C, 0x200000
-
Thread
Für was gehört der Pointer ?
+-+-+-+-+-+-+-+--+ | +-+-+-+-+-+-+-+--+ +-->|a|b|c|d|e|f|g|\0| +-+-+-+-+-+-+-+--+ [/code] Ein Array von Pointern unter dem Namen menu_strings, wobei jeder einzelne der Pointer auf einen Text zeigt. Man hätte natürlich auch ein
auf dein eigentliches Problem zurückzukommen: Du möchtest eine Menüstruktur mit Funktionen für einzelne Menüpunkte, sowie Untermenüs darstellen. Das Ganze soll auf einem µC laufen? Hast du nirgendwo erwähnt scheinbar. Arrays mit variabler Länge in structs gibt es zwar in C, ist aber eher ein spezial
-
Thread
Atmega8 Timer1 Interrupt Routine wird nicht angesprungen
möchte eine PWM erzeugen. Am Ausgang OCA1 ist eine LED angeschlossen. Der AD-Wandler ADC0 soll im 10-Bit Modus laufen. Die Interrupt Routine wird nicht angesprungen. Ich finde den Fehler nicht. Wenn mir jemand helfen könnte dem wäre ich dankbar. [c] #define F_CPU 160000000 #include <avr/io.h
den Kommentar umgesetzt, und siehe da es funktioniert. Dabei habe ich der Übersicht halber noch einzelne Änderungen durchgeführt. Der neue C-Code lautet folgendermassen: [c] #define F_CPU 160000000 #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h> volatile uint16_t buffer
-
Thread
LCD Ansteuerung (EIGENE INIT)
der erfahrenste programmmierer bin. Soll heißen 'learning by doing'. Ich benutze MPLAB mit dem C18 Compiler. folgendermaßen sieht es nun bei mir aus. [c]void LCD_INIT(void){ LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; DelayMS(15); PORTB = 0x30; //8-Bit
Byte, der Rest der ASM-Befehle im Datenblatt deines Controllers). Delay-Anweisung hast du ohnehin in C auch zur Verfügung und auf die Abfrage des BUSY-Flags kann man notfalls verzichten und ein Delay mit 1ms (oder weniger) einfügen.
-
Thread
ATmega644 Timer1 CTC-Mode Timerinterrupt unregelmäßig
Marc Vesely schrieb: > Hast du es mit geänderter Abfrage oder mit anderer Adresse versucht ? Es steht jetzt im Code: [c] GraphicWriteDataOnLcd(0); [/c]
Also, auch mit der geänderten Abfrage ( >= ) bleibt der Fehler bestehen.
-
Thread
Mikrocontroller-Programmierung in C: Effizienz vs. "Usability"
welches die notwendigen Funktionen zur Verwendung des Sensors bereitstellt. Der Sensor wird per TWI/I2C angesteuert und bietet eine Reihe von Registern für Einstellungen oder die Messdaten. Nun kann eine der Funktionen des "Treibers" sein, dass zum Beispiel das 8bit-Register CTRL1 des Sensors ausgelesen
Übergabe der Pointer der richtige Wert ist. Das schränkt meiner Meinung nach auch die Usability ein. [c] int lsm303d_chg_ctrl1(uint8_t* register_data, bool write) [/c] ... [c] lsm_data[1] = register_data; [/c] Was sagt eigentlich der Compiler dazu? Und wie sieht der Aufruf aus?
-
Thread
Atmega8 ADC \ eeprom
... else if ... [/c] ist ganz normales C, das jeder C Compiler versteht. Und durch den Wegfall der ganzen break ist das in Summe auch noch kürzer in der Schreibweise. Ich sehe hier keinen Vorteil in der Benutzung von irgendwelchen
Konvertierung warten } return ADCW; // ADC auslesen und zurückgeben } [/c]
-
Thread
Schleife durchlaufen und angezeigte Werte aktualisieren
Beenden bitte Enter druecken" schreiben? Wenn ich nun mit \n arbeite, schreibt er wieder jede Zeile einzeln untereinander. 2. Wie kann ich in der Schleife auf eine Tastatureingabe abfragen, OHNE dass er mich bei jedem Durchlauf danach fragt? Er soll einfach so oft die Schleife durchlaufen bis ich Enter
" ein mit [c] #include <windows.h> [/c] und dann kannst du mit [c] if(GetAsyncKeyState(VK_RETURN)) [/c] abfragen, ob Return gedrückt worden ist. Wenn du andere Tasten abfragen willst, kannst du nach "Virtual-Key
-
Thread
AVR Studio Overkill als Anfänger?
verstehen, bevor man eine Peripherie wie den DAC programmiert, aber man muß sich dann nicht mehr um jedes Bit einzeln kümmern, sondern kann den DAC mit ein paar Funktionsaufrufen (und entsprechender Parameterübergabe) konfigurieren.
, ob du lieber möglichst schnell irgendetwas lauffähiges zusammenkopieren willst, oder ob du jedes Bit verstehen willst?
-
Thread
Probleme Tachosignal Auswertung
aber erst später im Programm dieses BIT setzen und schreibe an die entsprechende stelle im Programm; [c] ADCSRA = _BV ( ADSC ); //Starte AD - Messung [/c] Wie verhalten sich die anderen BITS in dem Register, die ich ja schon vorher
, und NUR DIESES eine Bit zu setzen und alle anderen unverändert zu lassen, veroderst du das Bit [c] ADCSRA |= _BV( ADSC ); [/c] WEnn du 1 Bit gezielt auf 0 zwingen willst, dann wird es als 'Kehrwert' verundet [c]
-
Thread
HTML Befehl "senden"
die folgende Zeile enthält den Rückgabecode der Applikation. Sowas zu interpretieren, ist auch mit C-Stringfunktionen ziemlich trivial. Liebe Grüße, Karl
2014 21:16:37 GMT Server: Apache/1.3.33 (Unix) Last-Modified: Fri, 08 Aug 2014 20:47:18 GMT ETag: "c56175-1c-53e53756" Accept-Ranges: bytes Content-Length: 28 Content-Type: text/plain [/code] 200 ist der Fehlercode und bedeutet, das alles okay ist. Alles Andere erklärt sich weitestgehend von
-
Thread
Einige Verständnis Fragen zum TWI (I²C)
wir übertragen Bit für Bit Jain. In dem Sinne überträgt man immer nur Bit für Bit, allerdings sind die meisten I2C Librarys so geschrieben dass man direkt ein Byte an die Sendefunktion übertragen kann. Martin Kathke
der bits falsch verstanden > > | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 | > | ADRESSE | R/W | Danke, ja da habe ich falsch herum gedacht aber
-
Thread
Zyklisches Auslesen eines Dual Port RAMs (ATmega32 und Schieberegister)
vorzustellen. Die einfachste Vorgehensweise: 0.) RAM mit sinnvollen Werten initialisieren 1.) uC1 schreibt die Daten (alle 27 Byte) ins RAM (Dabei genügt als Adresszähler eine einfache Variable!) 2.) uC1 Schliesst den Datensatz mit einem "Alle Daten sind vollständig und OK"-Byte ab 3.) uC2
4.) uC2 setzt das Byte auf "RAM kann erneut beschrieben werden" 5.) uC1 setzt das Byte auf "RAM wird gerade beschrieben" 6.) goto 1.) Das ganze nennt sich dann "state machine". Darüber findest du sehr
-
Thread
Entprellschaltung entlädt Kondensator nicht?
Markus schrieb im Beitrag #3752796: > Zum Pollen meine ich im µC keine Zeit verbrauchen zu > können, da andere zeitkritische Aufgaben auf ihn warten Ein Erwachsener braucht typisch 300ms zum Drücken und 300ms zum Loslassen. Tasten abfragen/entprellen ist also
Einstellen von Werten (hoch- bzw. runterstellen) tippe ich für gewöhnlich mehrmals hintereinander einzeln, wenn mir der Key-Repeat-Delay oder die Key-Repeat-Rate zu langsam oder gar nicht vorhanden ist. > Tasten abfragen/entprellen ist also in keinster Weise zeitkritisch (<1% > CPU-Last). Ja, aber