-
Thread
Kein Bild bei eigenem VGA
Für das Bild musst du die einzelnen Bits des DA-Wandlers entsprechend setzen, aber nur innerhalb des sichtbaren Bereichs. Man sieht auch was wenn man die außerhalb gesetzt lässt aber einige Monitore skalieren dann das Bild nicht richtig
); [/vhdl] Das ist ja jetzt ein Array mit den "Abmaßen" 16x9 und jede Stelle beinhaltet 5 Bits oder sehe ich das falsch? weil Vivado spuckt mir den Fehler hier aus: [Synth 8-691] width mismatch in association of array element 0; element has 5 bits, expression has 8 bits ["C:/Users/Daniel/
-
Thread
Code fehler bei 74hc165 kette (einzelner geht)
_BV(DATA165_PIN)) ? 1 : 0; } [/c] wenn PINB & _BV(DATA165_PIN) in der Abfrage TRUE ergibt, dann kennst du bereits das Ergebnis, das die Funktion zurückgeben muss. Das kann dann nur noch 1 sein, weil ja der Pin auf 1 gewesen sein
Vorgehen hätte man das schon gesehen, dass das falsche Bit auf 1 geht. Muss also heissen [c] for (unsigned char i = 0; i < 8; ++i) { shiftResult <<= 1; if (PINB & _BV(DATA165_PIN)) shiftResult |= 0x0001; CLOCK165_low();
-
Thread
Problem mit Variable in C
Vergleiche die einzelnen Elemente einfach separat: [code] if (tm.Hour = 12 && tm.Minute = 0 && tm.Second = 0) { ... } [/code]
c] So müsste es besser gehen
-
Thread
Pwm von RC Empfänger mit Arduino verarbeiten
Im Prinzip ist es zwar eine, aber praktisch dann eher doch nicht. Für die Auswertung mit einem µC würde man nun nicht jeden Serversteuer- impuls an einen einzelnen Controllereingang hängen, sondern sich im Empfänger den Punkt suchen, wo das komplette Telegramm anliegt. Und das an den µC hängen. Dann
changes } /* static int tick=0; tick=getTick(); // so würde ich die Hightime vom Signal abfragen (für meinen code) */ }[/c]
-
Thread
Wie überwacht man die Einzelzellenspannungen aus in Serie geschalteten Akkus ?
Datenblatt richtig interpretiere. Kann natürlich sein das dies nur für das DIP-Gehäuse gilt. Um die einzelnen Zellen direkt zu überwachen ist wohl wirklich die beste Methode für jede Zelle einen eigenen Low-Voltage µC zu benutzen. Da ich mittlerweile auch der Meinung bin das LiFePO4 mit der Zeit driften,
3 18Bit-ADs ? Die sind dann so hoch auflösend, daß du gegen Masse messen kannst. 3x LiFePo sind max. 12V (geschätzt) bei 18Bit eine Auflösung von 0.0000457764V. Beispiel für AD wäre z.B. der MCP3421 bei Reichelt
-
Thread
Musikalisches Diskettenlaufwerk
schlimm ist, Bitmasken und Nummern gemeinsam zu verwenden? Die Bitmasken brauche ich doch für die if-abfrage, ich prüfe doch einfach darauf ob das Bit gesetzt oder nicht, und wenn es gesetzt ist gibt das einen Wert/Bitmaske auf den ich prüfen kann. Die Bitnummern brauche ich aber um die Pins anzusteuern?
abgewinnen. Aber >das lag glaub ich am Aufbau selbiger. Was zum Geier willst du mit einem 32 Bit ARM, wenn du nicht mal die Grundlagen von C beherrschst? Kauf dir eines der Standardbücher von C und arbeite es KOMPLETT durch! Das kann dir kein Tutorial, Forum, STM32 oder die Mutti abnehmen!
-
Thread
Von Arduino zu C(++)
Dein Post verwirrt etwas. "richtiges" C++ ist eben objektorientiert im Gegensatz zu C. Das hat aber nichts mit Arduino zu tun. Die Sprache verwendet Arduino genau so wie Visual Studio, Eclipse und co?! du musst unterscheiden ! C ist nicht
#3727082: > Wenn du vorher Arduino gemacht hast, dann hast du aber schon alle > Syntaxelemente von C verwendet (oder solltest es zumindest)... Das aufjedenfall. Ich persönlich hatte garnicht die großen Probleme mit C aber das man aufeinmal nur mit einzelnen bits arbeitet, von Pins umdenken muss
-
Thread
AVR Interrupt-Verhalten
gesetzt, Welcher Zähler? Es gibt auf dem AVR keinen derartigen Zähler. Ein Ereignis setzt ein Bit und wenn Interrupts zugelassen sind, triggert dieses gesetzte Bit letzten Endes den Aufruf der zugehörigen ISR. Die Reihenfolge in der diese Bits ausgewertet werden beginnt jedesmal wieder von vorne
beeindrucken, dass dein mit 4Ghz getakteter PC (unter Windows) ab und zu ein Päuschen einlegt. Auf deinem µC bist du alleine auf dem nackten Silizium. Da gibt es kein Betriebssystem oder einen Virenchecker oder Abfragen von Mails oder einfach nur Speicher aufräumen, welches dir Rechenzeit unter dem Hintern
-
Thread
Quadrature Decoder kann nicht synthetisiert werden
Pegel. Mhm, das ganze ist irgendwie eine eigene Welt. Habe mitlerweile viel Erfahrung mit MCUs (8Bit, DSP, 16Bit, 32Bit, ARM), aber hier habe ich das Gefühl, als hätte ich nicht den Hauch einer Ahnung. @Lothar Sorry, hab wohl nicht alles gelesen. Aber ist eine interessante Seite, die ich gerne
#3721102: > Mhm, das ganze ist irgendwie eine eigene Welt. Habe mitlerweile viel > Erfahrung mit MCUs (8Bit, DSP, 16Bit, 32Bit, ARM), aber hier habe ich > das Gefühl, als hätte ich nicht den Hauch einer Ahnung. Ja MCU in C-Programmieren ist keine Grundlage für FPGA-Entwicklung. Was du brauchst ist ein
-
Thread
Dynamisches Array (mit calloc() und realloc()) löst BusFault aus. Wieso?
Erstmal solltest du wohl ehr eine 8bit breite Variable für ein einzelnes Bit nehmen. Gleich 32bit für nur 1 bit zu verwenden, ist etwas verschwenderisch. Wenn du es dir leichter machen willst, kannst du in der Doku deines Cortex nachsehen
Wie schon Peter angesprochen, fehlt die Fehlerbehandlung und dann musst du beachten, dass das ein µC und kein PC mit mehreren GHz/GB ist. Also verwende geeignete Datentypen um Speicher zu sparen, kein ULONG um nur ein mickriges Bit zu speichern! Und dann sollte man auf einem µC immer auf einen Heap
-
Thread
If Abfrage in C - Frage zu Verkürzung
ein logisches Ergebnis haben will, eben anschließend einem Vergleich unterziehen. Und nochwas: C ist nicht "aber sehr maschinennah". Vergleiche doch mal die Ausdrucksmöglichkeiten von C mit der Hardware in einem kleinen PIC16. Dort findest du ausdrückliche Befehle zum Arbeiten mit einzelnen Bits
> als die Syntax von C. naja, die Header braucht es in erster Linie, damit ich statt "Bit 4" einen symbolischen Namen nehmen kann. Wenn ich "Bit 4" meine sage ich in C einfach [C] if (PORTA & (1<<4)) [/C] ZigZeg
-
Thread
FT232R Hardware Handshake Verständnisproblem
netzwerkkarten ausnutzen ohne Probleme. Ist zwar nicht wirklich vergleichbar aber deine 256000 bits/s sind auch nur 32kb/s - also nichts. Teste erst mal mit einer anderen Software, zur not einfach die CMD. cat COM1 > Datei.txt und schicke vom µC einfach das Alphabet rüber (unendlich oft).
Array und keine list. Byte[] buffer = new Byte[MAX_SIZE](); hier schon das nächste Problem: [c] this.port.ReadByte(); [/c] du liest jedes Byte einzeln!!!! Kein Wunder das es viel zu langsam ist. Der Overhead ist damit viel zu gross. Verwende lieber diese Funktion: http://msdn.microsoft.com
-
Thread
Datenaustausch von µC und PC
) und kriegst den Wert ACCEL_XOUT[15:8] (also die oberen 8bit von einem 16bit Wert) zurück. Wenn du die unteren 8 Bit auch noch willst, dann musst du noch ein 3C schicken und kriegst das dann zurück. Wie das nachher aussieht ist dir komplett überlassen aber
ich das richtig > verstanden habe. Gibt es denn überhaupt µC mit Registern größer 8 Bit? Das macht doch überhaupt keinen Sinn, die UART überträgt immer jeweils ein Byte und das ist nunmal 8 Bit groß (obwohl es UARTs gibt die auch 9 Bits zulassen). D.h. auch
-
Thread
Danneggers Entprellroutine im AVR benutzen
allerdings Arduino typisch zb mittels [c] ....... ( digitalRead( 2 ) << 2 ) + ( digitalRead( 5 ) << 1 ) + ( digitalRead( 9 ) [/c] dann ist das insofern ein bischen witzlos, weil die ganze Abfrage mittels digitalRead
nämlich wirklich nicht einfach, obwohl es nur ein paar Zeilen sind... Als Tipp: alle Variablen als einzelne Bits ansehen. Dann sind ct1 und ct0 die Bits eines Zwei-Bit-Zählers.
-
Thread
AVR Assembler-Frage
das andere soll ein Bit (in > einem dritten Register) gesetzt werden. Hmm, also doch vorzeichenlos? Dann ist aber das C-Flag richtig.
Interrupt statt Overflow? Im Simulator im AVRStudio kann man sich schön ansehen, wie lang die einzelnen Bits sind. Ich bin grad an der 10Bit-PWM. Allerdings wird mir das in Assembler langsam zu mühselig. Ich werd daher nur die Interrupts in Assembler machen und die Mainroutinen bequem in C. Dann
-
Thread
Wieso ändert sich die Bitlänge?
kurioses Problem, was ich mir nicht erklären kann. Ich habe ein Array mit 865 Feldern, die durch Bits (also ein Feld ist entweder "0" oder "1") belegt sind. Nun möchte ich diese Bits seriell auf einem RS485 Bus ausgeben, in dem ich jedes Feld abfrage und den jeweiligen Pin des µC auf "High" bzw. auf "Low" setze. Ein Bit soll eine Länge von 6,4µs haben: Wenn der Pin des µC auf "High" bzw. auf "Low" gesetzt wird, dann soll dieser Zustand 6,4µs anhalten. Das realisiere ich durch NOPs (no operation, siehe auch Quellcode
-
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
Atmega48 UART sendet bei TX Abschaltung ein ungültiges Zeichen
sts UBRR0L, r16 ldi r16, UH_UCSR0A_INIT ; Control und Status Register A, B und C setzen sts UCSR0A, r16 ldi r16, UH_UCSR0B_INIT sts UCSR0B, r16 ldi r16, UH_UCSR0C_INIT sts UCSR0C, r16 pop r16 ; Arbeitsregister restaurieren
die Abfrage, ob das frame komplett übertragen wurde nicht korrekt. -> "This flag bit is set when the entire frame in the Transmit Shift Register has been shifted out and there are no new data currently present
-
Thread
Cyclone III JTAG erkennen
Wie wärs denn mit einer ganz simplen Lösung? Einfach mitm uC nen Pin abfragen! Wobei z.B. der Jumper an jenem Pin immer nur zusammen mit dem JTAG-Stecker gesetzt bzw. entfernt wird. Ist "nur" eine IF-Abfrage in der Software... Ein bisschen umständlicher
mit den Daten aus dem Flash konfiguriert und eine, > wo er nur auf CONF_DONE wartet. Nö, ein einzelner Source-Code reicht aus. Dafür gibt es in C und C++ die Möglichkeit mit #ifdef zur Compilierzeit Entscheidungen zu treffen. Das passende Gegenstück findest du in den Komandozeilen Optionen des
-
Thread
bistabiles Relais für AVR/Arduino
Platzbedarfs, ist das ein weiterer Nachteil der Variante mit Eltako. Man braucht zwei I/O-Pinne des uC. Und man hat mehr Verdrahtungsaufwand und muss ziemlich aufpassen, dass man nicht die Netzspannung auf den uC-Eingang legt. Es gibt noch einen Eltako mit 4 einzeln schaltbaren Kontakten und gemeinsamen
schaltet über den ULN2801 den gemeinsamen Anschluss der Relaisspule auf GND. Er bekommt dazu vom uC 8 Bit, wovon aber nur eines auf "1" liegt, je nachdem welche Reihe geschaltet werden soll. Die TPIC6B595 sind für den eigentlichen Schaltvorgang zuständig, also ob das Relais gesetzt oder zurückgesetzt
-
Thread
Anfänger fragen zur Programmierung des Atmega32A in C
werden? Oder ist das nur auf Port C? Wenn es nur Port C wäre, kann meine vermutung das DDRC auf Port C verweist ja nicht stimmen... und wofür steht die 254? [code] PORTC &= 255-_BV(0); // 0 auf Bit 0 Ausgeben, Rest so lassen
genau? Das kommt von deinem Compiler. Definiert dürfte das ganze in der avr-libc header sein. [c] #define _BV(bit) (1 << (bit)) [/c] Ich denke, somit dürfte sich der Befehl von alleine erklären. ;) Martin Kathke schrieb im Beitrag #3693219: > Frage 2.1.1 : Steht die 0 in _BV(0) für die Pin
-
Thread
Fremd Matrix Abfragen
darauf schon Feststelltaster und gewönliche Taster verbaut und ich will die Fremd Matrix mit einem µC abfragen. Ich habe einen alten Schaltplan auch dazu ausgegraben, das stimmt auch soweit mit der alten Platte überein. Gegeben sind mir an einem Anschluss 6 pins. 1 0V DIG 2 +10V 3 AC CLK
auslesen will bzw welche Datenregister ich setze , RW wäre mein Read oder Write für das setzen der einzelnen Statuse zum abfragen der Daten. Wie ich das ganze anfangen soll, weiss ich leider im Moment gar nicht. Eventuell so: CLK ( high oder low ? ) Setzen des RW Status auf Write ( high oder
-
Thread
aus mehreren billigen Quarz-Wanduhren eine Weltzeituhr basteln
Mein Vorschlag wäre: Eine Eigenbau µC-DCF-Uhr mit Auswertung des Sommerzeit-Bits. Damit ist dieser Uhr die UTC und die gültige ME/S/Z bekannt. Ein Akku-Backup ist empfehlenswert. Du wirst wohl billige DCF-Uhren ausschlachten müssen
bei http://www.timeanddate.com/services/api/ gibt es eine API für Zeitzonen, die kann man einfach abfragen.
-
Thread
Schon mal jemand das CY8CKIT-049 4200 in der Hand gehabt?
Versuche mit 41xx und drei verschiedenen LCD- Anzeigen scheiterten vermutlich an einem kaputten PSoC4- Chip. Für den Drehgeber nehme ich mal den TCPWM. Es soll ein Sinusgenerator werden, wahlweise 1 Ton mit 9 Bit oder 2 Töne mit 8 bzw. 7 Bit (mehr geht leider nicht bei PSoC4).
bit0 = QuadDec_STATUS_DOWN bit1 = QuadDec_STATUS_RUNNING direction is _STATUS_DOWN see TRM PSoC 4200 S. 176 */ myEncoder.direction = QuadDec_ReadStatus() & 1; [/c] myEncoder ist
-
Thread
sd-Karten, Sektoren, Cluster
fragmentierten Dateien, mit welchem Sektor eines Clusters anzufangen ist? sector ist bei Chan ein 32bit-Wert. Wie wird der 33bit-Bereich der Karte angesprochen?
(8); case 4://busy-abfrage 8xRx DMA_STATUS = 5; DMA3_transfer_from_SSP0_to_buffer(8); break; case 5://busy-abfrage auswertung if(buf_rx[7]=!255){ DMA_STATUS = 4; DMA2_transfer_from_buffer_to_SSP0
-
Thread
VHDL Eingang einen Wert zuweisen
--startbit tx_bit <='0'; elsif c = 10416 then --00000001 tx_bit <='1'; elsif c = 15624 then --00000010 tx_bit <='1'; elsif c = 20832 then --00000100 tx_bit <='1'; elsif c = 26040 then --00001000 tx_bit <='0'; elsif c = 31248 then --00010000 tx_bit <='0'; elsif c = 36456 then --00100000 tx_bit <='0'; elsif c = 41664
-
Thread
Energieverbrauch ATtiny261 :-)
>das ist zwar kein C Meine Kenntnisse in C sind gering, ich werde mich hüten, darin Ratschläge geben zu wollen; aber so ganz anders wird's wohl nicht aussehen. >nicht mit schwingen beginnt Das merkt man dann ja sehr
Wo finde ich in diesem C-Programm das sleep mit idle?
-
Thread
Zählen von Impulsen ohne T0
Zähler alle paar µs inkrementiert. Der Zählerstand sollte möglichst nicht "überlaufen". Also sollten 64 Bit Breite ausreichen. Das Inkrementieren einer einzelnen Zahl braucht nur wenige Taktzyklen. Bei jeder Ansteigenden Flanke holst Du Dir den aktuellen Zählerstand und ziehst den Vorgänger ab. Je nach
Bit Zähler macht jetzt schon nach weniger als einem halben Tag schlapp.
-
Thread
[V] Bausatz für Giess-o-mat Sensor
leider bei verschiedenen Sensoren unterschiedlich // sein und sollte daher bei jedem Sensor einzeln eingetragen werden. ///////WICHTIG/////// } [/c] Der Code stammt von diesem Blogeintrag und wurde von mir nur leicht modifiziert. Dort wird außerdem der Betrieb mit mehreren Sensoren durch
Periodendauern sind ziemlich klein und der Messfehler dadurch recht groß. Ich habe da also einen 14 Bit Zähler IC angeschlossen. Das 14. Bit resettet den Zähler und das 13. Bit verwende ich für die Auswertung, sprich der ESP misst die Periodendauer von 13. Bit. Das sind so 26 ... 2000 ms, also eher gemütlich
-
Thread
kleines Projekt für Einsteiger: Aufbau einer Steuerung für eine CD-Schleifmaschine
Wasserpumpe - Einer 12V Politurpumpe - Einem Antrieb für die Schleifscheibe (4-fach-Wechsler, mit Abfrage?!) - Einem Wechselkarusell für die 4 Schleifscheiben (mit Abfrage?!) - Einem Elektromagneten zum Fixieren der Schleifscheibe auf dem Antrieb der Schleifscheibe Ich denke das ganze lässt sich
Brückentreiber Timer A/D Wandler ... Wenn du dich da eingelesen hast und mit deinem 8 oder 16/32 Bit µC mehrere Leds gleichzeitig unterschiedlich schnell blinken lassen kannst, gleichzeitig dazu mehrere Taster prellfrei einliest, einen Poti einliest und je nach Stellung dazu einen DC Motor in der Geschwindigkeit
-
Thread
Taster am AD Wandler plus WakeUp - wie?
gegen GND; die Schaltung selbst kannst Du sicherlich im Kopf nachvollziehen. Bezogen auf einen 10Bit-ADC ergeben sich rein rechnerisch folgende Werte für die einzelnen Taster: 1-8: 93, 170, 236, 292, 341, 383, 421, 455 9-16: 485, 512, 536, 558, 578, 597, 614, 640 Die kleinste Änderung ergibt
Hi c-hater, wow, danke für die ausführliche Info und deine Mühe! Dann wird meine Schaltung ja wesentlich einfacher. Hoffe dass ich den C-Code hinbekomme. Dann mache ich mich mal an die Arbeit, leider
-
Thread
Bit-Manipulation in C (schnellere Formulierung?)
Hallo ! ich habe eine Frage zum Thema Bit-Manipulation in C http://www.mikrocontroller.net/articles/Bitmanipulation#Standard_C_4 Abfrage 1 (verstanden und akzeptiert) [c]// prüfe ob Bit 4 in der Variable tmp gesetzt ist if (tmp & 0x10
Boolschen Wert wirken (anstatt die einzelnen Bits des "tmp & 0x11" zu negieren): geänderte Abfrage 2 [c]// prüfe ob Bit 0 und Bit 4 in der Variable tmp gelöscht sind // die Klammer ist wichtig! if (!(tmp & 0x11)) { // hier die
-
Thread
Motorfader Midi
zu meinem neuen Bauprojekt. > > (1) Ich suche einen Mikrocontroller mit dem ich viele Potis abfragen > kann (viele ADC-Eingänge). Wenn diese Limitierung nicht wäre, welchen µC hättest du denn sonst genommen? Sprich: mit welchem µC (bzw. µC-Familie) kannst du umgehen? > (2) Oder ist es möglich
einfache Sache. Zumal du ja nicht nur Pins für die ADC brauchst, sondern ja auch noch den Motor jedes einzelnen Faders ansteuern können musst, was dann wunderbar in die jeweiligen Satelliten-µC passen würde. Apropos Motor: > (3)Ich habe Motorfader. Mit dem Mikrocontroller möchte ich den fader > abfragen
-
Thread
Bits seriell einlesen und in Variable speichern.
schreibt niemand 8x den gleichen Code, dafür gibt es Schleifen: [c] while(1) //Endless loop { _delay_ms(1000); for ( int i=0; i<8; ++i ) { bit =(PIND & 0x40) ? 1:0; //PIND6 abfragen Telegramm[i]=bit; Telegramm[i]= Telegramm[i] << i; _delay_ms
/c] 5. Es gibt keinen Grund, die Bits einzeln in ein Feld zu speichern: [c] Daten = 0; for ( int i=0; i<8; ++i ) { Daten |= (PIND & 0x40 ? 0x01: 0x00 ) << i; _delay_ms(500); } [/c] Das
-
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
Embedded Linux & C, system() liefert nicht den richtigen Rückgabewert?
Frank M. schrieb im Beitrag #3663307: > Ja, rtc muss um 8 Bit geshiftet werden. Besser (portabler) ist [c] #include <sys/wait.h> ... printf ("%d\n", WEXITSTATUS(rtc)); [/c] ZigZeg
(rtc)); rtc = system ("ping -c 1 127.0.0.1 >/dev/null 2>&1"); // den gibt es immer ;-) printf ("rtc = %d\n", WEXITSTATUS(rtc)); return 0; } [/c] # cc x.c -o x.out # ./x.out rtc = 1 rtc = 0 Und was hat ping mit
-
Thread
Raspberry Pi: Werte vom Temperaturlogger in SQL oder RoundRobin DB speichern?
Hi Bernd, Bernd Schuster schrieb im Beitrag #3664274: > @Karl & c-hater: komplexe DB Abfragen wie die genannte benötige ich > wahrscheinlich gar nicht, bzw. kann mir das aktuell nicht vorstellen. Es > geht rein um die Aufzeichnung und Darstellung von Temperaturkurven
Datenmaterial zu finden und auszufiltern, c-hater schrieb im Beitrag #3664881: > Wenn du zu blöd bist, den Sinn hinter solchen Abfragen zu erkennen, nur > als Stichworte: Wackelkontakt, Kabelbruch... Na ja, deine Aussage bezog sich darauf
-
Thread
[C] ATmega32 tut nicht was er soll. Tasterabfrage
Valentin S. schrieb im Beitrag #3658959: > #include "lcd-routines.c" Wer macht denn so was? Valentin S. schrieb im Beitrag #3658959: > loop_until_bit_is_clear Zeig mal diesen Teil der Source.
Pullup Widerstand an den PA7 (10k oder so), dann funktioniert dein Programm. Mit der Anweisung [c] PORTA = 0x01; //Motor anschalten [/c] schaltest Du den internen Pullup aus. Weil Du das Bit PA7 mit 0 beschreibst. Dass es einmal funktionieren soll wundert mich deshalb sehr.
-
Thread
atmega8-Timer1 zu langsam
einen kleinen Zähler in Software laufen lassen, der nur alle X Takte eine andere Funktion aufruft. [c] ISR(bla) { static uint8_t cnt; cnt++; if (cnt==4) { cnt =0; // Mach was langsames bei jedem 4. ISR-Aufruf } // Mach was schnelles bei jedem ISR -Aufruf } [/c]
% 10; out_data[4] = anzeige.stunde / 10; out_data[5] = anzeige.stunde % 10; } } [/c] PORTC = stelle[s]; Hier brauchst du ganz sicher nicht ganze 8 Bits des Ports. Mach also besser eine maßgeschneiderte [[Bitmanipulation]].
-
Thread
Marderschreck Selbstprogramm
Wozu eigentlich ... [C] void Timer1(){ TCCR1 |=(1<<CTC1)|(1<<PWM1A)|(1<<COM1A1)|(1<<CS12); ... [/c] das CTC Bit? Alles was du brauchst ist PWM1A. Das erzeugt doch bereits eine PWM basierend auf OCR1A (Duty Cycle
bit gesetzt ist ist Timer1 zurückgesetzt und zählt dannn bis es ein Match mit dem OCR1C register hat also mit mein maxpwm ...so hab ich gedacht
-
Thread
Problem beim abfragen von 2 DHT22
Hallo, ich hab etwas Code geschrieben um die Temperatur und die Luftfeuchte von 2 DHT22 auszulesen und auf einem 4-Zeiligen Display anzuzeigen. Das auslesen der einzelnen Sensoren funktoniert aber es wird immer nur der erste angezeigt. Wenn ich diesen auskommentiere wird der zweite angezeigt aber nicht beide zusammen. ich bin langsam am verzweifeln... hier mal der Code: [avrasm]/* * LCDTEST5.asm * * Created: 20.04.2014 16:14:50 * Author: Fritz */ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Steureung eines LCD ;; ;;PortD ausgang: ;;0 - Db0 ;;1 - Db1 ;;2 - Db2
-
Thread
328P LichtWecker
ein kleiner LichtWecker sein. Das Herzstück soll der ATMEGA328P sein der das Display (überlege ein I2C adapter zu verwenden), das RGB-STRIPE (PWM), evtl. eine Halogen-Lampe (12v PWM) ansteuert. Am Input hängen ein Drehencoder mit Button, die RTC, ein Fotowiderstand und ein Bluetooth-Module um später alles
#3649815: > Die beiden Interrupt Pins sind für den Button und den Encoder. Schalter per Interrupt abfragen? Vergiß nicht, dass Schalter prellen. Es soll doch wohl reichen, wenn du alle paar Millisekunden mal timergesteuert die Stellung abfragst.
-
Thread
Wer verwendet RFM69?
); DEACTIVATE_RFM; // Check if PayloadReady is set AND unused bit is not set (if bit 0 is set, module is not plugged in or communication fails) return ((status & (1<<2)) && !(status & (1<<0))); } [/c] Damit wird jetzt nicht nur das PayloadReady-Bit geprüft,
, Sendeleistung (80mA) mit der unter „SPI 16BIT_8BIT.c“ stehenden Funktion. Hoffentlich habe ich verständlich genug ausgedrückt und es findet sich jemand, um mir zu helfen.
-
Thread
Binär Uhr Selbst Bauen
mit 47HCxxx Logik ICs > -in welcher Sprache macht man das am besten (habe schon kleine Erfahrung C oder ASM, da du Erfahrung mit C++ hast würde ich C sagen.
Register weiter, > dass es die Sekunden hochzählt? Das geht nicht. Zählen mußt Du in Software. [c] if( Bedingung ) sekunde++; [/c]
-
Thread
Leisungsvergleich ARM AVR
Operationen eventuelle Überläufe berücksichtigt werden müssen. Der ARM rechnet prinzipiell mit 32 Bit. Um die Bits los zu werden, die durch eventuelle Überläufe auf 1 gesetzt wurden, erzeugt z.B. der IAR Compiler bei 8-Bit Variablen massenhaft Shifts um 24 Bit nach links, gefolgt von Shifts um 24 Bit
250; //SSP0CR0 = 0x0007; /* Set mode: SPI mode 0, 8-bit */ //SSP0CR1 = 0x2; /* Enable SSP with Master */ } ... void ssp0_set_speed(char divider){// fast 2...254 slow SSP0CPSR = divider; } [/c] Der SPI-AVR mit halbem Prozessortakt... Beides
-
Thread
pixel bewegen bei vga-ansteuerung
in='1' then if (c<200000) then c <= c+1; else if (key(0) ='0') then rechts_neu <= rechts_neu+1; links_neu <= links_neu+1; if rechts_neu = 640 then
Weil aber eine modulo-300 Rechnung auf einem FPGA umständlich ist, würde ich eine Zufallszahl mit 64 Bit Breite ermitteln, daraus dann einzelne Bitmuster "ausschneiden": 1x 0..255 (8 Bit), 1x 0..31 (5 Bit), 1x 0..7 (3 Bit), 2x 0..3 (je 2 Bit) und dann alle zusammenaddieren: fertig ist die Zufallszahl von
-
Thread
Nicht blockierende Funktionen - wie löst ihr das?
unten dargestellten Code, sondern wie man das im allgemeinen am besten löst... Pseudo-Code: [c] void doX() { TransmitCanMessage(x,y,z); // Beginn der CAN-Übertragung while (GetCanTransmitStatus() == Pending); // Warten bis CAN-Nachricht gesendet. Kann lange dauern, da nur 10 kBit/s
zurueckgegriffen statt auf problemorientierte. Dann werden ploetzlich uint8_t statt int benutzt, obwohl der uC mit einem anderen Typ besser funktionieren wuerden, dto. mit Pointer vs. 8/16-bit-Index. Dann bastelt man ein PTLOCAL Makro das fur lokalen Variablen in potentiellen Bibliotheksfunktionen verwendet wird
-
Thread
7-Seg Pins ansteuern
viel einfacher, wenn Du Dir das chinesische Verilog-Beispiel genau anschaust: Hier wird ein 16 Bit-Zähler benutzt, von denen Bit 15, 14 und Bit 13 für deine CASE-Abfrage verwendet werden können. Du lässt diesen 16 Bit-Zähler einfach mit dem 50MHz-Takt hochzählen. Die unteren 13 Bit vom Zähler "takten" dann bei jedem Überlauf dieses 13 Bit-Zählers (Bit 12 bis Bit 0) den 3 Bit-Zähler (Bit 15 bis Bit 13). Das heisst, Du hast automatisch einen Vorteiler von 2 hoch 13, also von 8192. Dadurch zählt dann dein Zähler für die CASE-Abfrage mit