-
Thread
Anfängerfragen
wahrscheinlich nur EINE Zuweisung an DDRx gemacht wird. Eine Zuweisung überschreibt immer alle Bits und nicht nur einzelne. i = 9; i = 3; Du würdest dich schön bedanken, wenn nach der 2.ten Zuweisung noch das eine gesetzte Bit von der 9 in i stehen würde. > Aber was bedeutet: _delay_ms
angeschlossen und möchte diesen einfach vorher wieder umlegen. Wie genau müsste meine Variable und meine Abfrage dafür aussehen? [c] const uint8_t Taster1_D_PullUP = PD2; uint8_t Taster1_D; if (PIND&(1<<Taster1_D_PullUP)) { Taster1_D=0 } else { Taster1_D=1 } [/c] Habe ich da einen Denkfehler
-
Thread
AVR Ethernet Platine
ich auch interessiert. Aber eher wie es Jochen gesagt hat. Einfach ein paar Sensoren(z.B TC77 am I2C) abfragen und per Browser abfragen. Später vielleicht noch als Datenlogger. Das wäre ideal. @Jochen proMa gibt es z.B. bei Reichelt(glaube Guido meint EFG 1A(LxBxH 165x114x31). Oder hier http://
dem weniger aufmerksamen Leser evtl. nicht geistig gegenwärtig sind: 1. Die 10nF Kondensatoren C304, C305, C306, C307 sind keine "normalen" 10nF Cs sondern die großen 1KV Versionen, die man von der NIC heruntergelötet hat. Es sind auch wahlweise nur C304, C305 oder C306, C307 zu bestücken. Auf verschiedenen
-
Thread
Zeitgesteuerter Ablauf mittels einer "State Mashine"
: [c] #include <util\atomic.h> ... ATOMIC_BLOCK(ATOMIC_FORCEON) { X |= Y; } ... [/c] Ausnahme, X ist ein IO-Port und in Y ist nur ein Bit gesetzt. Das geht atomar (SBI,CBI). Peter
einzelnen Bits abgefragt und den/die entsprechenden Abläufe bearbeitet. Die Abläufe sollten unabhängig voneinander ablaufen allso keine Schrittkette. Ich könnte natürlich für jeden Ablauf einen Variable
-
Thread
Welche Programmiersprache auf µC
, 100u>&, unsigned int, unsigned int) [/c] wobei das natürlich nicht die Version der libstdc++ ist. Also für 8-Bit: 220-Bytes und für 16-Bit 294 Bytes.
Hier ist ja mal wieder eine echte C vs C++ Duskussion im Gange. :) Dann will ich mal meine Ansicht zum Besten geben. Ich war sehr lange der Meinung, man müsse kleine 8-Biter mit C programmieren, da C++ der totale Overkill dafür ist
-
Thread
Arduino SPI Daten senden
Kann man denn nach einem einzelnen Bit quasi fragen? Also wenn man beispielsweise "byte temp = SPI.transfer(0x00);" schreibt?
Acht Takte führen zu 8 Bit. Also nein! Einzelne Bits geht nicht.
-
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
Thermometer mit ds18s20 und LED Annzeige
Hab es nun so versucht - etwas aufwendig aber es geht... Dim Digit0 As Bit 'Merker =0 wenn 1. Stelle =0 Dim Digit1 As Bit 'Tausenderstelle If Val(tempstr) = 0 Then 'Führende Null wegblenden If Digit = 0 Then : Portc.1 = 0 : Digit0 = 0
= 0 'C.2=Digit Transistor End If End If 'Zehnerstelle If Val(tempstr) = 0 Then 'Führende Null wegblenden If Digit = 2 And Digit1 = 0 Then : Portc.3 = 0 :Digit1 = 1 'C.3=
-
Thread
ATmega8 ADC-Durchschnittsberechnung
zu signalisieren: Mach mal Und wenn der ADC fertig ist, dann zieht er das Bit wieder auf 0 zurück. Deshalb [c] ADCSRA |= (1<<ADSC); // mach mal while (ADCSRA & (1<<ADSC) ) { // ich warte solange, bis du fertig bist } [/c] > Mein ADC lief ursprünglich
(Timer0 - 8bit), 1 für meine Zählung der Arbeitstage (Timer1 - 16bit) und ein Universaltimer (Timer2 -8 bit) der immer 10 ms läuft. Ich baue mir daraus eben dann meine gewünschte Zeit. Vernküft ist damit [c]
-
Thread
Rückwandbus mit I2C
Sicherheit kommt ja auch ein klein wenig auf die Implementierung an. Mit I2C und nur "ein paar bits pro Sekunde" kommt man schon ziemlich weit, jedenfalls viel weiter als ein Rückwandbus reicht. Normale I2C - Slaves haben kein Problem damit, wenn die Busgeschwindigkeit gedrosselt
daß sich alle Slaves melden müssen, > sehe ich da auch keinen Unsicherheitsfaktor. Das ist im I2C Standard sowieso schon drin. Wenn während der Addressierung der Slave nicht mit dem ACK bit antwortet, gilt das als Kommunikationsfehler. Wenn I2C sauber über mit GND getrennte Leitungen geführt wird
-
Thread
Protokoll Level zusammen mit Tasks, brauche hilfe
definiert wird). Und da bei RS485 alle Kommunikation sowieso vom Master initiert wird, ist diese Abfrage nicht so sinnvoll. Es würde eher auf einem Slave zutreffen. Aber auch da würde ich nicht auf das Parity-bit schalten.
alle Kommunikation sowieso vom Master initiert wird, >> ist diese Abfrage nicht so sinnvoll. Es würde eher auf einem Slave >> zutreffen. Aber auch da würde ich nicht auf das Parity-bit schalten. > > Das Protokoll soll unabhängig vom Master wie auch vom Slave > funktionieren
-
Thread
Fahrstuhlsimulation
1 einzelnes klitze kleines Bit 1=hoch fahren, 0=runterfahren.
null setzen)Mit einer If - Abfrage nachschauen ob noch ein höheres Bit gesetzt worden ist. Fahre dort hin ......... wenn nein dann fahre runter und so weiter ...... das sind doch wieder sooooo viele if abfragen! Wer weiß
-
Thread
Pointer Vergleich mit Konstante
usart_rx_read=usart_rx_buffer; } return temp; }//end RX_BYTE [/c] Die IF Abfrage soll also schauen wenn der ARRAY ende erreicht ist und den Zeiger zurücksetzen. Das klappt so bei beiden TX Zeigern und dem RX schreib Zeiger auch wunderbar Nur hier wird das
kaschiert es nur. Denn deine beiden Codestücke sind eben NICHT funktional identisch! Das eine ist ein 16-Bit Vergleich, das andere ein 8-Bit Vergleich. Hier [C] static uint8_t USART_RX_Byte(void){ uint8_t temp; // if(usart_rx_read == usart_rx_write){ //security checks if there is a byte
-
Thread
Spannung des Thermoelements verstärken
24bitter, mit zuschaltbarem Verstaerker. > Ist das nicht sehr teuer? ADS1118 (zwar "nur" ein 16-Bit ADC, dafür hat der interne Temperatursensor eine "Genauigkeit" von +-0.5 °C im Bereich von 0 °C - 70 °C) ~ 5 € bei Einzelstücken. MCP3424, 18-Bit, ~4 €, LTC2484, 24-Bit, interner Temp-Sensor, ~5 € und
Thermoelementen und wie diese gemessen werden können http://www.youtube.com/playlist?list=PL36A224E609F3F7C9
-
Thread
Drehgeber code
möchte die Pinbelegung ändern.Wie kann man das tun? Ausserdem verstehe Ich nicht was das hier soll: "C = Low" Ich vermute das ist das "Carry bit", aber ist es nötig ihn zu löschen?
werden. Wie Du siehst, geht es hier um einzelne Bits des alten und neuen Drehgeberstaus, die zu einem Index zusammengebastelt werden. Da wird das nichts, mal einfach "OldEncoderValue = 25" oder so zu schreiben... ;-) ...
-
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
Besteht Interesse an einfacher Experimentierplatine fuer den Xmega128a1? Gesperrt
sollten (Zumindest lese ich > eure Posts so): Die Leitungen sind nicht angeschlossen, weil es ein 8bit-RAM ist, das EBI des ATxmega128a1 aber nur 4-bit RAM unterstuetzt. > Du solltest mal im Schaltplan mit dem Move-Befehl jedes Bauteil einzeln > anfassen und leicht verschieben. Kannst dann auch über
ich habe das eher so verstanden das für die 8-Bit Ram Lösung ein CPLD/FPGA zum Zerstückeln auf 4-Bit nötig wäre (um das komplett zu nutzen). Aber 8Bit Rams haben doch einfach 8 statt 4 Bänke, 4 Bits nicht zu nutzen sollte doch auch gehen? Ich habe
-
Thread
Relais ansprechen über schnittstelle?
ports verteilen. wie geht das? Mit [[Bitmanipulation]]. >macht ihr es über eine switch case abfrage? oder if? >if(Bitfolge=="110011010"){ >portA1 auf high >portA2 auf high usw....} Nö, man muss die Bits einzeln abfragen und reagieren, siehe Artikel oben. Mfg Falk
c] Aber auch das ist Unfug, denn es werden ja alle 8 Bits von PortA übertragen. Dann genügt auch [c] PORTA = byte1; [/c]
-
Thread
Byte verschieben und mit Eingang auffüllen.
eher selten effizient... wie wäre es damit das komplette Byte auf einmal zu negieren anstatt jedes Bit einzeln?
konkretisieren? > wie wäre es damit das komplette Byte auf einmal zu negieren > anstatt jedes Bit einzeln? Ja, das könnte eine Abkürzung sein.
-
Thread
Der C Standard und wegoptimierte Funktionen
eben das > einfache "&". Nun ja, daß ist mal wieder einer der klassischen Peter-Hacks. Wildes Bit-Geschubse, um am Ende eine Zeile Sourcecode zu sparen. Will man beide Funktionen ausführen, dann schreibt man das einfach hin: [c] bool bfoo = (foo() == 1); bool bbar = (bar() == 2); if
wenn man nicht genau weiß, ob die Funktion sicher ist oder nicht, muss man sie schlicht aus der Abfrage rausnehmen und als normale Funktion mit Rückgabewert behandeln, und dann diesen Rückgabewert auswerten. Man muss nicht jeden Wahnsinn den C bietet auch im echten Programmiererleben mitmachen. Huch
-
Thread
Physikalische Vorgänge in C bzw auf µC realisieren
verträgt. Das bieten aber nur einige µC auf wenigen IOs. > EDIT: ich würde keinen ARM-Cortex basierten uC nehmen, die haben bei > höheren Takten ein nicht mehr ganz so gut vorhersagbares Zeitverhalten > wie übliche 8Bit, durch unterschiedliche
kann man das Biteinschieben noch mit reinbekommen, kommt auf die Realisierung an. Also wirklich nur BIT Laden, Auf Timer warten, Pegel setzen, nächstes Bit holen usw. In der REstlichen Zeit läuft dann der gesamte andere Kram. CanBuffer abfragen, Datenaufbereitung usw. Wie gesagt alles kein Hexenwerk.
-
Thread
sd-Karte Elm Chan DMA
Interrupt startet die nächste DMA-Datenübertragung. Problem ist der Verbrauch von 8Portpins, um nur ein Bit abzufragen. Dafür könnte sowohl Datenübertragung wie auch Ready-Abfrage komplett per DMA laufen. Gibt es eine andere Möglichkeit, um über den Wert von sspxDR einen Interrupt auszulößen?
die Besonderheit beim Chan-Code ist, dass er den SSP-Fifo einsetzt. Da ich in der Regel das Bussy-Bit und nicht das Fifo-Empty-Bit abfrage, kann ich das Leeren des Fifo wahrscheinlich auch weglassen. Ebenso erschließt sich mir der Sinn des wechsels auf 16bit Modus nicht, da nur 8bit Werte eingelesen
-
Thread
Ansteuerung von ca. 1200 LED´s
Was meint ihr hierzu? Es ist ein I2C Bus-Expander. http://focus.ti.com/docs/prod/folders/print/pcf8575c.html Man könnte pro Turm so einen Chip nehmen und anschliessend noch Multiplexen. 16 Bit pro Turm ist nicht schlecht, zumal man
> Aber mal vorab; kann ich die Register so Softwaremäßig > Nummerrieren wie µC´s? Also Register1, Register2, usw. Die Registernamen sind völlig irrelevant. Aus Sicht der Software sind da z.B. 160 Bits hintereinander angereiht. Ob das 10 16bit-Register oder 20 8bit-Register sind
-
Thread
Was copy von DOS besser kann als cp von Linux
Das sollte eigentlich immer noch gehen. Abgeschafft wurde eigentlich nur die Unterstützung von 16 Bit Anwendungen für die 64 Bit Versionen von Windows Vista und aufwärts. Und viele historische *.com Dateien sind 16 Bit Anwendungen. *.com selbst dürfte aber nicht abgeschafft worden sein. Und wie
Keines der folgenden Schlüsselwörter geniesst autom. Vervollständigung... [c] c:> netsh wlan show profile MY_WLAN key=clear [/c] ------- Unter einem ordentlichen Linux mit bash/dash (vulgo: Desktop-Linux) bekommt man z.B. bei /ip show/ super Spickunterstützung und muss
-
Thread
NXP PCA8574 hat Phänomen mit 2 Adressen
/remote-8-bit-i-o-expander-for-ic-bus-with-interrupt:PCA8574_74A Controller: AVR128DB64 Ein Testprogramm Address-Scanner zeigt: [code] I2C Address Scanning... 7Bit 7Bit 8Bit I2C device found
Du stolperst über die 10-Bit Adressierung. https://en.wikipedia.org/wiki/I%C2%B2C#Reserved_addresses_in_7-bit_address_space
-
Thread
Arbeitet ihr lieber mit SPI oder I2C Bauteilen?
habe ich ein EA OLED mit SPI und I2C. Da kann man zwar immer SPI mit 8 Bit Worten machen, dafür muss nach dem ersten 8 Bit Wort (5 Einsen + R/C,W.. Bit) jedes Datenbyte auf zwei 8 Bit Worte aufteilen (je vier Bit). Grauenhaft, für DMA muss
wird geprüft, ob eine Sendeanforderung anliegt, d.h. das STA-Bit wurde gesetzt, aber der AVR hat sich intern verklemmt und sendet trotz freiem I2C-Bus kein Start. Die AT89C51 mit I2C sind ähnlich buggy, wie die AVRs. Da hat wohl die 8051-Abteilung von den AVRs
-
Thread
Drehimpulsgeber-Abfrage über Interrupts
1ms Tick) bekomme ich hohe Rundungsfehler und das hochzählen der "lcd_refresh" Variable (oder das abfragen der selbigen) fukntionieren nicht mehr richtig ... ich vermute das der Timer schneller überläuft als die Abfrage das erkennt ..... ich hatte vor den Timer0 für die abfrage der Werte des Drehimpulsgebers
und im Main, was schiefgehen muß, wenn der main-Zugriff nicht unter Interruptsperre erfolgt. 16Bit-Zugriffe sind aufm 8-Bitter grundsätzlich nicht atomar ! Und generell sind C-Statements erstmal nicht atomar. Schau Dir einfach mal das Assemblerlisting an, zu welchen Umständlichkeiten Du den
-
Thread
I2C-Signal SCL & SDA
, die Ansteuerung dort ist im Großen und Ganzen in ordnung. Aber dann sollte man auch nach jedem i2c_write() auch den Returnwert abfragen, denn dort steht das ACK-Bit drin. Und noch was als Anmerkung zur Library: Die Abfrage zum Clk-Stretching geht nur dann gut, wenn man keinen Watch-Dog aktiviert hat
Code wie folgt geändert: [c] i2c_start(Display+I2C_WRITE); i2c_write(0b10000000); // ControlByte i2c_write(0b11001000); // mode-set i2c_stop(); i2c_start(Display+I2C_WRITE)
-
Thread
Poti Wert zu PWM Signal verarbeiten
liegt vermutlich der Wurm. ADSC ist 1, solange die Messung durchgeführt wird. Also müsstest Du die Abfrage so machen: [C] while(ADCSRA & (1<<ADSC)) { } [/C]
(!(ADCSRA & (1<<ADIF))) // { // } // ADCSRA |= (1<<ADIF); // sensorWert3 = ADCW; } [/c] Sodass das ADIF Bit gesetzt (und damit gelöscht) wird und auch dieses abgefragt wurde. Das Flackern ist weg und die LED an PB1 ändert sich nicht mehr anch dem poti, wobei ich mir aber noch nicht
-
Thread
Datenübertragung über Relaiskontakte
an einem µC-Pin und kann die einzeln zuordnen. ;-) (Bin aber ziemlicher Programmier-Anfänger!!) Das (einmalige) Zuordnen ist aber schon eine anstrengende Aufgabe. Ich hab dazu Peltierelemente und ein passend gefrästes
...) Das hat den entscheidenden Vorteil, dass man z.B. einen einzelnen Sensor bequem tauschen kann, wenn er defekt ist. Man muss nur vorher in den neuen Sensor seine richtige Position speichern. Die Sensoren sind zudem auch unabhänig vom µC-Programm. D.h. ich kann
-
Thread
Daten über usart empfangen/ wann Datenende erreicht?
10 andere Arten ein, eine Prüfsumme zu bilden... :-o Zuerst solltest du wissen, /was/ die einzelnen Zeichen darstellen, dann kannst du besser raten. > Aber wenn ich bis 255 zähle dann gehts doch bei 256 wieder bei 0 los > oder? Ja, wenn du dich im 8-Bit-Zahlenraum bewegst...
Da fällt mir ein, kann ich hier nicht irgend ne Abfrage reinbauen? Also wenn kein Zeichen mehr kommt dann tu irgendwas?: [c] uint8_t usart_getc(void) { while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar ;
-
Thread
Uhr mit hilfe von Uhrenquarz
einem Infinieon Programm: Die Firma heißt "Infineon"... Schreib doch einfach, WAS du mit WELCHEM uC WIE machen willst. Du kopierst irgendwo irgendwelche Codezeilen zusammen und kapierst sie nicht... > später in der main kann ich in der while-Schleife dann so abfragen? Das kann man, wenn man sich
evtl. nicht mehr aus. > Einen Hardware-Vorteiler braucht man nicht, wenn man einen MC nimmt. Der uC /hat/ einen Hardwareteiler, so hatte ich das gemeint ;-) Und wenn 16 Bit nicht reichen, dann muß Software her... > ISR (TIMER1_OVF_vect) > { > sekunden++; Das geht wieder nur, wenn ein
-
Thread
Sende/Empfangsvorgang mittels nur 1St. µC
while(1) { // Anmerk.: for(;;) gefällt mir nicht so aufgabe_taste(); // Taste abfragen, ev. Befehl and B schicken aufgabe_daten_empfangen(); // Daten empfangen und ev. anzeigen aufgabe_daten_anzeigen(); // alternativ } } void aufgabe_taste(void) if !((P2IFG&BIT0
__delay_cycles(900); } } [/c]
-
Thread
EleLa - Elektronik Lagerverwaltung
Hallo Markus, folgende Situation: ich habe ein Bauteil definiert, Bezeichnung "C 10µF" Zu diesem gibt es 2 Typen mit diesen Bezeichnungen: "C 10µF 16V" und "C 10µF 16V Tantal". Wenn ich nun bei z.B. dem zweiten Type auf den Warenkorb klicke um das Bauteil in den Bestellvorschlag zu übernehmen, hätte ich eigentlich erwartet daß dort unter Bezeichnung nun "C 10µF 16V Tantal" steht. Stattdessen steht dort aber "C 10µF C 10µF 16V Tantal". Das heißt beide Bezeichnungen tauchen dort (ohne Trenner) auf. Soll das so sein? Falls ja, mache ich woanders was
-
Thread
XP: Checkdisk beim Boot
Das Dirty-Bit kann man via "fsutil" abfragen und setzen: [code] fsutil dirty query c: [/code] [code] fsutil dirty set c: [/code] ...zeigt fsutil an dass das Dirty-Bit gesetzt ist? Falls nicht: Setz es einfach
falsch ist, so what? Beschwere dich bei der Chip. > und beharrst darauf, daß auf WinME > keine 64-Bit-Emulation unter VMware möglich ist. Auf einem 32-Bit WinMe mit einem 32-Bit Prozessor wirst du wohl schwerlich eine 64-Bit Emulation hinbekommen. Woher soll der Proz. plötzlich 64-bit breite Register
-
Thread
C8051F020Dk Port4-7 aktivieren bzw. freischalten (SFR)?
bastelt, dann kann man die doch auch alle gleich behandel. "rrrrr" ;-) Auszug von SiLabs.com: [c] entity C8051F020 is generic(PHYSICAL_PIN_MAP: string := "TQFP_100"); port( P0_0 : INOUT BIT; ... P4_0 : INOUT BIT; P5_0 : INOUT BIT; ...analog bis P7 P0_1 : INOUT BIT; ...
. Read = 00b, Write = don’t care.R/WR/WRRR/WR/WR/WR/WReset ValueIE7IE6--IE7CFIE6CF--00000000Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:0xAD C8051F020/1/2/3 178 Rev. 1.4 Port Data register will cause the Port pin to be driven to GND, and a logic 1 will cause the Port pin to assume a high-impedance
-
Thread
USB zu LPT JTAG
mal paketorientiert ist und dadurch keine sinnvollen Datenraten herauskommen, wenn man versucht einzelne Bits zu übertragen. Ohne einen USB Controller, der direkt JTAG kann, wird das zu keinem brauchbaren Ergebnis führen. Die USB/LTP Adapter kann man für sowas geflissentlich vergessen.
paketorientiert ist und dadurch keine sinnvollen Datenraten > herauskommen, wenn man versucht einzelne Bits zu übertragen. USB arbeitet in einem Zeitraster von 1KHz, d.h. wenn du per Bitbanging am Parallelport einen Takt erzeugst und jedesmal den Zustand eines Pins abfragst, kommt bestenfalls ein
-
Thread
Schaltparameter Fernbedienung
Wenn ich das jetzt im Code richtig interpretiere ist es diese Stelle: [c] uart_putc(Data); //entsprechende Ausgänge setzen PORTB ^= BitMask; [/c] Um nun 1,5 sek. Pause zu haben und danach wieder abzuschalten kann man dann doch so erweitern: [c] uart_putc(Data); //entsprechende Ausgänge setzen PORTB ^= BitMask; _delay_ms(1500); PORTB ^= BitMask; [/c] Liege ich da richtig?
-
Thread
An alle Logiker
[c]> return x-b < a-b;[/c] Das sind aber immer noch 3 32-Bit Operationen (2 falls a und b zur Compilezeit bekannt sind). Aber besser gehts wohl nicht. Übrigens ist das GCCs Methode, um zu testen,
Kann man die Logik der Abfrage nicht umkehren? [c] return !((x >= a && x >= b) || (x < a && x < b)); [/c] (Not yet tested)
-
Thread
4 Bit Schieberegister fuer Motorumbau (Versuch)
Sprit immer genau da wo er hin soll... Jetzt brauch ich aber das passende Schieberegister. (Ein µC ist damit unterfordert) Gibt es ein 4 Bit Schieberegister, dass ich mit einem Eingang immer Weiterschalten kann und das evtl. auch immer auf einen Ausgang resetet (z.B. switche bei reset zu Ausgang
funktionieren, da bei einem Viertakter nur bei jeder zweiten Umdrehung eingespritzt wird. Da wäre ein 8bit Schieberegister schon besser geeignet wo dann jedes zweite bit einfach frei bleibt. (Oder eben nach nötiger Einspritzreihenfolge) Dabei bräuchte man nicht einmal ein Schieberegister. Ein 4017 dürfte
-
Thread
UART-Zeichenempfang wenn ISR gesperrt ist, möglich?
Schnittstelle) die nächsten Daten senden, ehe der Pin erneut wechselt. Mega328p hat in UCSR0A einen bit (RxC0), den kann man zwischendurch mal gemutlich abfragen, anstatt mit ISR zu arbeiten, etwa so: [c] Byt2WS2812: ... ;*** DataPin fur WS2812 auf High, bit holen (shift) 7 Takte
; 1 ret ;=========== ; 6 / 6 Takte [/c] Das sind 6 Takte zusatzlich, bei 328p mit 16MHz brauchst du zwischen 16 und 24 Takte fur einen bit beim WS2812-Bitbanging (20 Takte +/- 4 Takte), da kann man sogar zwischen den einzelnen bits
-
Thread
STM32F7 mit externem ADC - Geschwindigkeit und Durchsatz
> Geht das ernsthaft nicht mit einem > STM32F7 Cortex M7 ?! Doch, aber du darfst nicht jedes 16bit-Wort einzeln verarbeiten. In einer Schleife direkt einlesen sollte gehen, dann bleibt aber nicht mehr viel Rechenzeit für anderes. Hier sollte man darauf achten effizienten Code zu schreiben und die
. Macht auch Sinn. Niklas G. schrieb im Beitrag #5628173: > Doch, aber du darfst nicht jedes 16bit-Wort einzeln verarbeiten. In > einer Schleife direkt einlesen sollte gehen, dann bleibt aber nicht mehr > viel Rechenzeit für anderes. Hier sollte man darauf achten effizienten > Code zu schreiben
-
Thread
Verbrauchsanzeige für's Moped
in die Quere kommen kann bzw sollte. Den zweiten 8-Bit Timer kann man dann für andere Sachen verwursten, z.B. Taster abfragen oder sowas in der richtung, ist also noch Platz für mehr. Zum permanenten Speichern der Daten könntest du das EEPROM nehmen
wirklich gern verstehen, wie das > Programm der Hardware sagt, was sie zu tun hat... Das siehst du in C genausogut. letzten Endes ist es egal in welcher Sprache man welches Bit in welchem Konfigurationsregister setzt. Aber der C Compiler nimmt dir viele Routine-Aufgaben ab, um die du dich ansonsten selbst
-
Thread
Sekunden,Minuten zählen mit der Funktion Millis()
Überlauf } Wenn man meint, die loop() wäre zu schnell, kann man natürlich noch ein bisschen 32-Bit Multiplikation/Division einflechten. [/c]
Wenn man den Unsinn mal weiter spinnt, der Arduino hat schon einen 64 Bit Zähler, wenn gleich auf 2 Variablen aufgeteilt. Die kann man atomar auslesen und auswerten. wiring.c [c] // the prescaler is set so that timer0 ticks every 64 clock cycles, and the // the overflow
-
Thread
I2C Slave-Scan
Beim I2C gibts neben den normalen 7-Bit-Adressen auch welche mit 10-Bit. Hatt ich aber noch nie. Zudem muss die Schleife da nicht 2x durchlaufen werden, da nur ein Teil der 7-Bit-Adressen auf 10 Bit erweitert
: http://www.standardics.nxp.com/support/documents/i2c/pdf/i2c.bus.specification.pdf http://www.i2c-bus.org/ ist übrigens auch eine gute Quelle. In der Doku wird dem OP bestimmt der Teil über kurze (7 Bit) und lange (10 Bit) Adressen auffallen. Er
-
Thread
CanOpen Hack
nocheinmal, bitte entschuldige, ich habe PDO und SDO verwechselt(wieder mal). Mit SDOs kannst Du einzelne Werte abfragen, PDOs sind "häufige" Nachrichten die Hersteller-spezifisches Format haben. Was die einzelnen Bits in einem PDO bedeuten kann also nur der Hersteller oder Reverse-Engineering an den
Christopher B. schrieb im Beitrag #6749238: > Der PDO ist abgeschaltet. Lösch mal das 63.bit > [663][8][22 00 18 01 E3 01 00 40] du hast das Objekt gelesen RainerZufall24 schrieb im Beitrag #6749317: > ID 663 -> 43 00 18 01 E3 01 00 40 > AW:ID 5E3 -> 43 00 18 01 E3 01 00 C0
-
Thread
Hilfe Ladereglung Atmega16 Assembler
oO ... Bitte befasse Dich auch mit 16 Bit Zahlen auf einem 8 Bit µC. Dann verstehst Du was es mit SPH,SPL und high(), low() auf sich hat. Das untere Ende vom RAM interessiert den Stack bzw. den µC nicht. Wenn Du zuviel auf den Stack legst
ausgibt. Und auf die 5% Performance Verlust durch den C-Compiler ist gesch.....
-
Thread
Visual Studio C# Serielle Daten anzeigen /verstehe befehle nicht
Lars schrieb im Beitrag #4656066: > Finde ich allerdings nicht sooo toll. Ich würde die abfrage pollen ist > dann auch zu Linux kompatibel :) Sein Titel: Visual Studio C# Serielle Daten anzeigen /verstehe befehle nicht Merkste was? Ausserdem, den Serial Port pollen machen wirklich
und zwar mit [c] theSerialPort.DataReceived -= new serialDataReceivedEventHandler(DataReceived); theSerialPort.PinChanged -= new SerialPinChangedEventHandler(PinChanged); [/c] Mit der Switch Case Abfrage wird,
-
Thread
Honeywell Rondostat HR20E per AVR steuern und konfigurieren
könnte so aufgebaut sein, dass es mehrere Methoden anbietet, um unabhängig von der Vorgeschichte, einzelne Segmente anzusteuern. Das zurücksetzen eines Segmentes löscht dabei auch das Blinkflag DISPLAY_CLS(); // Löscht Displayspeicher -> alle Segmente aus. DISPLAY_TEXT("172C", FLASH_D1
and transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 2stop bit */ UCSR0C = (_BV(UCSZ00) | _BV(UCSZ01)); // Asynchron 8N1 ... Damit funktioniert dann die Compilation. Was mich nur wundert ist, warum es bei Euch keine Probleme gegeben hat
-
Thread
uart raspberry pi, warum neuer pointer zum senden?
technisch fast das Gleiche. Ehrlich gesagt weiß ich ich > nicht, wo genau der Unterschied ist > [c] > char* du = "Johannes"; > char ich[] = "Stefan"; > [/c] Du merkst den Unterschied, wenn du den Variablen Werte zuweisen willst oder per sizeof die Größe abfragst ;-) "du" ist der Name eines
die einzelnen Elemente zählen, oder?