-
Thread
UP/Down Zähler Schaltung mit Hilfe von Mikrocontroller
Kawous S. schrieb im Beitrag #6545352: > Um 32 kleine Platine zu adressieren brauche ich 5 Bits Ja, aber das sind bei einem I²C Bus seriell übertragene Bits, nicht dedizierte Leitungen (bzw I/O Pins).
ja auch egal. Um ein paar Taster einzusparen, vielleicht nur einen UP/Down Taster und dann pro 8-Bit einen Taster, der die zu zählende Variable auswählt. Das kann man dann mit einem uC steuern. Ich schlage da einfach mal nen fertigen Arduino vor. Dann muss man nur noch Taster und LEDs anlöten und
-
Thread
Schieberegister-LCD vereinfachen
ich in C eine "Vereinfachung" schreiben. Ich muss ja schließlich für jede Veränderung des Displays die 48 Bits schieben,clocken und loaden. Wenn beispielsweise von bit20 bis bit48 keine ungleichen werte sind,
, CLOCK = 0 PORTB |= (1 << CLOCK); // CLOCK = 1 } wait (delay_irgendwas); } [/c] Das geht natürlich auch für deine 48 BIT.
-
Thread
I2C Slave Reciever
Prozessor als reiner Slave arbeiten soll, brauchst du das natürlich nicht. Mann könnte das auch mit I2C-Interrupt programmieren, dann muss man im hauptprogramm das TWI-Flag nicht ständig abfragen..... Ich hoffe du kannst mit dem Quelltext was anfangen. mfg Alex
TWEN) out TWCR, r16 $EndAsm end_ints: End Select end_twi: End Interrupt [/C] hier kannst Du sehr schön sehen, bei welchem Wert im TWSR du die einzelnen Bits im TWCR setzen musst. die einzelnen Bedingungen sind oben im Program als Konstanten gesetzt (habe ich jetzt nicht rüberkopiert
-
Thread
SPI Interrupt auf MEGA32U4
warten sicherlich die "while(bedingung" Abfrage. Habe es im spi_receive(); rausgenommen [c] uint8_t spi_receive(void) { /* Wait for reception complete */ //while(!(SPSR & (1<<SPIF))); /* return data register */ return SPDR; } [/c]
-
Thread
Eingänge auf LCD anzeigen
2; int PCB1_M; //Anzeigemerker Port C Bit1 PCB1_M= 3; PCB1_fix: if (!SP_1 O ST_RST) return; //Verlässt die Funktion O=&& if (!SP_3) goto AZ_2; //Springt in eine Andere Anzeige //Abfrage des einzelnen Bits------------------------------------------------------------------------------- //Abfrage PortC Bit 0 if (PCB0_M==0x01&D_PC)goto PCB0_fix; if(1==0x01&D_PC) goto PCB0_1; else goto PCB0_0; PCB0_1: lcd_setcursor(4,1); lcd_string("\x1A");
-
Thread
delay_us vs _delay_us?
Hallo Thanks, so sind die Warnungen weg... [c] ... itoa((int)(cel_frac_bits*DS18X20_FRACCONV),(char*)buffer,10); for (i=0;i<4-(strlen((char*)buffer));i++) uart_puts_P("0"); uart_puts((char*)buffer); .. [/c]
#1939411: > Hallo > > nur zu eurem Verständnis. Der Code stammt nicht von mir. Es ist eine > Abfrage von DS18S20 Sensoren und den Code habe ich "gefunden". Ist ja ok. Es geht ja im eigentlichen Sinne nicht darum die Sensoren abzufragen. An dieser Stelle hier .... [C] itoa((int)(cel_frac_bits
-
Thread
fehlerfreie UART-Übertragung?
Bit sein * eingestellt Baudrate: 4800Bd * Ü von einem Bit: 480Bd (-> 50%: 240Bd) * Differenz: 4800Bd (+-) 240Bd = 4560Bd < Ü(µC) < 5080Bd --> die Datenübertragung klappt bei dieser Einstellung
ist, kann man einfach die Daten dreimal schicken und dann die 2-von-3-Funktion bilden, die jedes einzelne gekippte Bit korrigiert: #define mc_two_of_three(a, b, c) (((a) bitand (b)) bitor ((a) bitand (c)) bitor ((b) bitand (c))) Das Makro hat den Vorteil daß man wahlweise chars, ints ... übergeben
-
Thread
Kleine Frage zu Makros
Sache, das macht sie leicht verständlich, wartbar und kombinierbar. Man kann seine Funktionen ja in einzelne Dateien gruppieren, oder in C++ in einzelne Klassen & Namespaces. Klassisches Beispiel: In POSIX gibt es kleine Funktionen fork(), exec(), dup2() mit denen man einen Prozess erstellen und stdout/
stackoverflow.com/a/154138 Zudem sind Namen, die mit 2 Unterstrichen beginnen, wie "__gpio_conf_bit", der C(++)-Standard-Library sowie dem Compiler vorbehalten und sollten daher in User-Code nicht vorkommen.
-
Thread
[OS-HB] Steuerungsprotokoll
soll... fertig.. damit das ganze wieder nett wird kommt dest aus dem header raus und src wird 29+3 bit groß.. die 3 bits könnten doch schon als flags hergenommen werde.. mal schaun was man da alles braucht :) damit würde der header eigentlich schon halbwegs vernünftig ausschaun und auch am i2c noch
Maschine VM auf den Controller . Zusätzlich enthält es in einem Speicherbereich eine(intern oder ext i2c EEPROM) Befehlsliste oder Anwenderapplikation welche von der VM interpretiert wird. Die Befehlsliste besteht aus einzelnen Token welche jeweils eine Basisfunktion repräsentiert. Die einzelnen Token
-
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
Probleme beim eintakten von Signalen
davon) auszuführen Einige Beispiele zeigt Tabelle 3. Tabelle 3: Arbeiten mit Vektoren signal a,b,c: bit_vector(0 to 3); -- Deklaration dreier Vektoren c <= a or b; -- bitweises oder auf alle Elemente c <= (’1’,’0’,’0’,’0’); -- Zuweisung als Aggregat c <= “1000“; -- Zuweisung als Bitstring c <=
belegen wollen, dann können Sie das Kommando (others => ’wert’) verwenden (Abbildung 7). signal c: bit_vector(0 to 7); c <= “01001001“; -- diese und die beiden folgenden c <= “0100_1001“; -- Zuweisungen haben gleiche Wirkung c <= x“49“; c <= (others => ’0’); -- allen Einzelsignalen von c wird
-
Thread
Drehencoder auswerten
diff = last - new; // difference last - new if( diff & 1 ){ // bit 0 = value (1) last = new; // store new as next last enc_delta += (diff & 2) - 1; // bit 1 = direction (+/-) } } [/C] Wenn das Interrupt ausgelöst wird prüft
ob Pahse B aktiv ist und da hört es dann bei mir auf... :( Wieso, er kombiniert nur die beiden Bits aus 2 Eingängen zu einer einzelnen Zahl von 0 bis 3, damit die Zuordnung der Eingänge an den Encoder nicht die Bedeutung der Bits intern beeinflusst. Es ist korrekter code und ein korrektes Verfahren
-
Thread
AVR-AD-Wandler
Umschaltung das komplette MUX-Register beschreibe, gibt es keine Probleme. Wenn ich allerdings nur die einzelnen MUX-Bits manipuliere hat der ADC manchmal Probelme beim Umschalten und anschließenden Messen. Wie schaltet ihr um ? Kennt ihr diese Probleme auch ? Danke schon mal.
ich klinke mich mal kurz ein. Wenn man in Bascom den Singlemode benutzt und die einzelnen AD-Känäle mit "Getadc()" abfrage, belässt er im Falle wenn man mehrmals den selben ADC Kanal abfragt das admux so? Ich denke schon, denn ich muss in meinem Programm 2mal den selben Kanal hintereinander
-
Thread
Processing Arduino Uart Lösungsfindung
mein Arduino Board? Ein Bit kann ich schon rüberschaufeln. Aber 3 Bits? Hat jmd eine Idee? Vielen Dank schonmal im vorraus.
-4-8 Als MOUSE TAG nehme ich das ENABLE DIR und MODE Als Int Value übergebe ich das High low bit. Somit kann ich mit einem Datensatz abfragen welches Bit wie gesetzt werden soll. Es funktioniert, aber irgendwie finde ich es immer noch nicht so elegant. Ich tüftel mal weiter.
-
Thread
[C - C++] wohin gehört das #define
Software-Projekte sind Murks? Oder nur AOSP? Das schon. Software-Projekte, bei denen man in einem einzelnen C-File die Übersicht über die darin definierten Makros verliert.
code zu > generieren. Dafür sind Makros schon eher nötig; Bezeichner lassen sich in C++ auch nicht generieren... Rolf M. schrieb im Beitrag #6135072: > Software-Projekte, bei denen man in einem einzelnen C-File die Übersicht > über die darin definierten Makros verliert. Wenn jedes
-
Thread
Programmspringer für Unterprogramme "schrumpfen"
} }[/c] Gruß Marian
unterscheiden. Alles nicht kompliziert, sondern auch auf dem AVR zunächst ganz normales Standard-C. Will man die Funktionspointer-Arrays ins Flash legen, kommt das AVR-übliche Vorgehen mit Flash-Daten hinzu. Da muß man jetzt berücksichtigen, daß so ein Funktionspointer 16 bit hat, und den per
-
Thread
VGA FPGA Selbstbau-DSO
nach RAM aus, aber?! Klar man kann den RAM Inhalt auch per UART an den Rechner schicken oder abfragen oder so und das dann da plotten, aber wieso mit gtkwave? Wenn, dann würde ich bei einem 8-Bit ADC immer 1 Byte je Sample schicken und das dann mit gnuplot einfach plotten - oder sehe ich das falsch
kostet mir derzeit zu viel. Ein richtiges DSO werde ich nicht machen weil ich das mit einer CPU und C nicht will und ohne soetwas GUI und Messungen keinen Spaß machen. Vielleicht hole ich mir mal einen dicken Artix, ein Board mit dem 200er, gutem VGA (viele Bits) oder HDMI und einem ADC wäre was.
-
Thread
Eingänge vergleichen
>L1 ist niemals gleich L2, denn sind andere Bits: >PIND4 = 0b00010000 >PIND5 = 0b00100000 Ok, das wusste ich nicht. Scheint mir ein wenig unlogisch, dass man den Zustand eines einzelnen Bits nicht direkt abfragen kann, aber an das muss ich
Mathiable schrieb: >>L1 ist niemals gleich L2, denn sind andere Bits: > >>PIND4 = 0b00010000 >>PIND5 = 0b00100000 > > Ok, das wusste ich nicht. Scheint mir ein wenig unlogisch, dass man den > Zustand eines einzelnen Bits nicht direkt abfragen kann, aber an das
-
Thread
Haus-Funkzentrale FS20 ELV/Conrad Gesperrt
Welchen Hauscode hast Du eingestellt? Das nächste Problem ist, inwelcher Reihenfolge werden die einzelnen Bits eines Bytes seriell übertragen? Bit7, Bit6, ... Bit0 oder: Bit0, Bit1, ... , Bit7 ? Frank
die hilfreich Info. Trotzdem bleibt noch die eine Frage offen: In welcher Reihenfolge werden die einzelnen Bits eines Bytes seriell übertragen? Bit7, Bit6, ... Bit0 oder: Bit0, Bit1, ... , Bit7 ? Gruss Frank
-
Thread
Multicore embeddedsystem? Viele Fragen!
Kommt Drauf an. > > Benötige ich als Embeddedsystem SW/HW Entwickeler mehr wissen als nur 32 > Bit- singlecore Systeme? Ja. Aber wenn man auf einem 32Biter einen Interrupt verstanden hat, dann ist die Übertragung auf einen 8Biter-µC keine Doktorarbeit. > > Werden sich jetzt die größeren Systeme
Was nimmt man denn als OS für ein 32Bit Multicore µC, wenn es am RAM für ein abgespecktes Linux fehlt?
-
Thread
TTL Signal Verarbeitung
nur um eine Testfunktion, ob der Int0 überhaupt was tut. steht in Telegramm.h und wird in main.c eingebunden. [C] volatile uint8_t getBit; ISR(INT0_vect) { getBit = 1; } [/C] main.c [C] // Initialisierungen externen Interrupt des dig. Signals EIMSK |= (1<<INT0); // Maske für den
Abgesehen von dem was Stefan schon gesagt hat > digitales Signal(1200/2400 Baud) ankommt. Um die Bits in ein Byte zu > schreiben frage ich nach dem Interrupt Flag ab Aber sicher nicht so [C] if (INTF0 == 0) [/C] Wie fragt man denn ein Bit in einem Register ab? Ausserdem: Das Interrupt
-
Thread
7-Segment Anzeige 3-3tellig
(ich schalte nicht alle Anzeigen aus, sondern die letzte wirklich leuchtende) @Karl Heinz: Die Abfrage des State ist dazu da um führende Nullen nicht anzuzeigen... [c] d++; if(d == 30) { PORTD &= ~(1<<PNP_1); PORTB = Zahl[Hunderter]; if(is_state_km) //Geschwindigkeitsanzeige
sowieso nicht sein. Der Zeitunterschied zwischen einer if-then-else Leiter mit gezieltem CBI eines Bits und einem IN-AND-OUT Zyklus fällt dabei locker zugunsten Letzterm aus. Diese ganzen Teile [C] PORTB = Zahl[Hunderter]; [/c] ... also die Bestimmung des anzuzeigenden Musters, wenn die Ziffer
-
Thread
Touch - wie kalibrieren in C?
Wo kommen die großen Zahlen her? 12 bit geht doch nur bis 4095.
pegel schrieb im Beitrag #5748966: > Wo kommen die großen Zahlen her? 12 bit geht doch nur bis 4095. Jepp, Werte größer 4095 ist kein 12 Bit mehr. ists vielleicht ein 14bit ADC? Oder wird hier mit Oversampling gearbeitet?
-
Thread
Zwei LED unabhängig voneinander mit nur einem µC Ausgang ansteuern - geht das?
Hallo Frank, ach noch eine Idee, ich würde einen attiny85 als Slavre µC nehmen und ihn über den Master µC steuern. Einfach ist die Verwendung einer Software Uart mit 8,none,1. Wenn einem 7 Bit PWM Auflösung reichen kann man über Bit 7 die LED adressieren und die Bit
schalten, um das zu erreichen. Karl M. schrieb im Beitrag #4226456: > wie viele Zustände man kann 1 Bit darstellen ? > Genau 2. Stimmt. Und wieviel Zustände kann der Ausgang eines µC annehmen? Genau 3. Da sollte sich also etwas machen lassen. Wenn man die LEDs im Zeitmultiplex ansteuert, sogar
-
Thread
Hilfe bei ATmega 16
ja eine max. Auflösung von 8 Bit hat, oder? Meine vorerst letzte Frage ist folgende. Da ich wie gesagt relativ neu in die Materie eingestiegen bin, frage ich in meinem Programm in der main Funktion das Array cSumSig[i] mit einer
); } [/C] > Kann mir aber vorstellen, dass es da sicher etwas "eleganteres" gibt. Nicht wirklich. Das einzige was du ausnutzen kannst. Wenn in einer x kleiner y Abfrage der else Zweig genommen wird, dann
-
Thread
RS232 mit Visual Studio 2003 - C#
Also folgendermaßen: Ich möchte einzelne Zeichen über Serielle Schnittstelle (die RS232) senden und empfangen. Dazu benötige ich die Einstellungen für Baudrate,Paritätsbit, ect. Ich benötige das ganze für C mit parameterübergabe und so.
; label9.Text = (label9.Text + " " + serialPort1.DataBits); label10.Text = (label10.Text + " " + serialPort1.StopBits); abfragen = false; } } } } [/c] hab mal einen
-
Thread
PWM Signal Senden und Empfangen dann Vergleichen
Paket zu vergleichen und wenn > dann ein Paket richtig übergenben wurde möchte ich ein Impul an den uC > übergeben. Wieso immer Pakete? Da mußt du ja immer zwischenspeichern. Und wenn du ein fehlerhaftes Bit erkennst, dann wird es nicht besser, wenn du danach noch weiter Bits übertragen willst. Wer
Stefan S. schrieb im Beitrag #2579352: > Wie würde ich denn dann ein ganzes Packet abfragen?? Warum? Wenn ein einzelnes Bit kaputt ist, dann ist doch dein ganzes Paket kaputt, oder? Es wird nicht einfach sein, diskret ein ganzes (wie auch immer geartetes) Paket abzufragen, weil ja die
-
Thread
Wie Arbeitstakte des Prozessors zählen?
Was bedeutet eigentlich das [c]const char* guiText1;[/c] im struct für die einzelnen Zustände? Warum definiert man das nicht einfach als string? [c]char guiText1[];[/c] welche Vorteile bring das? Wie kann ich den String ausgeben
Erik Her schrieb im Beitrag #1766952: > Was bedeutet eigentlich das [C] const char* guiText1; [/C] im struct für die einzelnen Zustände? Einen Zeiger auf einen konstanten char, der in diesem Fall der Anfang einer Zeichenkette ist. > Warum definiert man das nicht
-
Thread
µC für n00bs
mit dem PC verbinde, brauche ich ein Interface, das ich Low-Level programmieren kann. Wo ich jedes Bit einzeln setzen und abfragen kann. Dazu schließe ich einen µC an den USB Bus an und den programmiere ich dann wieder auf Registerebene. Ich Maße mir allerdings nicht an, den einen oder anderen Weg
der völlig kranken Syntax. Immer wieder diese Fragen zur Bytemanupilation. Wenn ich in Bascom ein Bit in einem Register setzen will, dann schreibe ich "Register.Bit = 1". Bascom macht daraus genau das Gleiche wie das kryptische Kauderwelsch in C. Wenn gewünscht, kann man dann immer noch auf C umsteigen
-
Thread
Zufallszahl bei Start des Mikrocontrollers
nicht verwendet wird. Dann hast du ein anderes Problem: Alle uC müssen unterschiedlich lange warten, bis sie versuchen, ihre Nummer mitzuteilen. DAS wiederum kann man per fester aber individueller Konstante machen, also eine 16 bit Zahl und der uC wartet so viele
Die kann man einzeln durchgehen und abfragen. Das ist zeitlich noch kein Fiasko. Aber: in beiden Fällen müssen die Sensoren (oder Slaves) fixe Adressen haben.
-
Thread
Tastenentprellung
Tasten entprellten mit nem µC heißt nichts anderes als die Taste niemals schneller abfragen als die Prellzeit es erlaubt! MaWin schrieb im Beitrag #3070225: > Es können auch 50msec sein, denn niemand > drückt so schnell die
16KOhm]--[Taster]--((Gnd | | |-----------[ADµC So kannst du bis zur ADC-Auflösung minus 1 Taster gleichzeitig abfragen. Wenn du dich drauf beschränkst, einzelne Taster zu drücken, kannst du die Spannungsteiler auch beliebig dimensionieren, und
-
Thread
R&S FSP7 startet nicht
sind. Beim FSP hängt das Display an dem SiI 164 Displaycontroller. Dieser hängt mit Clock+Daten+I2C an irgendeinem IC, welches das Bild erzeugt. Wenn dieses über I2C keine Konfiguration/Abfrage startet, kann es den SiI auch nicht fragen, ob das Display dran hängt. Das Display LQ084V1DG21 selbst hat
probiert? Noch nicht, gute Idee -- auch wenn es mir so scheint, als ob die CPU schon _vor_ der Abfrage hängt.
-
Thread
AVR Synthesizer Konzept
sie nicht sehr viele Kanäle (meistens nur 4). Ich möchte einen Midisynthesizer bauen, so dass der µC nur die Mididatei einliest, ohne Umwandlung. Hier beginnen aber schon die Probleme: Atmega8 @16Mhz -> 16 mio Befehle/s Ausgangsformat 22050Hz @8bit (erstmal PWM, später 16bit DAC) (Tonausgabe
immer ein Byte (also 8 Töne) abfragt, ob ein Ton darin aktiv ist, hat man pro Kanal schonmal 11 Abfragen: 88bit = 11Byte mögliche Töne pro Kanal. mit 11 Abfragen hat man aber schon die halbe Zeit verdödelt. Dazu kommt noch die Tonerzeugungsroutine, sollten Töne aktiv sein. Der Avr ist eindeutig
-
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
Wittig(welec) DSO W20xxA Open Source Firmware
übertragende Datenmenge reduziert sich auf ein Viertel, da nun pro Pixel (bei 16 Planes) statt bisher 16 Bits (1 pro Plane) nur noch vier Bits (2^4 == 16 Planes) übertragen werden müssen. RLE funktioniert hier natürlich immer noch, da man ja statt einzelner Bits auch 4-Bit Sequenzen zusammenfassen kann. Auch
mV/DIV: 19,6316 pm 0,1337 Bits/DIV (rel. Fehler: 0,681%) [/c] Als Skalierungsfaktoren für die Software hätte ich somit (**) [c] 10mV/DIV: 2,5651 pm 0,0229 20mV/DIV: 2,5615 pm 0,0198 50mV/DIV: 2,5469 pm 0,0173 [/c]
-
Thread
Timer: Zeitstempel erweitern
Datum-Zeitstempel mit einer Erweiterung um den Wert Millisekunde. Ich kann mit der TImerLib einen 64Bit Tick auslesen. Diesen werden kann ich auch quasi konvertieren in Millisekunde (absolut). Allerdings weiß ich nicht wie ich nun den Zeitstempel um den Wert Millisekunde erweitern könnte. [c] typedef
im MS Zeitmessung in Mega Siemens - was für ein Quatsch. https://de.wikipedia.org/wiki/Vors%C3%A4tze_f%C3%BCr_Ma%C3%9Feinheiten https://de.wikipedia.org/wiki/Internationales_Einheitensystem#Abgeleitete_Gr%C3%B6%C3%9Fen_und_Einheiten
-
Thread
Ein sachlicher Vergleich Pascal <-> C
für leute die immer noch glauben der vergleich ist sinnvoll: [...] Unions gibt es nur in C. Es sind Bitfelder mit denen man die einzelnen Bits eines Bytes ansprechen kann. [...] soviel zu seinen Kenntnisse in C.
Paul Baumann schrieb im Beitrag #3265543: > C ist ein Sammelsurium aus einzelnen Nüssen, Bits und Inbusschlüsseln > -aber die Knarre fehlt. Da muss man eben mit den Fingern fummeln :-) Im Ernst: C hat so wenige Befehle, dass man sich das binnen
-
Thread
Mysql Replikation
hatten, soll in der Master-Datenbank stehen: [code] "2020-08-27 14:00",Gerät1,22.5°C "2020-08-27 14:00",Gerät2,20.0°C "2020-08-27 14:10",Gerät1,22.0°C "2020-08-27 14:15",Gerät2,19.5°C [/code] ± weitere/andere Messwerte usw. Soweit korrekt? LösungsIdee: Geräte-Datenbank
Εrnst B. schrieb im Beitrag #6385739: > "2020-08-27 14:00",Gerät1,22.5°C > "2020-08-27 14:00",Gerät2,20.0°C > "2020-08-27 14:10",Gerät1,22.0°C > "2020-08-27 14:15",Gerät2,19.5°C > > ± weitere/andere Messwerte usw. > > Soweit korrekt? Fast Korrekt;) eigentlich
-
Thread
Variablenfehler
stimmt allerdings ... @ VHDL-Neuling Merksatz: Über den Daumen gepeilt gilt 1,000 = 10 Bit = 10 Zählerflipflops 1,000,000 = 20 Bit = 20 Zählerflipflops 1000,000,000 = 30 bit = 30 Zählerflipflops integer = 32 Bit = 32 Zählerflipflops
Signal nicht SIGNAL nene, das ist ein schlüsselwort und man kommt schnell durcheiander. Du würdest in C ja auch einen Integervariable nicht int nenen in der Art: [c]int int; int = 0; [/c] das gibt nur durcheinander :)
-
Thread
Laufzeitverhalten main-Funktion
unterbrochen werden kann. Wenn die die gleichen Daten verändert, geht's schief: lese Register, ISR(toggelt Bit 4), schreibe Register mit altem Bit 4. Wird zwar beim AVR oft zu einer atomaren Operation optimiert, aber eben nicht immer. b) Die Abfrage in der main klappt nur, solange die Schleife oft genug
Interrupts auftreten können. Schließlich kann ein Interrupt zu jeder Zeit unterbrechen, z.B. wenn eine C Codezeile in mehrere Assembler Befehle unterteilt wird, kann der Interrupt zwischen jedem einzelnen Assembler Befehl die main Routine unterbrechen. PS: Der Portzugriff "C" ist damit immer noch nicht
-
Thread
Atmega 328p & PCF PCF8574: I2C Adresssuche
(); while(1) { // caught in error loop } } [/c] Des Weiteren einmal mit der Adresse und dem zusätzlichen R/W-Bit per I2C-Lib: [c] #define I2C_BASE_ADDR 0x40 [/c] mit [c] if (i2c_start(I2C_BASE_ADDR + I2C_READ)) {
Sven G. schrieb im Beitrag #4890807: > [c]#define I2C_BASE_ADDR 0x40[/c] Vorher schriebst Du: > sich ein Teilnehmer mit der Adresse 39 (dezimal) auf dem Bus befindet. was: > [c]#define I2C_BASE_ADDR 0x27[/c] einer 7-Bit
-
Thread
8-Bit Controller noch zeitgemäß?
>> D.h. RS-485 mit 9bit für die Adressierung geht damit nicht. > Das ein moderner uC keine Protokolle aus den 90ern unterstützt sollte > verschmerzbar sein. Noe, verschmerzbar ist das nicht. Ist naemlich ein Industriestandard
Für die meisten Anwender - auch hier! - ist es völlig egal, ob der Chip 4, 8, 16, 32 oder 64 Bit hat. Kaum jemand nutzt die sich ergebenen Eigenschaften, weil erforderlich, aus. Die kleinen Bastelobjekte lassen sich mit allen gängigen uC lösen. Es geht also nur um den "Geschmack" des Einzelnen
-
Thread
suche ic PWM
Atmel µC unter Arduino ist das in 10 Minuten hingeschrieben - ein paar Pin-Abfragen und ein AnalogOut().
falsch verstanden, ich habe es aber so interpretiert, dass das auszugebende Signal eine Folge aus 6/8bits ist, die immer wieder wiederholt wird. @ unwissend: Würde das Ausgangssignal bei a = 0 b = 1 c = 0 d = 1 e = 1 f = 0 so aussehen: [pre] ___---___------______---___------___ ... -
-
Thread
Atmega644 UART - Komische Ausgabe
lcd_putc((unsigned char)c); } // lcd_putc( (unsigned char)c); uart_putc( (unsigned char)c ); [/c] Dieser Code funktioriert aber nicht so wie ich das erwarte: Unter der IfElse Abfrage habe ich ich ein lcd_putc
[] = ""; // Sendet ein einzelnes Zeichen void uart_putc( char c ) { // Warte bis die Sendeeinheit bereit ist while( !(UCSR0A & ( 1<<UDRIE0) ) ) ; UDR0 = c; } // Sende einen C-String void uart_puts( const char
-
Thread
Teensy Synth "Shruthi 2"
und +3.3V integriert. Versorgt wird das Ganze von einem 9V Steckernetzteil. Der 7805 wird ca. 39C warm bei einer max. Last von 160mA. Das Arduino Nano Board ( ATmega328 ) für die Poti-Abfrage und Modulations-Eingänge wird später durch einen Atmega328 ersetzt. Durch den integrierten ATmega328
-logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries
-
Thread
Variable an Ausgang zuweisen
Hervorholen zu alt ist, aber: Kann man obigen Code von rufus auch einfacher/in einer Anweisung ohne if-Abfrage schreiben? Mir kommt es ein wenig umständlich vor, für eine einfache Pinänderung eine If-Abfrage einzuführen. Oder ist es für den µC sogar effizienter, wenn man den ganzen PORT in eine Variable
nowayback schrieb: > Kann man obigen Code von rufus auch einfacher/in einer Anweisung ohne > if-Abfrage schreiben? Wenn du die anderen Port Pins nicht verändern willst: nein > Oder ist es für den µC sogar effizienter, wenn man den ganzen PORT in > eine Variable schreibt, dort direkt den betreffenden
-
Thread
cpp memory leaks vermeiden
die den Speicher dann bekommen könnten. Du kannst nicht so einfach die aktuelle Speichernutzung abfragen, die zeichnet C/C++ nicht explizit auf, weil ineffizient. Dein Buffer liegt auf dem Stack, der wird natürlich von SBRK überhaupt nicht erfasst. Den Stack kann man zwar auch abfragen, aber muss
richtig sehe, werden wohl für jedes Object 36 Bytes Das kann man übrigens auch super mit sizeof() abfragen. Ich vermute dir fehlt es ein bisschen an Erfahrungsschatz und Wissen über C++ um wirklich einzuschätzen, was für eine Art der Speicherverwaltung du brauchst. Vielleicht erläuterst du mal *genau
-
Thread
Höhenmessung / Entfernungsmessung zu Erde
> Hätte nicht gedacht, dass die so teuer sind Für ein Instrument, dass bei -40°C bis +60°C auf Jahre exakt anzeigt, unempfindlich gegen hohe Beschleunigungen und Erschütterungen ist, kalibriert, verplombt, Luftfahrt zugelassen und Bauart geprüft ist, bei der es zu jeder Schraube
> Für ein Instrument, dass bei -40°C bis +60°C auf Jahre exakt anzeigt -55 bis +70°C > kalibriert, verplombt, Luftfahrt zugelassen und Bauart geprüft ist Höhenmesser werden im Rahmen der jährlichen Avionik-Nachprüfung in ihrem
-
Thread
Bitte um Hilfe bei der Programmierung von AVR8-Mikrocontrollern in C
Da kann doch nur die Arduino-IDE einen Bug haben oder ? C kann doch direkt ein 16-Bit-Register, wie es dass OCR3A ist beschreiben. Auch der Versuch OCR3AL & OCR3AH einzeln zu beschreiben funktioniert nicht. [c] #include <Arduino.h> #include <stdint.h>
Bernd S. schrieb im Beitrag #7514965: > C kann doch direkt ein 16-Bit-Register, wie es dass OCR3A ist > beschreiben. C ist C, und Arduino ist Arduino.
-
Thread
Wann wird dieser Ausdruck false ?
und 'bte' sollte 'btw' - by the way heissen;) ) Noch ein kleiner Tip falls du öfters im Code Bits in Flags testen willst, ich nehme gerne #define Makros dafür. in der art wie zB: [c]#define IS_ALL_BIT(f,bm) ((f&bm)==bm) #define IS_ONE_BIT(f,bm) ((f&bm)!=0) [/c] für zB: [c] if IS_ALL_BIT
!=0) { } [/c] Und ganz extrem wirds bei /Abfragen/ wie [c] if (EndschalterOben=0) { } [/c] Nach so einem Fehler sucht manch einer lang.... ;-) @ Norgan > zuerst mit !! normalisieren Sieh dir mal