-
Thread
DIY Frequency Counter mit 10 bis 12 Digits?
man ein paar Meter Koaxkabel dazwischen hat ). Aber da hilft ein Tiefpassfuilter in Pi-Schaltung ( C-L-C ). Ralph Berres
in der LIB ebenfalls 64 Bit Int und floats drin, da die schon mit 32 Bit rechnen wesentlich schneller.
-
Thread
Arduino Register abfragen
mich jetzt noch nicht alzu lange mit den Registern des Arduinos beschäftigt und hänge gerade beim abfragen einzelner Pins als Schleife. Dachte mir irgend etwas in diese richtung: for (short i = 0; i <= 3 ; i++){ Schalter_[i] = PIND & (1<<PD[i]); if (i == 4){
arduino hört sich nach gcc an, wäre da > nicht ... uint8_t ... besser? Naja... Es gibt auch viele 32 Bit Arduinos, bzw. über die IDE nutzbare µC. Da kann dann uint8_t oder byte evtl ungünstiger sein. Aber egal. Das ist Mikrooptimierung! Und damit in den seltensten Fällen interessant.
-
Thread
Problem: 16 Bit Variable über UART zu empfangen
Hallo liebes Microcontroller Forum, ich nutze einen ATMEGA88A-PU. UART, 8Data Bit; 1 Stop Bit; BAUD: 9600 Ich programmiere den Controller mit C im Atmel Studio. Dem Controller schicke ich über LabView 2 Byte. Zuerst das MSB dann das LSB. Die beiden Bytes füge ich auf dem Controller
); UCSR0C = (1<<UCSZ01)|(1<<UCSZ00); //Frame: 1 stop Bit, 8 data bits UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); //Aktiviere Sender(TXD) und Empfänger(RXD) sowie Receive Complete Interrupt.
-
Thread
PICKIT3 und pic16f54 in c Einfches Program scheitern beim Brennen
Algorithmus funktioniert. Daraus könnte man leicht eine Funktion machen, die die Helligkeitswerte der einzelnen LEDs anpasst: [c] uint16_t LEDwert[6]; // Helligkeit für 6 Kanäle, Wert in den oberen Bits! void WertAnpassung(uint8_t Kanal, uint8_t Ziel) { uint16_t ziel16 = Ziel << 8; int16
(9 Bit, im ganz unteren Bereich sogar feiner!). Mit Änderung der Zeile auf: [c] if(PWMwert[Kanal] != ziel16) // Ziel noch nicht erreicht: [/c] sollte es passen! Kannst vielleicht auch mal
-
Thread
RS232 over WiFi
meine Ergebnisse und damit Antwort an alle: Ja, ich brauche die 9600 Bd (mindestens) Ja, die einzelnen Nachrichtenprotokolle werden mit einer 16 bit Checksum abgeschlossen Ja, ich will/werde auf LAN/WLAN umsteigen (mittelfristig) Ja, ich habe die Ursache der aktuellen Probleme nun gefunden. Der
richtige C's am MAX für Ladepumpe? Es gibt welche die brauchen 1u andere kommen mit 100n aus.
-
Thread
STM32F405 int64_t lehren
Detlef _. schrieb im Beitrag #4793417: > Der STM32F405 kann keine 64Bit ints' nativ rechnen, der braucht dafür ne > Software lib, die muss irgendwo her kommen. Das ist dann die Runtimelibrary Deines C-Compilers.
Rufus Τ. F. schrieb im Beitrag #4793420: > Detlef _. schrieb: >> Der STM32F405 kann keine 64Bit ints' nativ rechnen, der braucht dafür ne >> Software lib, die muss irgendwo her kommen. > > Das ist dann die Runtimelibrary Deines C-Compilers. Ja. Erwische ich da die richtige?
-
Thread
Informationen zu C vs C++ / aka Futter für die Diskussion
<MCU>())) class Timer8Bit<N, MCU> : public TimerBase<MCU, N> {...}; [/c] womit sich Spezialisierungs-Orgien vermeiden lassen.
dem Thema Arduino: https://github.com/arduino/ mBed: https://os.mbed.com/mbed-os/ C++ library bit-fields: https://github.com/wkaras/C-plus-plus-library-bit-fields embxx https://github.com/arobenko/embxx jaxos: https://sourceforge.net/p/jaxos/code/HEAD/tree/trunk/
-
Thread
Speicherfragmentierung kein Thema mehr?
malloc()-Implementierung so erwartet: [pre] $ pwd /usr/src/contrib/jemalloc/src $ wc -l *.c 2365 arena.c 2 atomic.c 142 base.c 90 bitmap.c 395 chunk.c 197 chunk_dss.c 210 chunk_mmap.c 563 ckh.c 1673 ctl.c 39 extent.c 2 hash.c 313 huge.c 1873 jemalloc.c 2 mb.c 160 mutex.c 1283 prof.c 190 quarantine.c 67 rtree.c 549 stats.c 476 tcache.c 107 tsd.c 657 util.c 11355 total
-
Thread
Der richtige Antrieb für was großes
Spindeln können Schlupf und Verwindung der Gesamtkonstruktion nicht erfassen. Meine Idee ist ein I2C 6-Achen-Accelerometer/Gyroskop (Strapdown-IMU) an der Spindelaufnahme. Hat jemand Erfahrung bezüglich Genauigkeit und Drift bei 6-Achen-Accelerometern/Gyroskopen?
Korrekturberecnhung der lokalen Erdrotation mit ausreichender Genauigkeit und Geschwindigkeit durchführen und per I2C + IRQ-pin an die Steuerung übermitteln können (https://de.wikipedia.org/wiki/Tr%C3%A4gheitsnavigationssystem#Grundprinzip). Die Sensordrift könnte über regelmäßiges Anfahren der Referenzschalter korrigiert
-
Thread
Wieso gibt es keine gute Programmiersprache?
automatisch/ durchsetzt. Selbst forciert setzt sich das Bessere oft nicht durch. Es wäre ja auch für ein "C-Fan" ein Vorteil, wenn es eine bessere Alterative gäbe, aber er sieht halt tausend Gründe, warum für ihn C die beste Wahl ist. Das ist die Freiheit jedes Einzelnen.
Zeile denn sinnvoll sein könnte? Ich > wüsste nichtmal, was die überhaupt tut. p->x++ wenn irgendein Bit > innerhalb der Struktur nicht 0 ist? Die Zeile ist kein gültiges C, kann aber gültiges C++ sein. p ist ein Pointer auf ein Struct (sieht man an p->x). Ein Struct kann in C nicht nach bool konvertiert
-
Thread
mal wieder: Spass mit Linux Gesperrt
Nacht! :-) http://www.jimbeam.com/sites/default/files/product/8188_JBRS_Straight_R1_EURO_0.png?crc=9c6c58b5
wird aber in die Richtung breite Masse gehen. http://www.erziehungskunst.de/typo3temp/pics/3789c1c7d8.jpg
-
Thread
RS485 bus mit Fleury Uart
[c] while(1) { received = UDR0; [/c] Da fehlt jeglicher Test, ob überhaupt ein neuer (gültiger) Wert im UDR drin ist. Du liesst da u.U. Zwischenwerte aus, falls die Bits von der Hardware einzeln
hab mit der debug led folgendes festgestllt: in der ISR wird die erste if-Abrage durchlaufen [c] if (NET_UCSRA & ((1 << FE0) + (1 << DOR0))) [/c] geht in die nächste if-Abfrage rein [c] if (NET_UCSRB & (1 << RXB80)) // OK mit 9. bit [/c] und bleibt schließlich bei der Adressabfrage hängen
-
Thread
Automarer Zugriff auf 32-Bit Variable die in einer ISR verändert wird
= iieks; L = Ticks; if (iieks!=gieks) L = iTicks; return L; } [/c] Das sieht zumindest sparsamer aus auf einer 8 Bit Maschine als ein nachträglicher Vergleich von zwei 32 Bit Zahlen. Und es kommt ohne Interrupt-Beeinflussung aus. W.S.
Was ich mit dem Ganzen sagen will - ob Abfrage eines Flags oder Kopiervorgang einer 32-bit-Variable. Wir kommen von den Takten her auf (beinah) das Gleiche. P.S.: Der PCINT-Fall war nicht auf den ATmega8 bezogen, da er keine Interruptvektoren
-
Thread
Globale Varriable
`main': C:\AVR_Studio\Varriable\default/../Varriable.c:14: undefined reference to `BERE' C:\AVR_Studio\Varriable\default/../Varriable.c:14: undefined reference to `BERE' C:\AVR_Studio\Varriable\default/../Varriable.c
dass du nicht durcheinanderkommst, wie zum Beispiel bei der Portzuweisung PORTC = a. Portregister C hat nämlich 8 Bits, also ein Byte. Deine Variable a ist vom Datentyp int, also int16_t, was also 16 Bits oder zwei Bytes entspricht. 6.) Übe fleißig und programmiere viel. Verwende nicht nur eine
-
Thread
Seriell Schnittstelle Steuerleitungen
Hi, ich muss die Steuerleitungen der seriellen Schnittstelle recht zeitkritisch abfragen. Da ich das nicht unbedingt per Polling machen will, die Frage: Gibt es für C unter Linux da eine Interrupt-gesteuerte Möglichkeit? LG traffic
/tty_ioctl.4.html [code] TIOCMIWAIT int arg Wait for any of the 4 modem bits (DCD, RI, DSR, CTS) to change. The bits of interest are specified as a bit mask in arg, by ORing together any of the bit values, TIOCM_RNG, TIOCM_DSR, TIOCM_CD
-
Thread
Wie mach ich das am schlausten? Lochstreifen einlesen mit ATmega16
LS1 rjmp bit1_1_1 ;wenn LS1 gesetzt, dann zu bit1_1_1 springen sbis PIND,2 ;Abfrage LS2 rjmp bit2 ;inzwischen gesetzt? dann weiter zu bit2 rjmp bit1_1 ;nicht gesetzt dann weiter abfragen bit1_
trotzdem etwas ändert, sollte man auch das geänderte Prog posten. > Das Blech steht jetzt bei c0 auf dem bild. Müsste ich jetzt nicht erst > sbis Licht,clock abfragen um dann das erste Bit einzulesen? Nein, denn dein Blech steht jetzt nicht bei c0, sondern bei b0. > Was der > Befehl "ror
-
Thread
AVR und C++ - ein Versuch
if (check.isHigh()) led.setLow(); else led.setHigh(); } } [/c] Die einzelnen Pin-Anweisungen sind jetzt in C und C++ identisch (auch in der lss-Datei. Für mich eine Basis, den Rest daran anzupassen :)
interruptsPerSecond) { if (!ticker) { ticker = this; // only the first call shall setup the 16bit timer! setupTimer(interruptsPerSecond); } }; [/c]
-
Thread
Kommunikationsprotokoll als Baum definieren?
Unterbefehl sein soll, ist mir ein bißchen unklar. Ich habe Befehle von 0x10 - 0x70, bei Antwort wird bit7 auf 0 gesetzt, demzufolge gehen mögliche Antworten von 0x90 - 0xF0. Befehle 0x00-0x0F und 0xF1-0xFF sind reserviert. Mit bits4-6 werden 8 Gruppen bezeichnet, jede mit 16 Befehlen und es wird
Protokoll Zustandslos zu entwerfen. Also, dass die Packete unabhaengig voneinander sind, und auch einzeln wiederholt werden koennen. Das bedeutet dann zB, dass bei einem Datentransfer eine Blocknummer dabei ist, jeder Block einzeln abgefragt werden kann.
-
Thread
Suche einen kleinstmöglichen 4 to 1 mux
Port wird auf Ausgang gestellt die beiden anderen sind Eingaenge Dann kann man immer 2 Tasten abfragen, dann den naechsten Port auf Ausgang und 0 ausgeben und die beiden anderen abfragen Mit 3 Ports kann man dann 6 Tasten abfragen ohne Multiplexer.
> Ich habe 4 Taster doch nur 3 pins am uC. Mit 3 Pins kannst du 6 Taster abfragen. Abschnitt: 4. Matrizen mit weniger Portpins. https://www-user.tu-chemnitz.de/~heha/Mikrocontroller/Tastenmatrix.htm
-
Thread
Datentyp für Strings
auf dem gleichen Compiler mit verschiedenen Architekturen unterschiedlich. Wenn du Mathe mit 8 Bit machen willst, dann (a) nimm uint8_t und int8_t (b) nimm explizit "unsigned char" oder "signed char" (c) geh in den nächsten Getränkeladen. SCNR
hier genau eine Zuordnung definiert. (https://de.wikipedia.org/wiki/Unicodeblock_Lateinisch-1,_Erg%C3%A4nzung) Es ist aber unüblich, mit einer 8-bit Zahl Unicode >127 darzustellen. Mit UTF-8 wäre eine 200 kein einzelnes Zeichen sondern der Auftakt für ein Multibyte-Zeichen, also die nächsten 8-Bit
-
Thread
AVR als EPROM benutzen (C-Optimierung)
hören. Aber meine "Competition" war eher "schneller kann nur der Assembler-Mann". Und ich mag eher C++ als C.
nicht, was ihr so für Zeugs schreibt, bei mir ist > aber selten etwas so Zeitkritisch, dass es auf einzelne Takte ankommt. Ja, das "Problem" kenn ich. Mir liegt C auch eher als ASM und ich hatte bisher nur ein einziges Projekt wo es auf jeden Takt ankam.
-
Thread
Displays mit integriertem Controller + SPI - Wo?
laufen. (printf schreibt nur in einen buffer) Da kann soetwas schon etwas weh tun wenn man nicht die Bits einzeln in einem TimerIRQ rauswerfen will. Olaf
Olaf schrieb im Beitrag #4748600: > Da > kann soetwas schon etwas weh tun wenn man nicht die Bits einzeln in > einem TimerIRQ rauswerfen will. Das ist im I2C Fall unerheblich da der I2C Bus langsamer ist als der Prozessor. Im Software-Fall braucht man Delays um das Timing einzuhalten, im
-
Thread
Asuros fahren nicht
PrintFloat (float wert, char vorkomma, char nachkomma); /**************** Taster Funktionen switches.c ******************/ /*! * \~english * \brief function to read out switches * \return bitfield of switch value bit0 = K6, ... , bit5 = K1 */ unsigned char PollSwitch (void); /*! * \~english
Gibt scheins Probleme mit Win10 64bit *> "C:\Users\Desktop\GccApplication1\test\Test\\Test-all.bat" all C:\Users\Desktop\GccApplication1\test\Test>make all set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields
-
Thread
endet die Ära der Verbrenner schon in 14 jahren,
Zeiten sind bald vorbei. Können sich immer weniger leisten. Schon jetzt zählen viele die halben Grad einzeln ab.
Ändert nichts dran, dass Herr Carnot behauptet, der Wirkungsgrad eines Verbrenners mit 800°C zu 100°C könne maximal 60% betragen. Um auch nur annähernd an einen Wirkungsgrad von 90% zu kommen müsste man die Verbrennungstemperatur auf 3500°C erhöhen. Das ist eine Grenze, die physikalisch gegeben
-
Thread
for(;;) bedeutung?
Die einzelnen Einträge der Tabelle bedutet: K: Kategorie (zur Referenzierung im folgenden Text) C: Sprache aus der C-Familie P: Entsprechende Sprache aus der Pascal-Familie V: Vollständigkeit der Sprachimplementierung
für Speicheroptimierung / Geschwindigkeit z.B. Atmel AVR4027: Tips and Tricks to Optimize Your C Code for 8-bit AVR Microcontrollers Im Endeffekt was der Compiler aus dem C Code macht. Sprich for (;;) wird vom Compiler "am Besten" umgesetzt.
-
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
Nötige Takte für Codeabschnitt herausfinden
Danke für eure Rückmeldungen! Mir wäre es schon Recht, wenn ich zu einem bestimmten Abschnitt C-Code den Assembler Code angezeigt bekommen könnte. (Dann könnte ich natürlich mit Hilfe einer Tabelle schauen, wie lang die einzelnen Befehle brauchen und es addieren) Gibt es dazu eine (einfache)
Gerüst mache ich in ASM und wenn > mal wirklich eine harte Nuss kommt (z.B. JPEG Handling, wo es nur C Libs > gibt), dann binde ich ein C-erzeugtes Objekt ein. Nur für den Fall (wenn's für AVR 8-bit sein soll): https://www.mikrocontroller.net/topic/384844#new
-
Thread
kurzer Denkanstoß zur Pin Ansteuerung per Uart im ATMega
und PORTB 0 bis 5 sind LED mit Treiber Transistoren. Jetzt würde ich gerne die LED per UART einzeln ein und aus schalten können. Was wäre eine einfache und simple Comandozeile, mit wenigen Byte? [code] einschalten: C12C14 -> PortC 2 an, 4 an. ausschalten: C02C04 -> PortC 2 aus, 4 aus. [
. Reicht doch wenn ihn der ATMega kennt! :) Man könnte ihn natürlich auch über selbigen Weg abfragen, wenn wirklich notwendig. Warum für ein Bit ein ganzes Byte verschwenden? Bit7 = Port; Bit6 = on/off; Bit5-0...... Oje, halb vier, egal wird schon passen ;)
-
Thread
STM32F4: BMA020 per SPI
erstes 0x8600 geschrieben: Es wird also ins Register 0x06 nur 0x00 geschrieben, die 8 ist das Write-Bit. Wenn der SPI auf 8 Bit eingestellt ist, könnte man alternativ auch schreiben: [c] CS_Low; // Schreibbefehl an Register 0x06 SPI_Write(SPI1, 0x86); // Schreibe 0x00 in Register 0x06 SPI_Write
allererstes habe ich ein Flag definiert. Dieses markiert, ob die Startsettings geladen wurden. [c] #define BMA020_SET_SUCCESS 1 #define BMA020_SET_FAIL 0 [/c] Danach habe ich eine if-Abfrage geschrieben, welcher dieses Flag abfragt. [c] void bma020_READ_DATA(void) { if (bma020_setting_flag
-
Thread
UART Ring Buffer volatile?
aber nicht zwingend durch die Hardware atomar ist, muss in eine critical section. Das betrifft auf 8 Bit-Architekturen Read- und Write-Pointer. (3) [c]asm volatile ("" : : : "memory");[/c] sagt dem Compiler, dass der Speicher gerade unvorhersehbar geändert wurde und /alle/ in Registern gecachten Werte
zu unterbinden trachtet). Das heißt, du trennst es in eigene Funktionen, die du alle in separate C-Files schreibst, nur damit der Compiler kein Inlinig betreiben kann und du dir so das volatile sparen kannst? Und dann kommt gcc -flto und betreibt Inlining über die Grenzen der einzelnen C-Files hinweg
-
Thread
Pause im Interrupt
die Millis ab, ob der Rest gerade 0 ist und solange deine Variable nicht 0 ist, wird geblinkt. [c] if(blink != 0) { if((Millis % 500) == 0) { TOGGLE_LED; blink = blink - 1; } } [/c] Kannst es auch c-typisch so schreiben: [c] if(blink) { if(!(Millis % 500))
("Endschalter links"); b = 1; } [/c]
-
Thread
CAN Bus fifo
einer Struktur verwaltet braucht man mehr pointer, muss alle Fktion erweitern usw. Man hat ja max 4x8Bit für die CAN ID, zwischen 0 und 8x8Bit für die Daten und einmal 8Bit für dlc + ggf. weitere Parameter. Das muss ja alles programmiert werden. Legt man für jedes einen FIFO an, spart man das und muss
, block_size); [/c] Theoretisch müsste ja dann als erstes 1, dann 2 usw. aus dem fifo "kommen", wenn man einzeln abruft. Ich erhalte allerdings 2,3,4,1 nach ein paar Durchläufen. Mit Durchlauf meine ich array in
-
Thread
Befehlssatz der bo8-CPU - was ist gut, was ist schlecht
von hier http://www.bomerenzprojekt.de/Website/Downloads.html die ersten neun ZIP-Dateien¹ einzeln heruntergeladen, alle einzeln ausgepackt, einzeln umbenannt² und die C-Dateien einzeln kompiliert³ hatte, habe ich es immerhin geschafft, das Programme emul zu starten. Nach einer eindringlichen
gemeinsamen Teil nur einmal > im Download-File gespeichert und würde dann in der Dokumentation > zu den einzelnen Programmen beschreiben, wie man den gemeinsamen > Teil in die einzelnen Dateien hinein-kopieren muss? Nein. C unterstützt Funktionen: http://www.c-howto.de/tutorial/funktionen/
-
Thread
Udoo Quad // Programmieren einer Dartscheibe
werden, haben wir einen Durchgang zwischen A0 und B0. Wir bekommen es einfach nicht hin, die einzelnen "A"s und "B"s für eine Mehrfach Belegung abzufragen.
. möglicherweise aber an den Ports (Arduino-Kompatibel ???) oder an der "Dart-Matrix" bzw. deren Abfrage. Logik-Analysator ist euch bekannt? Ich frage nur, weil Google scheinbar nicht bekannt ist ...
-
Thread
Fragen zu meinem Batterietester
Register wie ADC oder TCNT1. Aus: https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#16-Bit_Register_.28ADC.2C_ICR1.2C_OCR1x.2C_TCNT1.2C_UBRR.29 Bitte tue Allen einen Gefallen und arbeite das Tutorial durch.
schrieb im Beitrag #4729563: > Aus: > https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#16-Bit_Register_.28ADC.2C_ICR1.2C_OCR1x.2C_TCNT1.2C_UBRR.29 > > Bitte tue Allen einen Gefallen und arbeite das Tutorial durch. werd ich auf jeden fall auch noch machen. Dieter F. schrieb im Beitrag
-
Thread
internen RC Osci syncronisieren
gleich eingestellt sein. Moment: Das muß ich jetzt mit dem Baudratentakt machen. Nicht mit dem µC Takt. Wenn ich zum Bsp. 250kBit/s einstelle, dann dauert ein Bit 4µs, heißt aller 8µs eine positive Flanke zum zählen. Wenn ich nun soviele "0x55" hintereinander für 1ms Dauer ohne Pause rausschicken
nicht niedriger, wenn er schneller durch die ISR kommt? Kostet der Vergleich wirklich 200 Takte? [c] if ( (~reg & 0b00000100) & (1<<PINA2) ) { // prüft ob Pin Bit.2 Low Counter++; PulsCounter = Counter; } [/c] Danach habe ich die Verzögerung zum Timer stoppen verkürzt. [c] ISR(PCINT0
-
Thread
include in include (oder wo sonst?)
.. #endif [/c] über die einzelnen Header verteilt. Die habe ich nun zusammengepackt, damit ich nicht jedes mal neu im gesamten Projekt gucken muss, wenn ich eine neue EEPROM-Seite implementieren will. Jetzt
kribbelt es mich allerdings irgendwie in den Fingern beim Einfügen der include-Direktiven in den einzelnen Header-Dateien. Include ich jetzt korrekterweise die MagicIds.h aus den Headerdateien (Drive.h/ Lidar.h/ Physics.h) oder aus den verwendenden c-Files? Funktionieren würde beides, jedoch bin
-
Thread
AVR Interrupt Processing - was ist besser ?
... und wenn du es perfekt machen willst, dann packst du die Abfrage auf "iFlag" nicht in DoComputation(), sondern _vor_ den Aufruf von DoComputation in die While-Schleife. [c] while (1) { DoSomethingStupid (); if ( iFlag ) { iFlag=false; DoComputation
oder ein anderes ungenutztes Register im unteren Registerbereich, was man dafür nehmen und 8 Flag-Bits unterbringen kann. Hat zusätzlich den Vorteil dass man diese Flags mit nur einem Maschinenbefehl setzen/löschen/auswerten kann. In der Endlosschleife in main() steht dann nur sowas in der Art: [c]
-
Thread
* C++ == C++ *
type name 'uint33' > t.c:15:3: warning: overflow in implicit constant conversion [-Woverflow] dann taugt dein compiler (einstellung) nicht für ein 33 bit integer type
Ich kann damit leben das C vor der Abfrage = 0 ist, "A is A" raus kommt und am Ende in C 2 zu finden ist, das ergibt Sinn. Wer meint das anders sehen zu wollen kann das gerne machen. Das ein solcher Konstrukt in der Praxis
-
Thread
Serielle Schnittstelle
Ob das ein gute Idee ist? [c] int RS232_putchar (char c, FILE *stream) { /* Check on NEWLINE */ if (c == '\n') { RS232_putchar ('\r', stream); } /* Wait until previous character is sent */ loop_until_bit_is_set
abbrechen TWCR = ((1<<TWINT) | (1<<TWSTO) | (1<<TWEN)); //Stop return retVal; } [/c] Diese Funktion rufe ich dann in einer For-Schleife auf und gehe die einzelnen Addressen durch. [c] for (uint8_t i = 0x00; i < 0x41; i++) { test = i2c_check(0x40); if (test == 2
-
Thread
Docs zu PC Floppy 3.5 720er und 1440er Format?
Spur zu detektieren. Übliche Floppycontroller waren NEC µPD765 bzw. in späteren Inkarnationen WD 37C65. Der ST verwendete einen WD 1772, der nur 500 kBit/sec Datenrate und damit eben keine "HD"-Disketten unterstützte. Das Thema Disketten, Controller etc. wurde in diesem Thread schon mal beleuchtet
möglich. Der Indeximpuls kommt genau einmal pro Umdrehung. Die genaue Synchronisation auf die einzelnen Sektoren macht eh' der FDC, damit ist das ausreichend genau. > Soweit ich weiss benutzt z.B. der C64 kein Hole sondern > eigene Sync-Worte auf der Floppy. Der verwendete ja auch aus Kostengründen
-
Thread
Dash button: hackable?
Warum wurde um den SAM µC eine schwarze Masse aufgetragen?
Kann man den µC nicht auch komplett runterlöten, dann das Pad von Pin3 entfernen/Isolieren und den µC wieder einlöten?
-
Thread
Wert merken, wenn Controller von Spannung abgetrennt wird
Dafür ist das da. Alternativ: Batteriegepuffertes RAM, oder FERAM ... Da Du aber nur ein einzelnes Bit speichern willst, kannst Du auch ein /bistabiles Relais/ verwenden. Das ist dann wenigstens auch noch mechanisch.
merken kann? Sodass > ich das Bauteil an meienm Mikrocontroller anschließen kann und dann den > Pin abfrage (High oder Low). Warum verwendest du einen µC, wenn du ihn offensichtlich nicht verwenden willst - um es mal überspitzt zu formulieren?
-
Thread
Servo Ansteuerung
sich aber nichts. Es wäre nett, wenn jemand einen Blick drüber wirft und mir einen Tipp gibt. [c] /* Alle 20ms (periodenlänge) einen Impuls senden--->f=50Hz Links --> Pulsweite: 1ms Mittelstellung --> Pulsweite: 1.5ms Rechts --> Pulsweite: 2ms Timer Konfiguration: Timer1: 16Bit Timer zählt
Habe den Code korrigiert und der Servo bewegt sich trotzdem nicht in die eingestellte Position. [c]/* Alle 20ms (periodenlänge) einen Impuls senden--->f=50Hz Links --> Pulsweite: 1ms Mittelstellung --> Pulsweite: 1.5ms Rechts --> Pulsweite: 2ms Timer Konfiguration: Timer1: 16Bit Timer zählt
-
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
-
Thread
ESP8266 mit DHT11 Sensor -> HTTP-GET request
== 1 and c < 100) do c = c + 1 end -- Step 3: DHT11 send data for j = 1, 40, 1 do while (gpio_read(pin) == 1 and bitlength < 10 ) do bitlength = bitlength + 1 end bitStream[j] = bitlength
So sollte es eher klappen. Edit: Die ganzen einzelnen conn:send gehen schief. Mach einen großen String daraus, indem du immer mit ".." anhängst. Also ein großes conn:send. [c]conn:send("GET /update.php?soiltempc="..temperature.."&soilhumidity="..
-
Thread
Display: Unterschied zwischen character mode und graphic mode?
die Position vor (X und Y) und das Zeichen (z.B. 'A'). Im Grafikmode kannst/musst du jedes Pixel einzeln setzen somit kannst du dort alles darstellen was du willst. Auch da kannst du Text erzeugen musst den Zeichensatz dazu aber in deinem Controller vorhalten. Sascha
auch nicht. Vielleicht geht es auch mit brlo oder Knopf an die Backe nähen und irgendwelche Flags abfragen, was es - auf Teufel komm raus - noch so zu bieten hat. ---- Es geht mit folgenden 16-Bit-Schleifen IMHO besser und übersichtlicher. (Die Befehlsdurchläufe lassen sich wenn gewünscht, besser berechnen
-
Thread
Bandbreitenbeschiss
Uhu U. schrieb im Beitrag #4683964: > Den Bits sieht man nicht an, mit welcher Technologie sie transportiert > wurden Doch sieht man, dein ADSL-Modem wird die VDSL-Bits nicht verstehen ;) Und kaufmännisch ist es doch verständlich, zum einem
Fra N. schrieb im Beitrag #4687421: > Und DSL mit 12kBit/s +- 10% > > Das ist ehrlich. Und sinnfrei... Nochmal: Vor dem Schalten der Leitung, die aus mehreren Teilstücken besteht, kann man nicht sagen, was sie hergibt. Zumal die einzelnen Teilstücken