-
Thread
Grafik LCD Ansteuerung funz nicht??
Unterprogramm nicht mehr der Fall. Ich rufe als erstes Unterprogramm die Statusabfrage auf, die die Bits STA0 und STA1 aus dem Display ausließt. Um die Steuerleitungen Read, Write, CE, CD einzlen setzten zu können und das im Programm später nachvollziehen zu können, habe ich den Steuerport am µC (z.B.
herauszufinden, ob der AVR am Rücksprung hängt, oder in den reset geht, kann man doch mit einem anderen µC den Reset-pin abfragen. Der erste Hardware-Reset (durch RC-Strecke) wird vom zweiten µC erkannt und dann wird solange der Reset-Pin abgefragt, bis evtl. eine zweite zum reset ausreichende "Low-Zeit"
-
Thread
USB Signal über 2 µCs seriell Übertragen
Dann darf "in der Mitte" aber kein USB-Device sitzen, sondern das Signal > muss auf unterster Ebene Bit für Bit getunnelt werden. Gibt es eine Möglichkeit den µC genau das machen zu lassen?
Dieter W. schrieb im Beitrag #5121445: > Wie läuft das denn bei I2C Da ist die Datenrate ganz erheblich geringer als bei USB. I2C arbeitet meistens mit 400 kBit/sec, im Extremfall mit 1 MBit/sec. Hier geht es um etwa das 500fache davon.
-
Thread
Counter ATmega8
Hallo, kann mir jemand sagen, ob ein Counter die 256 Schritte eines 8-Bit Timers zählen kann?
Befehlsliste aus dem Datenblatt des AVRs als Informationsquelle. Selbstverständlich kann man das auch in C machen. Dazu muss man aber C recht gut können und die Eigenheiten des Compilers kennen. Es schadet auch nix, den vom C-Compiler erzeugten ASM-Code zu verstehen. In BASCOM kann man das auch umsetzen
-
Thread
Hilfe! LCD-Ansteuerung
und dritten zeile jeweils einen schwarzen balken. Das Display trägt die Bezeichnung: WINTEK WD-C2704M-1HNN Vielen Dank! Bernd.
(1) Data/Command Abfolge falsch: E rauf 4-Bit Daten anlegen 1usec warten E runter 1usec warten E rauf 4-Bit Daten anlegen (die anderen) 1usec warten E runter 1usec warten und jetzt erst auf Busy testen. (2) Timing von E in wbf
-
Thread
Beispiel "Entprellun" Verständnissfrage
da mal brav wieder Einsen rein ∗hüstel∗ Was Du machen musst ist die Logik umdrehen, nicht die einzelnen Bits.
Dieser Code ohne Entprellung [C] if (!( PIND & (1<<PIND4))) { //Aktion } [/C] wird mit Hilfe der Routinen aus dem Artikel [[Entprellung]] so ersetzt [C] // Anpassungen der Defines an die tatsächliche Hardware
-
Thread
Arduino Uno R4: Besonderheiten und Abhilfen
Beitrag #7943439: > Vielleicht hast du "const" vergessen oder an die falsche Stelle gesetzt. Da es C++ ist sollte man besser constexpr nutzen um ganz sicher zu gehen: [c]constexpr int melody[] = { 1, 2, 3 };[/c] Ist es sinnvoll den Datentyp "int" zu nutzen? Der ist auf ARM 32bit groß. Wenn deine
zugewiesen. [c]int val = (int16_t) eeprom_read_word (addr);[/c] hingegen wird der 16-Bit Wert sign-extended (wobei man da formal u.U. ein signed Overflow hat). Zu long: Seit über 25 jahren gibt es uint32_t.
-
Thread
7 Segment Multiplexing und USART Kommunikation(Baudraten)
Meine Funktion die ich im Moment fürs Senden nutze sieht so aus: [code] void sendToSerial(char c[]) { for (int i = 0; i < strlen(c); i++){ if(c[i] != 0) { while (( UCSR0A & (1<<UDRE0)) == 0){}; UDR0 = c[i]; }else{ break; } } } [/code] Mfg
auf einer Platine platzsparend unterzubringen. Deswegen nutze ich 2x 74HC595 und 2x Pins vom PortC Register. Die Ausgänge des ersten Registers liegen über 510 Ohm Widerstände an den Anode der Segment LED an. Q0 bis Q6 sind dabei für die einzeln Segmente und Q7 ist für den Dot Punkt. Das zweite
-
Thread
Schieberegister IN/OUT an SPI
Schnittstelle zur Verfügung. Aber wie mache ich das mit drei Stück? Und dann hab ich das Byte im MC, jedes Bit sollte dann in anderen einem Array an einzelnen Stellen abgespeichert werden. Wie kann ich das in C machen? Also ich bekomme z.B.: 00110100 in den Buffer. Das Bit 0 sollte dann in z.B.: Eingang[0],
, dann müsste doch folgendes klappen, oder?? [c] Ergebnis[2] = ((Input >> 2) & 0b00000001) [/c] So sollte ja das dritte Bit an die Stelle des Bit0 gerückt werden, danach wird logisch zusammengezählt. Hatte das Bit 3 die 1, so ist das Ergebnis auch
-
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
24 V Signal aus einer Parallelschnittstelle
ich erreichen kann, meinen parallel-port am Drucker als Datenausgang zu nutzen? Ich will also nur einzelne Bits abfragen können. Wer hilft mir weiter?
nutzen ..." - die SW im Drucker ist meist in einem Mikrocontroller drin, wird also schwierig. "... einzelne Bits abfragen ..." - Huu, das wäre aber dann DATENEINGANG, nicht Datenausgang? Und das am Drucker? "24V aus einer Parallelschnittstelle" - Also gar keine Signale, nur Spannungsversorgung? Wer
-
Thread
Junkers CAN-Bus Protokoll
Ich wette das tut sie nämlich nicht. Was zu prüfen ist: - Initialisiere mit 8MHz und 10Kbit: [c] static const uint32_t QUARTZ_FREQUENCY = 8UL * 1000UL * 1000UL; ACAN2515Settings settings(QUARTZ_FREQUENCY, 10UL * 1000UL); // CAN bit rate 10 kb/s [/c] Dann prüfe ob die Initialisierung überhaupt
" umzusetzen, zumindest müßte man wissen, wie die einzelnen Abschnitte dann aussehen müßten. > i2C Schnittstelle: Sehe hier evtl. zwei verschiedene Ausgänge der I2C > Schnittstelle, evtl. intern bzw. extern, auch zweckentfremdet (TA211). > Müsste untersucht
-
Thread
"Clean Code" in C für Mikrocontroller
allerdings übersiehst: Du kannst die Ebene, bei der aufgefangen wird, sehr komfortabel wählen. Bei C must Du Deinen Funktionsabbruch auf allen Ebenen einzeln implementieren, bist Du bei der Ebene angekommen bist, bei denen Deine Fehlerbehandlung greifen soll. Das sauber zu implementieren hat mich schon
allerdings übersiehst: Du > kannst die Ebene, bei der aufgefangen wird, sehr komfortabel wählen. Bei > C must Du Deinen Funktionsabbruch auf allen Ebenen einzeln > implementieren, bist Du bei der Ebene angekommen bist, bei denen Deine > Fehlerbehandlung greifen soll. Das sauber zu implementieren hat
-
Thread
Lagerverwaltung Part-DB V0.2.2
Hallo Torsten! Torsten C. schrieb im Beitrag #2814390: > Aber macht es denn Sinn, dass jeder einzelne Nutzer einen Webserver mit > PHP und Mysql Datenbank betreiben muß? Nein. Aber auch daran wir gearbeitet: Eine Multiuser-Version
angelegt und in phpMyAdmin den Bytecode davon angeschaut. Das Zeichen 'ä' sollte dem Bytecode 0xC3 0xA4 (UTF-8) bzw. 0xE4 (ISO-8859-1) entsprechen. Ergebnis mit HTTP Zeichensatz UTF-8: 0xC3 0x83 0xC2 0xA4 Ergebnis mit HTTP Zeichensatz ISO-8859-1: 0xC3 0xA4 Erklärung: Bei ISO-8859-1 wird das
-
Thread
Interrupt Flag
aufgetreten... } // Neue Flags abfragen flags = INTFLAGS; } while (flags != 0);[/c] Wenn während der Bearbeitung neue Interrupts auftreten, muss die ISR nicht verlassen und erneut betreten werden (langsam), sondern nur direkt die
, er kann die meisten Interruptbits nicht atomar löschen. D.h. liest man ein IO-Register, setzt einzelne Bits auf 0 und schreibt es wieder zurück, können in der Zwischenzeit eingetroffene Interrupts im selben IO-Register verloren gehen. Daher der Umweg, daß nur gesetzte Bits gelöscht werden, nicht gesetzte
-
Thread
Atmel Ausgabe nur auf einem Port
Portpin setzen = zu setztende Bits (High) mit aktuellem Portzustand verodern. Portpin löschen = alle nicht zu verändernden Bits High, das zu vernändernde Bit Low (das wäre dann auch das invertierte Byte vom setzen).
http://www.mikrocontroller.net/articles/Bitmanipulation#Bits_pr.C3.BCfen müssen wir es vorlesen ? also.... Der AVR hat spezielle Befehle um direkt einzelne Bits in den CPU-Registern r0..r31 sowie den IO-Registern 0..0x1F zu prüfen..... Also auch drauf
-
Thread
Protokoll DC-3840 Handycam
sofort übertragen? B) Was ist ein uncompressed snapshot picture? Unkomprimiertes JPEG oder Rohdaten? C) Unkomprimierte Bilder (Rohdaten, z.B. (Bit Gray) können nur als Preview übertragen werden? (siehe B) C) Ein Preview wird nicht als einzelne Pakete gesendet, sondern am Stück? D) Ist es möglich, wie in dem C328 User Manual beschrieben, auch bei der DC-3840 eine Paketgröße mit Kommando cam_command_send (0x06,0x08,0x00,0x0X,0x00); anzufordern und dann die einzelnen Paket zu quittieren? Wenn ja, geht
-
Thread
AT91SAM7 und SPI-EEPROM 25LC040
Phase, Polarität, u.s.w. pSPI -> SPI_CSR[0] = 0x00000F00; // SPCK=100000kHz pSPI -> SPI_CR = AT91C_SPI_SPIEN; // SPI is enable } [/c] und UART-Abfrage, also wenn "W" kommt soll in die EEPROM-Adresse null, 5A geschrieben werden. [c] if (strcmp(string,"W")==0) { AT91F_SPI_Send_Data
} [/c] help!!
-
Thread
Xilinx FIFO mit Non-symmetrical aspect Ratio
generieren wenn du mal die Reihenfolge aendern willst. Ist ein Wert bei dir ein Daten Wort oder ein einzelnes Bit?
sparen. Tobias B. schrieb im Beitrag #6376924: > Ist ein Wert bei dir ein Daten Wort oder ein einzelnes Bit? Ich bekomme ja jetzt *manchmal* korrekte Daten aus dem ADC. Da will ich virtuell die Samplerate vervierfachen und dann mit einem FIR tiefpassfiltern. Funktioniert auch. Aber der FIR gibt
-
Thread
Zeitabschätzung
Kann ich von dieser Rechnung ausgehen? Der µC macht eigentlich nichts anderes, als gerade diese Interrupt-Routine abzuarbeiten (natürlich sobald sich was am Pin tut). Von welcher Zeitverzögerung kann ich ausgehen, bis der µC wirklich die Interrupt-Routine
und anschließend wieder von ihm runter - Durch einen anderen Anschluss der Hardware fallen einige bit-Operationen weg Ich habe im Assembler-Code vom C-Compiler außerdem einigen Code entdeckt, den ich vom Sinn her nicht verstehe: [avrasm] ldi r30, 0 ... ;(nix mit Z und auch nix mit r30) andi r30
-
Thread
Benötigte CPU-Leistung ermittel
1920*1080*3 = 6,22 Millionen Additionen plus die Datenzugriffe auf die Pixel plus Schleifen und Abfragen. Dazu kommt dann die Hardwareausstattung des Chips. Mal nur die Additionen genommen (als 32 Bit Integer) wäre hier ein ATMega bei 20 MHz Takt theoretisch auch in 1,3(Addieren) Sekunden + 0,6 (aus
" um den Kompfort zu liefern, den sie mit sich bringen. Ich hatte vor Jahren mal VisualBasic gegen C verglichen und kam bei einfachen Befehlen wie Abfragen, Schleifen und Additionen auf eine Faktor von über 1000. Sprich, C läuft 1 Sekunde, VB für das gleiche fast 17 Minuten. Aber auch die Art, wie der
-
Thread
Frage zum UART (ISR Vector)
Ich bekomme jetzt folgende Fehlermeldungen: main.c:54: warning: 'UART_RX_vect' appears to be a misspelled signal handler main.c: In function 'UART_RX_vect': main.c:64: warning: implicit declaration of function 'size_of' interrupt.h Header habe ich
@ Ein freundlicher türkischer Mitbürger (Gast) >main.c:54: warning: 'UART_RX_vect' appears to be a misspelled signal >handler Der heisst bei einigen AVRs USART_RX_vect >main.c: In function 'UART_RX_vect': >main.c:64: warning: implicit declaration
-
Thread
VHDL Grundlagen : Rechnen
sehr restriktiv, was die Typumwandlung angeht, einfach so implizit von z.B. float nach integer wie in C gaht das nicht: i = f; Sondern da braucht man schon die passenden Routinen und Umwandlungen. > Im Moment will ich eine 24Bit Zahl mit einer 8 Bit Zahl multiplizieren. Sieh dir numeric_std an: die
Konvertierung in signed integer und das Rechnen mit echten Integerdatentypen, die dann erst vom Compiler auf Bits umgesetzt werden. Da ist die Formulierung nicht komplizierter, als in C, es geht nur der direkte Zusammenhang zu den Bits verloren, die Du irgendwann mal kontrollieren möchtest. Für beide Anwendungsfälle
-
Thread
Anschluss & Beschaltung 74hc595 für definierten Ausgangszustand beim Start
Schritt: shift Clock aus den pull-down-Zustand anheben (pos Flanke) und wieder zurück. also serielles Bit aufnehmen 2 und 3 achtmal. bis das 8-bit-byte geladen ist. Dann latch clock aus pull-down anheben und wieder senken. Damit die daten ans Latch übergeben. 4. wenn OE noch auf high ist, oder pull up
1ms schalten. Aber nur, wenn die Versorgungsspannung für die Relais freigegeben ist, bevor der µC hochgefahren ist ;-)
-
Thread
AVR-GCC Programmstruktur (Tastenabfrage+ADC)
Mhh, dass man mit Interrupts bestimmte Vars setzen kann und dann in der Haupschleife abfragen ist klar, aber wenn z.B. nun das Ereignis 1 (z.B.ADC) bearbeitet wird, dann kann man doch keine Tasten abfragen bis der code durchlaufen ist? Das ist das Problem. Das sieht doch so aus: [c] ///taste
wrote: > Mhh, dass man mit Interrupts bestimmte Vars setzen kann und dann in der > Haupschleife abfragen ist klar, aber wenn z.B. nun das Ereignis 1 > (z.B.ADC) bearbeitet wird, dann kann man doch keine Tasten abfragen bis > der code durchlaufen ist? Das ist richtig. > [c] > ///taste=get_key
-
Thread
HART start byte (SD) struktur ?
, das ist klar. Läuft das prinzipiell so ? Burst starten: Burst Request vom Master per Burst bit im AD byte und in der message dann das CMD mit gewünschter Device-Variable ? Und der slave sendet ab dann die burst frames mit dem BACK bit im SD gesetzt ? Burst stoppen: Request vom Master ohne
___ 14 LSBs vom Expanded-Device-Type | | | |_________________________________ Burst-Mode-Bit | |_____________________________________ Master-Address-Bit [/c] Gruß
-
Thread
ATMega88PA ADSC Bug?
if( c & 1 ) STX_PORT &= ~(1<<STX_BIT); // data bit 0 else STX_PORT |= 1<<STX_BIT; // data bit 1 or stop bit c >>= 1; } } [/c] Rudolph Riedel schrieb im Beitrag
Okay, laut Datenblatt kann man eine einzelne Konvertierung anschieben indem man entweder das PRADC Bit löscht oder das ADSC Bit setzt. Leider gibt es noch eine dritte Möglichkeit die ich überlesen habe, nämlich den µC in den IDle-Modus schlafen
-
Thread
Problem mit Sprungadressen und Timer
_OVF_vect #define TIMER0_OVF_vect TIMER0_OVF0_vect #endif [/C] > Wieso beienflusst das die Pull-Ups? Das ist mit irgendwie nicht ganz > klar. Weil du an den ganzen Port eine Zuweisung machst! Jedes einzelne Bit wir dneu beschrieben. Unter anderem auch die
[/C] immer nur das eine Bit ansprichst, das du auf 0 oder 1 setzen willst. Es ist wirklich ganz einfach. Durch die letzte Form ist gewährleistet, dass die anderen Bits an diesem Port nicht verändert
-
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
Wie Ports am Besten zusammenfassen?
Ausgabe von Werten: Während ich bei Port A "blind" schreiben kann, muss ich Port B erst einlesen, einzelne Bits manipulieren, und wieder den ganzen Port ausgeben. Wie handhabt man das am Besten? Bzw. wie macht ihr das? Mit freundlichen Grüßen,
Ausgabe von Werten: Während ich bei Port >A "blind" schreiben kann, muss ich Port B erst einlesen, einzelne Bits >manipulieren, und wieder den ganzen Port ausgeben. Nö, einzelne Bits kannst du zumindest bei PORTB über cbi, sbi setzen. Bei PORTF sieht das dann wieder anders aus;)
-
Thread
SPS Betriebssytem
eine andere Variable wenn das zeichen A0 ist dann *ziel = A0 ..... 3tes und 4tes byte in 16 bit variable (wert) schreiben if abfragen: ist erstes byte U => aufruf unterprogamm U ( *zeit,wert) .... man müsst halt für jede variable und jede funktion eine if abfrage machen aber man könnte
Die brauchen eigene CPU. Das display schaut in die SPS und holt sich die Parameter, oder setzt die Bits der SPS, die in seinem eigenen Projekt benannt sind. Natürlich muß es auch eine PC-Software geben, die die Gestaltung der Texte ermöglicht. Grafiken, Farbe, Touchscreen sind bei c.) üblich. 6. bei
-
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
HD44780 - per Interrupt beschreiben oder immer nach Bedarf?
Edit: ist ja noch schlimmer, die 125ns sind ja high und low vom uC, also sogar nur halb so lang high
Wieso eigentlich c-hater und nicht "alles was man so sinnvoll machen würde"-hater?
-
Thread
VB-Programm zur seriellen Ansteuerung von 4094 gesucht
Ich möchte 5 Stück 8-Bit Schieberegister hintereinander reihen, um 40 parallele Ausgänge zu erhalten. Da Ganze will ich dann mit dem Rechner über RS232 ansteuern. Das erscheint mir als einfachste Lösung, da ich mit einem AVR
Grafik,aber einfach programmiert. Wenn es fertig ist geht es für jede Kleinbahn. 16 Blöcke 16 Abfragen 8 weichen 2 DA Geschwindigkeit 2 AD abfragen für 4094 ausgaben für alle Licht technik. Bei störung ist das nicht so schlimm. noch eine steuerung 8* aus 5*ein 4* Buchse Für den DruckerPort
-
Thread
Deklaration von external memory
und auch nicht um Deine Entscheidung, als darum, Dich dahin zu bringen, ein Urteil nicht anhand einzelner Punkte und aufgrund begrenzter Sicht zu fällen. Ob Du C nun ablehnst oder nicht, ist mir gleichgültig. Aber ich wollte Dich anregen dies aufgrund fundierter Kenntnis und Erfahrung zu machen.
dein Funktionen nach avr-gcc ABI. Dann kannst du in der Zufunft ganz easy von Assembler nach C migrieren oder umgekehrt -- und zwar für jede einzelne Funktion wie es dir gefällt. https://gcc.gnu.org/wiki/avr-gcc 3) Lass dir nicht einreden, diese ABI verwenden sei zu ineffizient. Ja,
-
Thread
Wer nutzt das Nucleo-64 und kann mir
Bit zu schaffen. Siehe https://www.totalphase.com/support/articles/200349176-7-bit-8-bit-and-10-bit-I2C-Slave-Addressing
#i2c nicht das Bit-Banging. Aber egal, Hauptsache es funktioniert.
-
Thread
Alptraum jedes Programmierer: Code kompilierbar aber doch ein Denkfehler drin wer sieht´s?
deinem Code gemacht hast). Da du nicht direkt auf einzelne Bits eines Ports zugreifen kannst, musst du das zwischenbuffern. [c] tmp = PORTC; tmp &= ^CSentUsedBitsMask; // alle Bits in der Maske löschen, die anderen bleiben unberührt tmp |= data & CSentUsedBitsMask; // Datenbits ausmaskieren und entsprechend setzen PORTC = tmp; [/c] Dieses Konstrukt musst du auch weiter unten verwenden, bei: [c] CSentByte=0x01&CSentUsedBitsMask; PORTC=CSentByte;
-
Thread
Schieberegister vereinzelt parallel laden
sr(0) <= sr_in; END IF; END IF; END PROCESS; sr_out <= sr(63); END arch; [/c] Ich möchte nun die Bits 0 von sagen wir mal Spalte 3 und 10 logisch UND Verknüpfen, und mit dem Ausgang dieser Verknüpfung das Bit 7 in Spalte 4 setzen. Ich denke mal, dass ich die UND-Verknüpfung
meiner Applikation ausmacht) realisiere ich dann nicht mehr über ein einfaches zuweisen wie hier: [c] sr(63 DOWNTO 1) <= sr(62 DOWNTO 0); [/c] sondern ich muss nun für jedes FF einzeln entscheiden, ob es den Vorgängerwert übernimmt, oder anders geladen wird, oder? Ich frage nur vorsichtshalber
-
Thread
ATMega 8, assembler | lcd und led funktionieren zusammen nicht
Joachim Jakob schrieb im Beitrag #3802265: > interner pullup? was ist das Und Abfrage anders herum.
Marc Vesely schrieb im Beitrag #3802278: > Und Abfrage anders herum. Getan ?
-
Thread
Rahmenwekennung
Flankenabfragen: clk'event und pfs'event Das kann nicht funktionieren. Mach in zwei Processen einzeln Kest
fallenden gelesen. clk und pfs sind synchron. Mir der steigenden Flanke von pfs muss das erste bit geschrieben werden. Wenn ich das jetzt mit zwei Processen mache, dann müsste ich Signale verwenden und ich würde das 1Bit doch quasi verpassen. Hab das schon mal versucht und das hat nicht hingehauen
-
Thread
PIC C18 Fehlermeldung: [2060] shift expression has no effect?
Hallo allerseits, hab ein kleines Problem mit einer Fehlermeldung (warning) mit dem C18 Compiler. (PIC18F2550) [c] #define bit_set(var,bitnr) ((var) |= 1 << (bitnr)) // Einzelnes Bit setzen main { unsigned char Messprotokoll[10]; ... bit_set(Messprotokoll[4],0); oder bit_set(ADCON0,0); ... } [/c] Fehlermeldung: D:\PIC_Soft\main.c:347:Warning [2060] shift expression has no effect Und zwar taucht die Meldung auf, wenn ich das Bit 0 einer Variablen abfragen will
-
Thread
RS485 Stern-Netzwerk - Ein paar Fragen
hat der Elektriker aber nur ein Kabel (2x2x0.8) pro Raum gezogen, so dass ich die Signale nicht einzeln in den Technikraum bekomme. Deshalb war meine Idee die Signale jeweils vor Ort mit einem uC auszulesen und die jeweiligen Zustände per Modbus übers Kabel zu schicken. Damit wäre das System auch ausbaufähiger
an. Noch kurz zu den technischen Bedingungen: Baudrate kann winzig sein (600-2400), da die Abfrage 1x/sek stattfindet und jeweils nur 30Bits + CRC übertragen werden, also fast nichts. Die Kabel haben einen Folienschirm, sind aber wahrscheinlich nicht verdrillt. Es ist davon auszugehen, dass die
-
Thread
LCD 4x20 hängt sich nach der Zeit auf!
Programmteile der Ansteuerung des Displays hinzugefügt, oben die Include-Datei für das LCD und danach die einzelnen Unterprogramme in der main.c. Ich hoffe Ihr könnt mir dabei helfen, was der Grund dafür sein kann. Mfg Koksi
das hier scheint mit etwas seltsam: [c] PORT = 0b00000010; // Interface auf 4-Bit setzen PORT = 0b00000010; // Interface auf 4-Bit setzen PORT = 0b00000010; // Interface auf 4-Bit setzen [/c] so ausm Bauch raus würde
-
Thread
Siebensegment und Tasten ansteuern mit TM1651 \ TM1637
verwendet, bei der Ausgabe des einzelnen Datums die Bits reversiert (d.h. Bit7 <=> Bit 0, Bit6 <=> Bit1, Bit5 <=>Bit2, Bit4 <=> Bit3 tauscht), dann kannst du den TM16XX auch mit regulären I2C - Funkionen ansprechen. Das "ärgerlichste
TWI und I²C identisch. [/code] Allerdings steht dort auch: [code] Alle Bytes werden dabei „Most Significant Bit First“ übertragen. [/code] Somit ist ein Frame für den TM16XX kompatibel zum I2C-Bus, aber
-
Thread
deklaration mit define,wie richtig, so doch nicht oder?
[C] PORTC &= ( 1<<PC2 ); [/C] welches er in eine "Clear Bit 2 an PORTC"-Assembler-Instruktion übersetzt.
zeige mir mal den Assembler-Code dazu. So oft kommt das nicht vor, dass man tatsächlich alle 8 Bit eines Ports in einer Abfrage berücksichtigen muss. Und selbst wenn, kann man das immer noch mit einer ganz anderen Schreibweise berücksichtigen [C] while( (Eingabeport & (1<<WARTEBIT1 | 1<<WARTEBIT4
-
Thread
ATTiny10/11/12
so eine Schaltung frei. Wobei dann erstmal wichtig wäre, welche Störungen bei einem mC auftreten können? - kann sich ein mC aufhängen? Wenn ja ist das ein Problem, da ein Erkennen der Störung sehr schwierig sein wird. - kann ein mC falsch rechnen ? Wenn ja wird das auch sehr schwierig
irgendwo ausleihen ;) sind das die hier? http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=en
-
Thread
Pcf8574 datenblatt ohne infos über register?
Das gibst du mit dem einen Bit im I2C-Frame an... da gibts ja ein Read-Write Bit... und nach das hält sich das IC halt. mfg Schoasch
Um von dem I2C PCF8574 daten einzulesesen gibt es zwei möglichkeiten: 1. Zyklisch Lesen --> Senden Adressbyte + R/W bit = 1 Danach einfach 8bits einlesen ACK abfragen nicht vergessen 2. Interrupt gesteuert
-
Thread
UART bei Atmega88
Fehlermeldung: avr-gcc.exe -mmcu=atmega128 -Wall -gdwarf-2 -O0 -MD -MP -MT UART.o -MF dep/UART.o.d -c ../UART.c ../UART.c: In function `main': ../UART.c:39: warning: implicit declaration of function `outp' ../UART.c:39: error: `RXCn' undeclared (first use in this function) ../UART.c:39: error: (
Zur Veranschaulichung: // sendet einzelnes Zeichen an PC void USART_transmit (unsigned char c) { // warte bis Senden möglich while (!(UCSR0A & (1<<UDRE0))) {} // sende übergebenes Zeichen UDR0 = c; } // sendet Zeichenkette
-
Thread
Warum hängt vsync und hsync im RTL-Viewer in der Luft?
sein soll? Muss ich das wirklich? Nun, weil es der tatsächlichen Hardware entspricht. Ein Haufen Bits/Leitungen eben. Die noch vollkommen unbefleckt ist, was die Daten angeht, die darüber transportiert werden. Ich kann die Bits schieben, einzelne Bits invertieren oder verknüpfen, eine Zahl in Gray-Code
Dieser Vergleich ist, mit verlaub, genauso sinnfrei wie deine Behauptung, dass in einem RAM die Bits eine Ordung haben und diese eben eine Zahl repräsentieren. W.S. schrieb im Beitrag #3864525: > Verkaufszahlen von µC, insbesondere von kleinen PIC's. Der Grund, dass weniger FPGAs als µC verkauft
-
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