-
Thread
µC - UART - Linux
CREAD | CLOCAL | bits | parity | stopbits | baud; comm_params.c_lflag = 0; comm_params.c_line = 0; comm_params.c_cc[VMIN] = 1; comm_params.c_cc[VTIME] = 0;[/c] wie man sieht, ignoriere ich auch den alten Zustand
so nun folgendes szenario: µC: das erste bit jedes bytes ist jetz für framestart reserviert. also beim h-byte = 1 beim l-byte = 0 die linux app ist nun die angehängte. soweit leider keine änderungen. habe einen zähler eingebaut
-
Thread
ATMEL stellt grafische Oberfläche für 8 bit Controller vor
? Weil etwas groß ist, ist es noch lange nicht komplex und noch lange nict auf einem µC.
AchWieLustig schrieb im Beitrag #3630073: > ATMEL stellt eine grafische Programmier-Oberfläche für 8 bit ATMega's > vor, Ach... Ich hatte beim Lesen der Überschrift an ein GDI und eine Klasenbibliothek grafischer Elemente für Atmels µC gedacht ... und nun sowas. Das erinnert mich ein bissel an
-
Thread
STM32: To HAL or not to HAL
die mir auf Anhieb einfallen wo wir doch arg gekämpft haben: - EEproms mit 1Mbit bzw mit mehr als 10bit Adressraum lassen sich nicht besonders gut via I2C an den F0 anbinden. Das Funktioniert so nicht. Scheint aber mehr an der Hardware als an den Libs zu liegen. Da muss man schon reichlich in die Trickkiste
einer geschickteren Definition einfach überflüssig gewesen wäre: Auszug aus der HAL-Library: [c] /** * @brief Sets or clears the selected data port bit. * * @note This function uses GPIOx_BSRR register to allow atomic read/modify * accesses. In this way, there is no risk
-
Thread
Marderschreck Softwareproblem
"The Output Compare Register B - OCR1B from ATtiny15 is replaced with the output compare register C - OCR1C that is an 8-bit read/write register. This register has the same function as the Output Compare Register B in ATtiny15." aus dem Datenblatt würde ja dann eigentlich keinen Sinn machen - oder
Marders. :) Hey, gab es das nicht auch als deutschen Artikel? http://s2.quickmeme.com/img/2b/2b801c8b1404aff14b61e9432c86fb9aa43a20b5083b787d62d1570ded4bcaf3.jpg
-
Thread
Einschaltverzögerung Bodenstrahler mit BM
Leistungsschalter für die Lampen, optisch potentialgetrennt b) die Steuerung für das Zeitverhalten c) dem Empfänger/Auslöser d) Netzteil für b u. c Die kann man alle einzeln aufbauen, testen und wenn sie funktionieren zusammen in ein Gehäuse Setzen und in Betrieb nehmen. zu a) da würde ich Solid-State-Relais
die einzelnen PWM-Kanäle uint8_t pwm_setting_tmp[PWM_CHANNELS+1]; // Einstellungen der PWM Werte, sortiert // ändern auf uint16_t für mehr als 8 Bit Auflösung
-
Thread
Array beim DE! mit VHDL , wo kommen die Daten eigentlich rein?
einer Software. Diese aber interpretiert wie bei C++ die einzelnen Strukturen parallel und simuliert sie auch so. Das ist ja gerade der Grund, warum objektorientierter C++ Entwurf und VHDL so eng miteinander zusammenhängen. Bei der Synthese läuft
bzw. Vektor breit ist. Hier ist gar > nichts virtuell Noch viel extremer ist 1 komplizierte if-Abfrage, die ja z.B. für ein 32 Bit Wort u.U. 32 mal in Hardware (LUTs) gegossen wird. Und eben /nicht/ nur 1 einziges Mal, wie das bei sequenzieller Software der Fall ist.
-
Thread
Spezielles Messgerät gesucht
für eine Genauigkeit brauchst du denn? Mit einem Attiny828 schafft man sowas sogar mit nur einen µC, sofern dir 10 Bit Auflösung reicht. Dann wärst du mit ein paar €uro dabei.
. Es gibt systeme die die Leuchten dann über eine Art Bus abfragen und die Funktionstüchtigkeit zentral auswerten. Und die vom TO, mit zentralem Akku. Dafür wir ein einzelner geschlossener Verteilerraum benötigt, wo nix anderes als Sicherheitsversorgung stattfindet
-
Thread
gratis PIC compiler, der pipelining benutzt?
#3624931: > Welche Alternative würde mich glücklich machen? Daumen mal Fensterkreuz: Alles was kein 8-Bit PIC ist. Es ist kein zufall, daß es für diese verkorkste Architektur keinen freien C-Compiler gibt. Und in Assembler will mit die Teile schon gar nicht programmieren. XL
Codegrösse von 2K tut Assembler wirklich nicht weh - darüber sollte man wohl heutzutage gleich an C und 16/32-Bit denken. Aber ein kleines Programm vom Typ "Pin-high-dann-LED-an" ohne viel Mathematik oder String-Verarbeitung ist in ASM schneller geschrieben als in C. Und der PIC-Assembler ist einer
-
Thread
Zuweisungen überschreiben in VHDL
welche "Adresse" anliegt, werden verschiedene Daten ausgegeben. Oft ist bei dem Datenwort nur ein Bit oder einzelne Bits belegt. Früher wurden in jedem Fall alle nicht verwendeten Bits mit '0' beschrieben. Jetzt schreibe ich einmal vor der Case-Verzweigung [vhdl] Datenwort<=(Others=>'0'); [/vhdl
folgende Befehl verarbeitet werden kann oder im Buffer / FIFO Platz ist. Kann man natürlich auch abfragen. Wenn sich das zwischen abfragen und und Befehl senden zum schlechten ändert ist die abfrage vorher natürlich zwecklos. Was meinst du mit synchronem C++-Programm? >> Nach meinem Verständnis
-
Thread
Unterschied #define und Funktion?
/ "Inline" (Makro) gegenüber einer Funktion, bzw. anderstrum erklären? Gemeint ist folgendes: [c]#define sbi(p,n) (p) |= (1<<n)[/c] vs. [c]void pi (float uebergabe1) { return uebergabe1 * 3.14; }[/c] Zugegeben, beide Teile machen etwas anderes (hab das schnell zusammenkopiert), aber
irgendwie richtig > macht. Und deren Arbeitszeit scheinbar so billig ist dass es sich lohnt jedes Bit einzeln zu betrachten anstelle einen richtigen Compiler zu kaufen? Thomas schrieb im Beitrag #3623009: > und weil Makros professioneller aussehen." An Makros sieht gar nichts professionell aus,
-
Thread
[V] Verkaufe WIFI OTG Shield - Alternative bei fehlendem USB OTG Android / Robotic
soll heissen, alle auf high oder alle auf low. Die nächsten 8 Checkboxen knippse ich jeden einzelnen PortB_Pin von 0..bis 7 auf high oder low, das geht mit den Bytes von 000 bis 255... dafür steht dann 000 als alles low 001 PortB_Pin0 high 002 PortB_Pin1 high 003 PortB_Pin0 und PortB_Pin1
www.ebay.com/itm/Wifi-Web-Server-Module-w-TF-Socket-PIC24F-MRF24WB0MB-/251319125731?pt=Bauteile&hash=item3a83c986e3 http://dangerousprototypes.com/2011/04/05/review-sure-electronics-wifi-web-server-module/
-
Thread
Funktion bekommt keinen Wert übergeben
[c] void daten_senden(uint8_t befehl, uint16_t daten) { char frame[3]; /* Aufbau: Byte Bits Funktion 1 1 Identifikator für erstes Byte (muss 1
Du hast Recht, was deine Vermutung mit der Empfangen-Funktion betrifft. Wenn ich die Abfrage nach dem 7. Bit korrigiere funktioniert es. Ich hatte die Basisfunktionalität in Auszügen bereits getestet, indem ich Daten gesendet und mit Teraterm ausgewertet hab. Nur die Empfangsfunktion hatte
-
Thread
AVR Orgel Eigenbau
Sample geholt und > ausgegeben werden. Oder habe ich was verpasst? Ähm. Man kann mit jedem einzelnen Takt der 48kHz durchaus auch alle benötigten 10 Ausgänge versorgen. Das ist kein Problem [c] ISR( ... ) // wird im 48kHz Raster aufgerufen { for( i = 0; i < NR_CHANNELS; i++ ) {
selbst klingen. Deshalb darf man hier von Verzerrungen gar nicht reden. Eine Orgel hat normalerweise C - f3 oder C - g3 in Manual (ausnahmsweise C - c4, aber nur kleine Übeorgeln) und C - f1 oder C - g1, bei alten Instrumenten auch C - d1 und sogar C - c1 in Pedal. Für 16' Register C = 32,7 Hz, g3 = 784
-
Thread
Ereignisse zählen und mit Vorgabe pro Minute vergleichen.
Fehler drin (Second im addBit ist falsch), neu: [c] uint8_t eventBuffer[8]; uint8_t start, end; uint8_t second void addBit( uint8_t bitValue ) { // end eins hochzählen und ggf im Ringpuffer "umbrechen" end = (end
<< bitOfs); } /* jede Sekunde */ ISR(..timer...) { if ( getKey() ) { addBit( getKey() ); } } [/c]
-
Thread
CMOS oder TTL?
laufen um die einzelnen Bits über Leds zu erkennen. Das ganze soll nicht wirtschaftlich oder irgendwelchen Nutzen haben sondern nur veranschaulichen. Dabei will ich etwas dazu lernen und wenn es fertig ist, soll es anderen
dabei in Zeitlupe laufen um die > einzelnen Bits über Leds zu erkennen. Das ganze soll nicht > wirtschaftlich oder irgendwelchen Nutzen haben sondern nur > veranschaulichen. Dabei will ich etwas dazu lernen und wenn es fertig > ist,
-
Thread
uC führt Code nicht aus, wenn in if-Abfrage zuvor zu viel Code ist?
Ich will einfach nur wissen warum ein uC etwas bestimmtes nur dann macht, wenn hinter einer Anweisung in einer if-Abfrage, die aufgrund ihrer Bedingung nicht mal "ausgeführt" wird, eine Endlosschleife ist. WARUM?? Steht ich irgendwie total
for(;;);"-Schleife fehlt .. EDIT: Und wenn dieser Code ausgeführt werden würde, dann würde der uC ja bereits bei der PIN-Code-Eingabe hängen bleiben (wegen der Endlosscheleife) .. Nochmal die Frage von vorher: Warum macht ein uC etwas bestimmtes nur dann, wenn hinter einer Anweisung in einer if-Abfrage
-
Thread
Taster-Interrupt Fragen
wiederholte Schleife): [c] //nach erstmaligen Einschalten des µCs //LED_PORT = 0 //damit wird an i auch eine 0 übergeben - für 8-Bit acht Nullen //beim zweiten i-Baustein der Ver-Oderung Bit-Shifting um eine Stelle nach links
// -> LED3 *bleibt* AUS --- WARUM?? !!!! // -> LED4 AUS + LED5 AN [/c] Wozu macht man die erste Ver-Und-ung? Die ist doch immer Null im Ergebnis egal welchen wert i annimmt. [c] ... (i & 0x07) | ... [/c] Das ich mit dem Bit-Shifting und der Ver-Und-ung immer die
-
Thread
20x4 lcd zeigt immer das gleiche an
); // D=1, C=1, B=0 lcd_command(0x10); // S/C=0, R/L=0 lcd_command(0x2C); //4bit, 5x10 [/c] Jedoch weiß ich noch nicht wie ich den makefile bearbeiten kann und inwiefern ich die einträge darin ändern muss. Bitte
0b00100000; lcd_enable(); lcd_command(0x07); // I/D=1, S=1 lcd_command(0x0E); // D=1, C=1, B=0 lcd_command(0x10); // S/C=0, R/L=0 lcd_command(0x2C); //4bit, 5x10 [/c]
-
Thread
Einmal void-Pointer und zurück
,0,0}, ... [/c]
__progmem__. > Der MSVC (C89) kriegt es allerdings nicht hin. Es braucht, wie gesagt, mindestens C99. Das kann Winzigweich nun mal nicht.
-
Thread
mit eingänge rechnen
kompilierbar ist und gleichzeitig das Problem aufweist - also im Simulator geht aber nicht auf dem uC. Dann brauchen wir nicht jedes Detail einzeln von Dir zu erfragen.
geschrieben > wurde). Nun, ein String ist halt ein Array aus char. Sonst nutzt C nirgends char für Text. Für einzelne Zeichen wird in der Regel int benutzt. Schau dir mal die ganzen Standard-Funktionen an, die mit einzelnen Zeichen arbeiten, wie z.B. isalpha() oder toupper(). Dort
-
Thread
Viele verschiedene Drehzahlen gleichzeitig messen
doch gar nicht ein ICP zu benutzen. Einfach die Taktsignale an 32 I/Os und dann entweder PCINT oder einzeln abfragen.
Das relativ langsame Zählen kann ein µC gut übernehmen ein µC könnte etwa 8 oder 16 Kanäle in Software Zählen (einfach Pollen) Das gibt auch gleich Entprellen in Software. Dann braucht es halt 2 oder 4 kleine µCs die dann per I2C verbunden
-
Thread
Warum doppelbedeutung static?
kauft Euch ein C-Buch!
; a=hole_a() if (a==NULL) goto out; b=hole_b(); if (b==NULL) goto out; c=hole_c(); if (c==NULL) goto out; d=bereite_vor(a,b,c); if (d==NULL) goto out; result = tu_was(a,b,c,d); out: if (d) deallocate(d); if (c) deallocate(c); if (b) deallocate(b); if (a) deallocate
-
Thread
Prototyp Elektronischen Last (7A@15V)
kleines Geld gibt.. > > Gute Idee > > Wie sieht denn dein aktueller Schaltplan aus? R4 und C1 könnte man entfernen. Da ich mir jedoch die Option freihalten möchte anstelle des 2. MCP4726xx die MCU interne 8-bit PWM als "I"-Soll zu verwenden habe ich die Komponenten mal in der Schaltung belassen
Noch was: Wozu soll C2,C6 und C7 dienen? Die belasten deinen OP direkt kapazitiv. Das ist gefährlich! Wenn du nicht willst, dass die Sache schwingt, dann lass das weg! Gruß, jens
-
Thread
C Programm memory out of bounds
gewöhn dir die C Gepflogenheiten an. Teste NICHT explizit auf 0 oder 1, wenn es nicht sein MUSS. Hier muss es nicht sein. Du maskierst die vom PIND ein einzelnes Bit aus (indem alle anderen Bits auf 0 gesetzt werden)
. Mehr braucht es dazu nicht. Ob bei [c] PIND & ( 1 << PD3 ) [/c] die Werte 0 oder 8 rauskommen können, weil das Bit 3 entweder auf 0 oder auf 1 ist, ist recht uninteressant. 8 ist nicht 0 und gilt damit genauso als logisch wahr, wie
-
Thread
Z180-Stamp Modul
Leo C. schrieb im Beitrag #4321774: > Das läßt sich wohl kaum noch was beschleunigen. Der VNC2 kennt noch einen 8 Bit FIFO-Mode. Hier sollen laut einiger Forumnutzer ca. 65 KBaud möglich sein. Vielleicht
beim Bearbeiten nun 3 Mal das Selbe geschrieben das aber nicht im Text auftaucht, also hier nochmal einzeln. Ich würde es für besser halten ein CP/M Programm zu haben das die Zuordnung der Images zu den Drives bewerkstelligt (assign "BDS-C1.dsk" "C") und evtl. ein Programm das das Inhaltsverzeichnis
-
Thread
schwierigkeiten passenden Bus zu finden
ergibt alleine an Daten für 100 Slaves x 3Byte(RGB)= 300Byte, macht bei 30Hz x 300Byte = 9kByte/s => 56kBit/s hinzu würde noch die Abfrage bzw. das Senden des Sensorwertes kommen. Die erste Idee kam mir mit I2C. Leider hab ich nur theoretisch Erfahrung mit diesem Bus und bevor ich unnötig in Bauteile
dagegen. Nur die fertigen Streifen sind etwas unhandlich. Man könnte aber die neu verfügbaren einzelnen 8mm LEDs nehmen http://www.mikrocontroller.net/topic/325107#new (Da ist ein ws2811 drin) und davon 2-3 Stück pro Feld, dann könnte man auch mit 3x255 dimmen, also etwas mehr wie 9 Bit, statt
-
Thread
PIC18f2550 i2c. Brauche dringend Hilfe (HDMM01)
stellen und brauche deshalb dringend Hilfe. Ich versuche die Daten des Magnetfeldsensors über i2c mit dem PIC18f2550 einzulesen aber kenne mich überhaupt nicht mit i2c aus. Im Datenblatt steht dass die Adresse des Bauteils 60H ist. Bit 0 für Messung, Bit 1 für SET und Bit 2 für Reset. Hier der
Funktionen mit drin. Kann ich nicht sagen. Ich benutze meine eigenen I2C Funktionen, daher kann ich da nicht mehr auskunft geben. Debugge es doch einfach mal im Einzelschritt. Wenns zeitliche Probleme sind bekommst du das dann raus. Oder einfach im Code das WCOL bit abfragen
-
Thread
ATTINY84A ADC Werte sind gleich
Ansicht nach keine gute Idee. Entweder ADC Interrupt oder ADSC in ADCSRA abfragen, siehe Datenblatt ("ADSC will read as one as long as a conversion is in progress. When the conversion is complete, it returns to zero. Writing zero to this bit has no effect."). Man muss, wie
Wartezeit nutzen will/muss. Interrupt kann man machen, muss man aber oft nicht. Anstatt [c] while( 1 ) { MUX setzen ADSC setzen while( ADSC gleich 1) ; ADC auslesen mach was mit dem gelesenen } [/c] kann man das ja auch modifizieren [c] MUX setzen
-
Thread
wie war das noch mit den 8080.
@udo: aktuelle µC sind mir vertraut - bin kein Profi aber komme mit C mitlerweile an ganz brauchbare Ergenisse.
Falk Schilling schrieb im Beitrag #3595429: > C approximieren Das Programm stammt aus keinem der gängigen 8080 C-Compiler. Es fehlen die typischen Funktionsprologe/Epiloge. 8080 und C ist auch eher selten. Als C modern wurde, war der 8080 schon
-
Thread
Attiny13A einfache Quizschaltung
Fuse nicht gesetzt ist, wird das nichts. Also nutze ich nun die Pins 0-4 und verwende wieder die "bit_is_clear" Funktion zum abfragen der Pins. Zweite Sache die mir beim rumtesten auffiel, war dann die Tasterpins nach dem Abfragen wieder auf 1 zusetzen. Damits hats schlussendlich funktioniert. Anbei
versinkst du im Chaos. Also lerne etwas über [[Bitmanipulation]] und wie man einzelne Bits gezielt abfragen oder schreiben kann. >Anbei noch mal der neue Code und was fürs Auge :) Naja . . . Beides eher hyperfluide . . .
-
Thread
Anfänger benötigt hilfe beim Fehler im Programm
Schleife. Eigentlich Bekomme ich das PWM-Signal ja von PB0. jetzt habe ich in der while-Schleife die abfrage [c]if( !(PINB & (1<<PINB0)) )[/c] und [c]if( !(PINB & (1<<PINB1)) )[/c] das erste bedeutet doch, dass PB0 auf GND gezogen werden muss und beim zweiten PB1 oder? Wenn das so ist, an welchem
Das heisst, ich nehme [c]TIMSK = (1<<OCIE1A);[/c] wieder raus? Das hat leider auch nichts geändert.
-
Thread
If-Abfrage in ISR
> if (PINA & empfangspin) dich denke nicht das das besser ist. Denn er weiß nicht wie viele Bits in empfangspin gesetzt sind. Damit kann ich nicht ein Einzels Bit vom Port abfragen.
gesetzt ist oder mehrere. Die Assembler-Befehle sbic/sbir zum Abfragen einzelner Bits in I/O-Registern, auf die du dich vermutlich beziehst, gehen sowieso nur mit Immediate-Werten. Besser ist die Variante von A.K. gegenüber der ursprünglichen auf jeden Fall, da man
-
Thread
MCP23017 - Einzelne Pins auf High schalten
Bei Arduino gehts auch ohne Wissen über den uC. Irgendwo steckt sicher die Bitmanipulation, sie ist für dich aber nicht sichtbar. Ich kenne den MCP nicht, wenn er keine Funktion zum setzen einzelner Bits hat würde ich den MCP auslesen, das Bit ändern
Max H. schrieb im Beitrag #3580827: > Bei Arduino gehts auch ohne Wissen über den uC. Irgendwo steckt > sicher die Bitmanipulation, sie ist für dich aber nicht sichtbar. > Ich kenne den MCP nicht, wenn er keine Funktion zum setzen einzelner > Bits hat würde ich den MCP auslesen,
-
Thread
Mikrocontroller Rechenleistung reicht für aktuelles Projekt nicht?
sqrt64_floorC(square64); } } [/c] Eine Umsetzung der Wurzelfunktionen in Assembler wäre natürlich auch was, aber der Unterschied zwischen der Ruud v Gessel Variante und der oben gelisteten 32bit Wurzel ist
invertiert, sind die durchgeführten Rechenläufe pro sec = 2/ Hz. Zum besseren Vergleich laufen beide µC´s bei 8MHz. Der Hardware-Multiplier im ATMega ist also doch deutlich zu spüren. Getestet auf ATTiny45 mit 64 bit Ganzzahlen -> ~600 Berechnungen / sec Getestet auf ATMega1284P mit 64 bit Ganzzahlen
-
Thread
Atmega32 Timer1 und Timer0 laufen nicht zusammen
hab jetzt mich damit befasst 2 Timer zu benutzen, einen rein für die Zeit und einen für die Taster Abfrage, damit sich die Zeit nicht überschreitet wenn ein Taster gedrückt wird. Einzeln laufen die Timer super, aber zusammen macht es nur der Timer0. Habe ich irgendwo ein kleinen Fehler drinnen ? Ich bin aus anderen Einträgen nicht schlau geworden deswegen schicke ich mal mein Code mit. [c] void start_timer1(uint16_t prescale) { TCCR1B = 0; //16Bit Timer Initialisierung: if (prescale == 0) { TCCR1B = (1<<CS10) | (1<<WGM12); //Prescaler = 1, CTC // }
-
Thread
PSMC 3 Phasen Ansteuerung PIC 16F1788
;************Konfig des PSMC**************************** BANKSEL PSMC1CON bsf PSMC1PRS, 0 ;bit 0 setzen für Timermatch als Periodenstart bsf PSMC1PHS, 0 ;bit 0 setzen für Timermatch als high puls start bsf PSMC1DCS, 0 ;bit 0 setzen für Timermatch als low puls (ende high) movlw b'00110001
etc. WTF? clrf PSMC1POL ;aktiv high pegel wählen (5V entspr. log 1) bsf PSMC1INT, 5 ;5. bit enspricht dem DC interrupt (-> für comparator zum auslesen!!) ;1. bit vom PSMC1INT abfragen/löschen für kommutierung bsf PSMC1INT, 6 ;Interrupt bei start vom highpegel des
-
Thread
ILI9341 langsam Verbesserungsvorschläge?
Die bits kannst du in einer Schleife erhalten: [c] shl_val=0x01; for(i=0;i++;i<8) {if(databyte & shl_val)SETPIXEL(); else CLEARPIXEL(); shl_val<<=1; } [/c] Am besten alles einzeln ausschreiben,
Wenn ich mir bei so grundlegenden Dingen wie der Verkabelung unsicher bin, teste ich die Pins einzeln mit einem Blinky durch: [c] ... #define set_bit(var, bit) ((var) |= (1 << (bit))) #define clear_bit(var, bit) ((var) &= (unsigned)~(1 << (bit))) #define toggle_bit(var,bit) ((var) ^= (1 <<
-
Thread
10 Taster an einem Interrupt
Hallo, nimm einen 16-bit I/O expander für I2C (PCF8575) oder etwas ähnliches. 16 Eingänge für deine Tasten, I2C oder SPI zur Kommunikation und eine /INT Leitung um deinen Prozessor scharf zu machen. Heute ist Freitag, da
> Entprellhardware braucht. Und was würde gegen so eine Entprellung in Software sprechen? [c] unsigned long time; void myInterrupt(){ if(millis()-time < 200){ time = millis(); // Rest, alle Tasten abfragen } } [/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
Beratung bzgl. Wahl des Mikrocontrollers
*kopfkratz* Ähm was für "Module" sind das ? Wenn die via Bus angesteuert werden können, SPI/I2C/OneWire o.ä. kann man die alle an einem betreiben. Wenn da "nur" An/Aus kommt geht auch Multiplexing, also einfach ein "Modul" nach dem anderen abfragen an einem Pin ...
anfangen und dann irgendwann dein eigenes Design machen. RPi ist keine gute Idee, weil du den SoC (d.h. Controller) nicht einzeln kaufen kannst und das Design nicht offen ist. Du wärst also für die Serie darauf angewiesen, RPi+Shield zu verkaufen. Das ist keine wirkliche Option. Das Design des
-
Thread
Quick&dirty - schnelle Problemlösungen selbst gebaut Bilder
Victorinox-Händlerin nachgefragt, sie hat daraufhin ein Ersatzteilekatalog rausgeholt und gesagt, was man so alles einzeln nachbestellen kann. So habe ich nun den roten Halter mit Grundausstattung an Bits, die Ratsche und das Verlängerungsstück einzeln gekauft. Ein Paar Wochen Wartezeit war dabei, auf Lager hat sie
einige nicht glauben wollen und daher einen Doppelblindtest empfohlen haben. Das Tool hab ich mir in C# schnell zusammengecodet, und dabei mal wieder festgestellt, dass die persönlichen Programmierfähigkeiten in C# maßgeblich davon abhängen, wie gut man im Googeln ist. Das Tool sendet nur einzelne Commands
-
Thread
MIDI over WIFI ( RF Bluethoot Dect USB ) Homemade Interface
Torsten C. schrieb im Beitrag #3659237: > R. W. schrieb im Beitrag #3658878: >> Torsten C. schrieb: >> Du verwendest die MS engine als Midi Sequencer > Nein, ich verwende sie als Bluetooth-Midi-Expander mit
Klein Schreibung achten ... beim Muxen mach ich mit 10 microS zwischen den Y0-Y15 oder Y0-Y7 Abfragen. z-B-. > Das habe ich bei dem SENA BT-Modul so gemacht.(Password, BitRate, > Hand-Shake) ect.pp > Krucks dabei war halt nur, das man nach jedem Komma Parameter eine Pause > machen musste
-
Thread
LED Tisch mit Berührungs-/Gegenstandserkennung
Anforderungsprofil angelegt werden. Zum einen steht da die Hardware: - LED: RGB oder RGBW - µC: Anzahl PWM-Ausgänge (8bit, 16bit, 32bit)? - µC: Kommunikationsarten? Anzahl der Ports für Kommunikation - µC: Art der Programmierung (SPI, JTAG,...) - µC: Anzahl weitere benötigter Pins inkl. Funktionen
G. schrieb im Beitrag #3686659: > Zum einen steht da die Hardware: > - LED: RGB oder RGBW > - µC: Anzahl PWM-Ausgänge (8bit, 16bit, 32bit)? 3x PWM RGB (evtl. HSV Farbmodell), 1x PWM IR-LEG (wenn nicht anders angesteuert wird) > - µC: Kommunikationsarten? Anzahl der Ports für Kommunikation bei
-
Thread
Schieberegister: Abfrage von mehreren Tastern
Schieberegister, das macht der P/S Eingang. Nachdem dann die Werte im Schieberegister sind, wandern die einzelnen Bits im Gänsemarsch aus dem Q8 Ausgang raus. Eines nach dem anderen und jeweils um 1 Schritt weiter, wenn du einmal auf C drückst.
) { Result <<= 1; if( IS_SET( SR_PIN, SR_DATA ) ) Result |= 0x01; SET_BIT( SR_PORT, SR_C ); CLR_BIT( SR_PORT, SR_C ); } return Result; } int main(void) { uint8_t Byte; SR_DDR |= (1<<SR_PS) | (1<<SR_C); DDRD |= (1<<PD5) | (1<<PD6) | (1<<PD7);
-
Thread
Video Streaming STM32 -> Z80
Hi Sean Goff, der Z80 hat ASM Befehle zum abfragen von einem einzelnen Bit (ob gesetzt oder nicht) und zum setzen von einem einzelnen Bit abfrage : BIT b,r (8 Takte) setzen : SET b,r (12 Takte) dazwischen brauchst du noch einen Jump (if Zero
Uwe B. schrieb im Beitrag #3562085: > der Z80 hat ASM Befehle zum abfragen von einem einzelnen Bit > (ob gesetzt oder nicht) und zum setzen von einem einzelnen Bit Danke, jetzt wo dus sagst sehe ich es auch. Dann werde ich es wohl mit 8 BIT abfragen mit Jump machen.
-
Thread
Welcher Bus kann das?
dann nicht einen Bus mit 10m Länge, sondern 10 Busse mit 1m Länge und 11 Devices. Das sollte mit I2C noch machbar sein. Mit drei PCA9545(A|B|C) kannst Du die einzelnen Busse multiplexen und immer einen auf Deinen Controller schalten. Wenn Du auf PWM verzichtest, reicht für jede Kachel ein PCF8574
/de/technologies/semiconductors/microcontrollers/32-bit/Seiten/5006541-LPC11C24FBD48-301,.aspx?IM=0#sthash.yieImdI3.dpuf
-
Thread
LCD Anzeige wird nicht gelöscht
) { lcd_cmd(0x08); // LCD ausschalten } void lcd_send(char data) { char rs = PORTD; // Abfrage ob RS 0 oder 1 rs &= 4; // RS auf 1 setzen um Daten senden zu können char tmp = data; tmp &= 0xf0; // Erst die obere Bits aufbereiten und schicken tmp|=rs; PORTD = tmp; PORTD |= (1<<PD3
der 4 hier [c] rs &= 4; [/c] ist inakzeptabel. Überall anders hast du (1<<PD2) benutzt. Warum nicht hier? Dann würde man auch aus 5 Schritten Entfernung erkennen können, was hier wirklich passiert - nämlich den
-
Thread
Interrupt on Change am PIC 16F887
return from interrupt” instruction, RETFIE, exits >the interrupt routine, as well as sets the GIE bit, which >re-enables interrupts. Du könntest alle Interrupts einzeln deaktivieren.
Das mach ich doch mit: [c] INTCONbits.RBIE = 0; [/c] Damit sollten zumindest die Interrupts von PORT B verboten werden....