-
Thread
Probleme mit Temperatursensor DS18B20
Wertigkeiten 8 4 2 1 1/2 1/4 1/8 1/16 enthält. Das obere Byte mit den Wertigkeiten <5 gleiche Sign Bits> 64 32 16 lässt Du dann entfallen. 20° -16 = 4 => LSB = 64 (1/16°) 64 / 2 = 32 Da meine DS18B20 gerne 1 bis 2°C mehr anzeigen, haut 40 - 50 hin.
dazu, dass der nachfolgende Befehl von allen ICs im Bus ausgeführt werden soll. Will man einen einzelnen IC ansprechen, so sagt das Datenblatt sende &H55 und danach die 64-Bit Adresse des ICs. In BASCOM würde das so aussehen: [code] Dim DS18B20-ID(8) As Byte 1wreset 1wwrite &H55 1wwrite DS18B20
-
Thread
Es geht einfachnicht in meinen Kopf rein.
r16,PortC ; Inhalt von Port C ins Register 16 sbr r16,192 ; Bit 8 und 7 setzen 128 + 64 sbis PIND,PIND5 ; Überspringe den nächsten Befehl, fals Bit 5 in PIND gesetzt ist cbr r16,128 ; Bit 8 löschen
@Holger P. Dein Code [avrasm] lds r16,PortC ; Inhalt von Port C ins Register 16 sbr r16,192 ; Bit 8 und 7 setzen 128 + 64 sbis PIND,PIND5 ; Überspringe den nächsten Befehl, fals Bit 5 in PIND gesetzt ist cbr r16,128 ; Bit 8 löschen
-
Thread
Wie funktioniert die Erkennung beim Hörstift TING?
wenn man zu C gehe muss. Bei den Code für B steht dann z.B. 6002: - $1 == 1? $1 := 2 P(gut_so) P(jetzt_zu_C) - $1 < 1? P(das_war_zu_voreilig) - $1 > 2? P(hier warst du schon) 3. Sorry, da musst du
12838; 6841/7160 are disabled. Audio Table entries: 770 Audio table repeated twice Checksum found 0xC1A64BA3, calculated 0xC1A64BA3 St_germain
-
Thread
SD-Card an MSP430F1612 (wieder mal.)
PowerUp CS_HIGH(); for(i=0;i<=9;i++) spiSendByte(0xff); return (mmc_GoIdle()); } [/c] 1) Muss es nicht im Kommetar heissen, dass P5.0 ein INPUT ist, denn in der Funktion mmc_ping (mmc.c) wird das erste Bit des Ports 5 abgefragt...also INPUT??? Ausserdem Wird ja per P5DIR |= 0x1A;
rein! Könnte Dir eventuell andere Variablen in Prog zerschießen! 2.) >Das sollen doch die einzelnen Bytes sien, oder? aber warum ZWEI stellen? >Nen Byte sind doch ACHT bit. mit 8Bit kanns'te Werte von 0 bis 255 darstellen. Die ZWEI Stellen sind im hex-Format und gehen von 0x00 bis 0xFF, das
-
Thread
"State Machines": Anzahl States minimieren oder maximieren?
Vielleicht mal nen Blick auf die Implementierung werfen. 1.Fall [c] { SetRelaisOn(); Wait3m(); int x= GetBrightness(); if (x >= Limit) DoSomething(); else DoSomethingElse(); } [/c] Irgendwie lässt sich das so ganz ohne Statemachine
komplexen Statemachines Die moderne Variante davon ist ein Summentype der alle States abbildet. [c] using sm = variant<State0, State1, State2, ...>; [/c]
-
Thread
Mega32 mit VS1011 und SD-Karte -> Es will einfach nicht
20*10mS = 200 mS delay(10000); // 10 mS // set SW reset bit buf[0] = 0x04; vs1001_write(0,1,buf); // set bit 2 for (i=0;i<2;i++) // 2*1mS = 2 mS delay(1000); // 1 mS //loop_until_bit_is_set(DREQ_PORT , DREQ_PIN); //wait
0x45 -> DREQ) - Immer 32 Byte von der Datei lesen, Bsync-Pin auf 0, SPI senden, Bsync auf 1, DREQ abfragen, neue Daten lesen ... Hab ich da irgendwo was falsch verstanden? Es kommt nämlich gar nichts, kein Knacken, nichts. Dann hab ich heute mal die FuseBits nochmal ausgelesen. Dachte eigentlich,
-
Thread
[C] Programmablauf funktioniert nicht richtig - Fehlerhafter Ablauf?
Programiermodus ist, soll die LED 3 (PB2) blinken und kein Umstellen der Servos mehr erlauben. Der Timer0 (8-Bit) dient dazu, die Taktperiode von 25ms zu generieren. Da es nur ein 8-Bit ist, musste ich mir etwas einfallen lassen, um auf 25000 Impule zu kommen. Der Timer1 (16-Bit) dient dazu, die Impulsweite
kann. Ich habe mich bei der Entwicklung an dem Code von dem Stefan Windgen orientiert und bei der 8-Bit versucht, die einzelnen Register aus dem Datenblatt zu lesen. Da mein Englisch aber für die Tonne ist, kann es sein, das ich den ein oder anderen Registereintrag falsch gesetzt habe. [c] TCCR0B
-
Thread
Serielle Schnittstelle
} [/c] Blackbird
data output (readable) |7|6|5|4|3|2|1|0| ports 278, 378, 3BC | | | | | | | `---- data bit 0, hardware pin 2 | | | | | | `----- data bit 1, hardware pin 3 | | | | | `------ data bit 2, hardware pin 4 | | | | `------- data bit 3, hardware pin 5 | | | `-------- data bit
-
Thread
SVPWM Ansteuerung eines BLDC
es geht besser als ich dachte. Trotz wild west Verkabelung habe ich nur ~5 Counts "rauschen" mit 10bit ADC. Jetzt kann ich auch mal mit der Vorwärts Clark und Park spielen. Habe mir noch INA213 (kosten nur 2€ etwas bei C) besorgt aber die passen nicht auf die SMD Adapter die ich eigentlich benutzen
voll wird Oder die FPU Einheit mit dem Rechnen nicht fertig wird, sich aufhängt, aber der Rest des uC's weiter läuft? Ist natürlich nicht optimal mit Floats zu rechnen, aber dafür ist das Programm für mich viel leserlicher und die Werte nachvollziehbarer. PWM läuft mit 12 Bit Auflösung. Mal schauen
-
Thread
myAVR PORT Expander
sollte wenigstens in etwa wissen, wo es lang geht. Man kann z.B. die jeweils 2 Ports auch als 16-Bit-Port benutzen; Je nach Anwendung kann das günstiger sein. um die Ports einzeln ansprechen zu können, würde ich twiInitPCA() z.B. so ersetzen (ich kann mangels Chip nichts testen): [c] #define
myavr workpad plus gibt es codebeispiele und auch die der TWI. aber zunächst zu deinem code: [c] #define ADDRESSMASK 0b00001110 // ??? #define PORTMASK 0b00000001 // ??? // DDR einzeln setzte, port=0..15; je 2 auf einem PCA9555 void twiInitPCA_DDR(uint8_t port
-
Thread
miniLa Software
notfalls hin zum Kühlkörper. Es haben sich bei mir auf meinen Bord max. Temperaturen von ca 53°C eingestellt. Wigbert
Eine statisch gelinkte wäre toll. Ich habe ein 64 Bit System, da ist das immer ein bisschen Geprügel...
-
Thread
RFM12 FIFO Empfangsproblem
Frage, warum ich nur die ersten zwei gesendeten Bytes empfangen kann. Ich vermute, dass der RFM12 16bit in den FIFO überträgt und di nächsten 16bit können nicht in den FIFO geschrieben werden. Kann es evtl. noch ein Timing Thema sein, dass ich den FIFO schon zu früh abfrage? Kann es möglicherweise
write(0x94A0); rfm12_write(0xC2AC); rfm12_write(0xCA81); rfm12_write(0xCA83); rfm12_write(0x9850); rfm12_write(0xE000); rfm12_write(0xC800); rfm12_write(0xC000); }[/c] Zum Interrupt: Ich
-
Thread
STm32Fxxx: I2C Hardware Experten gesucht
bleibt da hängen, wenn das EEPROM mit seinem internetn Zyklus befasst ist. Gruss, Christian [c] /* --------------------------------------------------------------- Schreibt ein Byte in eine einzelne Adresse Eingabe: Nr. des EEPROMs (0 und 1) 16 Bit Adresse 8
(I2C1, ENABLE); if (I2C_WaitForEvent(200, I2C_EVENT_MASTER_MODE_SELECT) != SUCCESS) return ERROR; // Adressiere das E2PROM I2C_Send7bitAddress(I2C1, EE, I2C_Direction_Transmitter
-
Thread
Ab wann lohnt sich ein 32bit Controller? Compilerkosten?
Zyklen long + long - Zeit 16bit 10 Zyklen - Zeit 32 Bit ??? Zyklen long - long - Zeit 16bit 5 Zyklen - Zeit 32 Bit ??? Zyklen [/c] Dann könnte ich den Zeitvorteil in etwa abschätzen. Uart / LCD wird nicht ausgeführt.
Versuch unternommen ein paar Controller zu vergleichen. Habe letztens auch mal einen PIC32 (80MIPS/32Bit/C32) mit einme PIC24 (40MIPS/16Bit/C30) vergleichen. Bei reinen 16 Bit Berechnungen war der PIC32 ca. doppelt so schnell, wenn man mal von den Spezialfunktionen der dsPICs absieht. Sobald dann aber
-
Thread
Analoges Projekt auf MC umrüsten. Frage zu PIN Zuweisungen.
mehreren LEDs programmiert, per Codierschalter die Geschwindigkeit einstellen, am Analogport ein Poti abfragen und alles schön einzeln abgespeichert. Dann, erst dann, eine reale Anwendung, die meine zuvor erarbeiteten Grundlagen benutzt hat. Nach vielen Jahren ohne µC, wegen beruflich anderer Aufgaben,
Ein Port (D) hat statt 8 nur 7 Bit. ciao gustav
-
Thread
Welches memcpy ist schneller?
dst++ = *src++; #endif } #else #pragma message("solution not implemented") #endif [/c]
Implementierung) nutzen? *) Siehe z.B. https://github.com/gcc-mirror/gcc/blob/master/libgcc/memcpy.c
-
Thread
Taschenrechner: ATmega1284p - 15x 7-Segmentdisplay
int96.html > > In Modulus(..) befindet sich die Routine zur Division von CInt96. Also das da: [c] Remainder.Zero(); for (int i=0; i<96; i++) { Remainder += tempDividend.GetBit(i); BOOL bBit = (Remainder >= tempDivisor); Quotient.SetBit(i, bBit); if (bBit
res = temp; } add >>= 1; // shift right the 'additional' bit } return res; }[/c]
-
Thread
ATmega8: Das Buch
gesetzt. Das passt nicht zusammen. Am besten diesen Abschnitt komplett löschen. "Man kann in C auch einzelne Bits manipulieren, nur wer braucht so etwas schon in halbwegs normalen Programmen? Schlicht niemand! Wer hat das Problem, dass er aus seinem PC auch noch das letzte bisschen Geschwindigkeit
Helmut S. schrieb im Beitrag #3938862: > "Man kann in C auch einzelne Bits manipulieren, nur wer braucht so etwas > schon in halbwegs normalen Programmen? Schlicht niemand! Wer hat das > Problem, dass er aus seinem PC auch noch das letzte bisschen > Geschwindigkeit
-
Thread
E2PROM Atmel AT24C512 - Was ist da anders?
, ENABLE); if (I2C_WaitForEvent(I2C_EVENT_MASTER_MODE_SELECT) != SUCCESS) return ERROR; // Adressiere das E2PROM I2C_Send7bitAddress(I2C1, E1_WR_ADR, I2C_Direction_Transmitter); if (I2C_WaitForEvent(I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) != SUCCESS) return ERROR; // Adresse als 2 x 8 Bit senden I2C_SendData(I2C1,upper_addr); if (I2C_WaitForEvent(I2C_EVENT_MASTER_BYTE_TRANSMITTED
-
Thread
Schwerpunkte in den Datenblättern
denn die SFRs von Timer, PWM, ... mit C zu tun? Das einzige, was du von C-Ebene dazu wissen musst -- dito für C++, Assembler, ist: - Wie wird ein SFR gelesen, geschrieben? - Wie setze / lösche / toggle ich einzelne Bits in einem Wert?
der zur Komponente gehörenden SFRs und Bedeutung der einzelnen Bits. Beim Lesen gehe ich dann in der Reigenfolge 1 - 3 - 2 vor. Lesen von 3 gibt schon mal einen sehr guten Überblick was die Komponente kann und wie diese tickt. Gory Details gibt es dann
-
Thread
C Katastrophen.
: int a[10]; Dann wird fleißig über diese Arraygrenze hinaus in der Gegend rumgeschrieben: a [c] = 0; Natülich zerlegt das in C den Speicherinhalt. Das ist aber ein Problem des C-Programmierers, der weiß nämlich, daß das passiert und wenn es nicht passieren darf, wird er eine Abfrage einbauen
c { gcc -Wall -fbounds-check -fstack-protector -D_FORTIFY_SOURCE=2 -I. -O5 \ -D_GNU_SOURCE -D__SMP__ -DLINUX -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS \ -D_REENTRANT -std=gnu99 -lpthread -lncurses -
-
Thread
WTV020 Start - Stop - ohne AVR
Dir ist klar, was du willst, dem Leser nicht. - Wenn du mehrere Vorgänge parallel hast (Taster abfragen, Signal State Machine und LED blinken) bietet sich das in einzelnen Unterfunktionen an, die jeweils eine eigene State Machine abbilden. Das geht mit Hilfe von switch/case Stukturen. Klingt kompliziert
besten verarbeiten. „state“ kann nur maximal 3 annehmen, da reicht die native Datenbreite des AVRs mit 8bit vollkommen. Für „counter“ kann der Wert bis zu 3000 annehmen, da reicht 8bit nicht. Also nimmt man 16bit. Bei einem ARM Prozessor mit 32bit kann man in aller Ruhe alles mit 32bit machen, der Prozessor
-
Thread
Ergebnisse einer FFT zusammen fassen
Board von Texas Instruments. EK-TM4C123GXL mit einem ARM® Cortex®-M4F Based MCU TM4C123G. Der hat 2 ADC's. Der ADC hat folgende Daten: [c] -ADC resolution = 12BIT -ADC conversion clock frequency = 16Mhz -ADC conversion rate = 1Msps
c-hater schrieb im Beitrag #7224176: > Was ich verwende, sind sozusagen einzelne Bins einer FFT > (Goertzel-Filter). Das hat den Vorteil, dass man für jeden einzelnen Bin > getrennt die Bandbreite einstellen
-
Thread
???SMS vom Computer über Handy schreiben????
ein Siemens Handy finden was auch den Textmodus kann! Ich war felsenfest der Überzeugung dass mein C35 Textmodus kann. Doch es kam nur eine "0" bei der Abfrage :-( Weiss einer welches S das kann? Und nochwas, gehe ich recht dass man die Baudrate am Handy ändern kann? Gruss, Uwe!
so kompakt wie ich den code in c gebastelt hab wirst dus in basic warscheinlich nicht hinbekommen... lies dir das mal duch: http://www.nobbi.com/sms_pdu.htm für die einzelnen flags hatte ich mal auch irgendwo eine doku.. aber
-
Thread
Höhenmessung
mal Bescheid, von wo und was einer kostet. Ich spiele auch mit dem Gedanken. Ich würde dann mit I2C arbeiten wollen.
garnicht drauf gekommen, einfach mal bei Katalogversendern zu suchen ;-)) Wie steuert man aber ein I2C-Device mit einer 10Bit-Adresse mit einem AVR unter Nutzung des Hardware-TWI-Moduls an??? siehe auch hier meine Anfrage dazu: http://www.mikrocontroller.net/topic/58626 Ich mache das jetzt per Software-I2C
-
Thread
AVR TWI - Frage zu TWSTA
Hallo, ich habe eine Frage zu dem TWI START Condition Bit (TWSTA). Im Datenblatt (des ATmega324A) steht: > TWSTA must be cleared by software when the START condition has been transmitted. Wenn ich TWSTA wie im C-Code unten nach der Start Condition löschen
Hi Ich denke es ist einfacher TWCR mit einem 8-Bit Wert zu beschreiben, als einzelne Bits zu setzen oder zu löschen. Dadurch würde bei einem nachfolgenden Senden von SLA das Start Bit sowieso gelöscht werden, vermeide also TWCR |= ... und TWCR &= ..
-
Thread
Wiederstandsmessung mit ATmega16
Register wird dann am Port B ausgegeben. Kenn hier jemand ein kleines Programm in ASSAMBLER oder C?
als der Vorgegebene. PS. Könnt ihr ein Buch empfehlen, um AVR und Assembler zu lernen, oder ist C besser?
-
Thread
4" TFT für 7,97€
voltage entfernt ist, wird heller dargestellt. Wenn man nur wenige Farben darstellen möchte (z.B. 1-2bit pro RGB), dann kann man auch auf die Gamma Korrektur verzichten und die Invertierung in Software machen. Dazu könnte/müsste man das signal voltage / phase inversion control out Signal abfragen, das
die Hardwareseitige Verwendung von PHASE_INVERSION. Das geht nur in den µC, damit man entsprechend für ein schwarzes Pixel nun die Bits invertiert. Damit wäre allerdings, wie Bennedikt schon sagte, die Farben alle sehr blass und man bekäme keine schönen Kontraste. Außerdem
-
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
Mehrere gleichzeitig per AVR messen lassen??
das ergebnis ab. erst aenderung AND 1, dann aenderung AND 2, aenderung AND 4, AND 8 usw. Diese einzelnen Abfragen speichserts Du und hast für Lüfter 0-7 je das dazugehörige Bit isoliert. Im SRAM machst Du dir acht korespondierende Variablen, die Du ebenfalls in dieser Schleife hochzählst. Nach 1000
Tau = R * C (Zeitkonstante) 50% = 0,7 Tau (50% Pegeländerung)
-
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
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
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
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