-
Thread
Wert einer Speicheradresse auslesen
Hallo, was ist den das? [c]Int *[/c]
kommen und wohin sie gehen, ob SPS, GPIOs, RS485-Module, SD-Karte, Netzwerk usw. Um auf Werte oder einzelne Bits zuugreifen, werden nur Nummern für die Datei und die Adresse in der Datei gebraucht.
-
Thread
Poti -> RGB Farbrad
eines Regenbogen-Farbpickers zu kommen. Vielleicht hat jemand Rat (insb zur Umsetzung auf einem 8 Bit uC )? LG, doppio
Variablen ab. Und nur dann, wenn der count 0 ist, kopierst du sie auf die PWM Vergleichsregister um. [C] cli(); if( count == 0 ) { //setzen der neuen Farbe color[0] = temp[n + 2]; color[1] = temp[n + 1]; color[2] = temp[n ]; } ... [/C]
-
Thread
SPI: kein SCK bei Receive - Warum?
. Des weiteren habe ich das UserManual schon ausgiebig studiert, habe aber keine Lösung (irgendein Bit eines SPI-Registers o.ä.) gefunden. UserMan: http://www.infineon.com/dgdl/XC88xCLM_UM_v1_1.pdf?folderId=db3a304412b407950112b408e8c90004&fileId=db3a304412b407950112b40c53da0b0b ^^Kapitel 12.3 (ab
sind schon richtig zusammengeschaltet. ;) Der Slave hat definitiv eine SPI-Schnittstelle (kein I²C). Der µC-Receive Input (MISO) Pin 1.4 ist wie oben in der Konfig angegeben (P1_DIR |= 0x2D //BIT:0=Input,1=Output) als Input gesetzt. Trotzdem will der µC dort auch immer gleichzeitig auch Senden (was
-
Thread
Inhalt von FLAGS auf ungleicheit prüfen...
ich das so lösen: ;Vergleiche ob Carry != T sbcs C1 ; Springe, wenn C gesetzt brtc equal ; Springe, wenn T gelöscht C1: brts equal ; Springe, wenn T gesetzt notequal: ;- T != C equal: ;- T = C Grüße, André
@AVRli: C und T sind natürlich nur Beispielflags. Befehle sind bei anderen Flags natürlich entsprechend anzupassen. Wenn Du nur einzelne Bits in bestimmten Registern auf Gleichheit testen willst geht das auch
-
Thread
ADC logarithmieren mit Assembler und Tiny10
Die verdoppelt den Zahlenwert mit jeder Linksschiebung. So könnte man z.B. aus den 16 Stufen eines 4 Bit ADC eine 16 Bit Zahl von Null bis 32768 erhalten. Für feinere Stufen des 8 Bit ADC müsste man noch das zweithöchste Bit toggeln usw.
beiden letzten Werte liegen dann über 255 (wenn man 300s als max nimmt). Das kann man dann extra abfragen (ADC Wert >253) und das eine Bit im Ergebnis danach setzen. 50 Positionen bei einem solchen Trimmer einzustellen, muß man erst mal vormachen. Danke an alle für die Vorschläge. Ich denke nochmal
-
Artikel
ZPU: Softcore Implementierung auf Spartan-3 FPGA
Entwicklungsumgebung: Xilinx ISE WebPack 10.1 CPU: ZPU von Øyvind Harboe (opencores.org) stackbasiert 32 Bit breit 8 Bit Opcode klein, einfach, übersichtlich per GCC-Toolchain (ZPUGCC) in C / C++ programmierbar integrierter Programmspeicher (BlockRAM) Bus: Wishbone-Bus 32 Bit Peripherie: Interrupt-Controller
auf dem Board. Eine Abfrage der Adressen der Schalter und Taster liest den Zustand der Schalter (8 Bit) bzw. Taster (4 Bit) ein. Ein Senden eines 8 Bit Wertes an die LED-Adresse schaltet die LEDs. Ein Senden eines 32 Bit Wertes
-
Thread
DCF77 ausgefallen
auch wenig. Zumindest verhindert das grob falsche Anzeigen wie "dann 26:82 Uhr", wenn mal zwei Bits fehlerhaft kommen. Die zwei oder drei Parity des DCF fangen leider nur ein einzelnes falsches Bit. > Dass DCF77 stundenlange > Ausfälle ohne Ersatzsender macht, habe ich nicht erwartet. Es stellt
mit voller Kraft weitertransportiert. Daneben steht eine selbstgebaute Funkuhr, die auch die einzelnen Bits auf LC-Display anzeigt, und da sind die ersten 14...15 Bits immer Null, wie schon vorher genannt, hat aber ja keinen Einfluss auf die Uhrzeit. Da sie Netzbetrieben ist, synchronisiert sie sich
-
Thread
Videoausgabe
einen PAL Decoder (sind fertige Chips) welcher dir das ganze in ein FBAS Signal wandelt. Mit einem µC beschreibst du dann einfach nur noch den Speicher und schwups kannst du mit einem µC ein Bildsignal erzeugen. Schwer wird noch die syncronisation zwischen µC und CPLD was den Speicherzugriff angeht.
Zentrale verbunden, in der auch ein ATMEGA32 werkelt. Die Zentrale ist über einen RS485 Bus mit den einzelnen Sensoren/Aktoren verbunden. Über den Fernseher kann ich Rolläden hoch/runterfahren, Ölstand abfragen, Aussentemperatur etc. Ausserdem will ich mit der Fernbedienung über die Box meinen PC hoch
-
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
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
Richtigen Datenbus gesucht
Problem: Der Datenbus ist nicht das Problem des TE. Bei 1m kann man so ziemlich alles nehmen. I2C geht, SPI geht, RS232, RS485, CAN, Ethernet was man will. Aber DANN fangen die Probleme doch erst an. DANN kommt das Protokoll. Und danach die "Intelligenz" in den einzelnen Modulen. Wer hier aber schon
nicht. Bringe ich jetzt die Auswerteelektronik räumlich zu dem Sensor hin und setzte danach einen uC hin der nur sagt Anschlag Ja/Nein kann ich diesen Sensor beliebig ersetzen, ohne dass ich irgend etwas an der SW, bzw, an der Auswertehardware im System selbst ändern muss. > Ein einzelner Raspi
-
Thread
Hygrostat für Terrarium bauen
Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); } } Mein Vorhaben müsste es jetzt natürlich sein, das Register zu verstehen und zu den Werten eine "über oder unter Schwellwert Abfrage" zu programmieren. Hier wäre z.B. wenn ich das richtig
return f; } } Serial.print("Read fail"); return NAN; } float DHT::convertCtoF(float c) { return c * 9 / 5 + 32; } Kann mir Jemand sagen was die einzelnen Befehle in der Verkettung zu bedeuten haben?
-
Thread
Was ist von refurbishten Festplatten zu halten?
Ebay kann ich seeehr empfehlen was HDDs angeht. Habe dort mal 10x 1TB SAS Platten gekauft. Jede einzelne kam in einer eigenen Verpackung direkt für 2,5" HDDs, jede Platte hatte einen eigenen Ausdruck der Daten und Sector Tests dabei und jede Platte hatte ihre eigenen QR Code für eine Online Abfrage.
kamen in einem Pappkarton, einzeln in Papierschlangen eingewickelt und einzeln in ESD-Tüten verschweißt. Die HDs sehen neu aus, also keine Gebrauchs-oder Staubspuren. Laut SMART sind die HDs ca. 2099 Tage gelaufen. Die HDs habe
-
Thread
ARM Eval Board gesucht
. I2C mit Audiodaten? Liegst du da richtig I2C hat 10kHz oder 400kHz Baudrate da sind allgemein eher nur Kontrollfunktionen möglich. Du meinst wahrscheinlich I2S. Falk Brunner schrieb im Beitrag #3276583
. >I2C mit Audiodaten? Liegst du da richtig I2C hat 10kHz oder 400kHz >Baudrate da sind allgemein eher nur Kontrollfunktionen möglich. >Du meinst wahrscheinlich I2S. Ja, Buchstabendreher ;-) Falk Brunner
-
Thread
Byterkennung UART
entsprechenden Werten für die Impulslängen beschrieben werden. Nun werden bei einem empfangenen Byte die einzelnen Bits auf 0 oder 1 verglichen. Ist das erste Bit 1 schreibe eine 30 in das Feld 3 das Array, ist das Bit 0 schreibe eine 20 rein....usw. >Kann ich diese Auswertung einfach zweimal hintereinander
STATE_LICHT1 ausführt. Dabei ist es egal, welchen Inhalt das zweite Byte besitzt weil ich darauf keine Abfrage mache. Es wird, egal was in dem Byte steht dieser case ausgeführt. Wenn ich jetzt aber den Inhalt des Bytes verwenden will, muss wieder eine Zuweisung von c auf z.B. den Servo erfolgen. Richtig
-
Thread
Signal abtasten---> speichern und auswerten
erkenne ich am eingang des MC dass es der anfang der Fram ist bzw das ende vom frame!!?? ich werde bit zu bit abfragen... inerhalb 869ns werde ich 10 abtastpunkte machen (analogwerte) diese werte werde ich vergleichen mit den werten die ich bei der signalspezifikation habe..bsp : nehme ein wert liegt
500ns, das währen grob 1,7 Takte je 10 Messwerte, das wird eng mit auswerten und speichern. Einzelne Bits zu speichern wird dich niht deutlich vorwärts bruingen um Platz zu sparen, da brauchst du ja dann noch eine Information um zu wissen welches Bit das mal war, sonst bringt dir der Wert ja gar
-
Thread
Ethernet Relais
Transistor und ein Relais. Ethernet ist aber eher eine Schnitt- stelle für Megabyte und nicht für ein einzelnes Bit. Und der Aufwand zur Übertragung ist etwa genauso gross; egal ob Du Megabyte oder nur eine Ein-Aus-Info überträgst. Gruss Harald
, Ethernet PHY, SPI/I2C/UART, GPIO. Alles in einem einzigen Chip. Einfacher und billiger und kleiner geht es nicht. fchk
-
Thread
Anfänger bittet um Unterstützung (PIC 12F629)
eines STM32Fxxx (für diejenigen, die meinen, 8-Bit wäre tot und heute nimmt man für egal was einen ARM). Norbert S. schrieb im Beitrag #5317232: > Ich würde Ihnen einen modernen pic18f empfehlen. Dazu den Pickit 3 und > dann alles in C programmieren
Ohne Zweifel werden 8bit-Controller in 100 Jahren nicht tot sein! Ich habe gerade 2 Projekte (Toaster-Controller und Multi-Timer) in C am laufen mit 6pin pic10lf322 and attiny10 beide 0.5KWorte mit 64 bzw. 32 Byte RAM.
-
Thread
Letzter Hilferuf AT91SAM7S - PWM oder PCK
direkte Hardwarezugriffe von der Programmlogik trennen Könnte dann so aussehen (ungetestet) [c] #define CLOCK_BIT (1 << 17) #define LED_BIT (1 << 18) void initClock(void) { AT91C_BASE_PIOA->PIO_PDR = CLOCK_BIT; // Configure PA17 to be driven by peripheral AT91C_BASE_PIOA->PIO_OER = CLOCK_BIT; // Configure PA17 as output AT91C_BASE_PIOA->PIO_PPUDR = CLOCK_BIT; // Disable pull-up on PA17 AT91C_BASE_PIOA->PIO_BSR = CLOCK_BIT; // Assign PA17 to peripheral B function AT91C_BASE_PMC
-
Thread
Wittig(welec) DSO W20xxA Open Source Firmware (Teil2) Gesperrt
ein Hinweis. Vielleicht wäre es sehr hilfreich, mal für alle Register die die Bedeutung der einzelnen Bits zu ermitteln. Ich finde das derzeit sehr unübersichtlich. Zusätzlich wird zum löschen der Bits die invertierte Darstellung verwendet.
nicht gefunden), ob seine SW mit einer bestimmten Hardware Version am besten funktioniert. Meine ist 8C7.0E (siehe Bild). Beim Lesen hier bin ich noch ueber 8C7.00, 8C7.0F, 8C7.0G, 8C7.0H und 8C7.0L gestolpert. Welche davon passt am besten zu Hayo's SW? Oder ist das egal? Schade, das sich die einzelnen
-
Thread
CMOS Sensor MT9P031
zeilenbasiert arbeiten kann (das ist zu 90% der Fall und gängige Praxis), dann benötigst Du 4 BlockRAMs (4x18kBit = 72kBit). Da kannst Du den XC3S50 (Xilinx), EP2C5 (Altera), EP3C5 (Altera), XP2-5 (Lattice) oder den ECP2-12 (Lattice) nehmen. Wenn Du kein zusätzliches Flash anschließen willst, dann wäre der XP2
MT9P031|12STC bezieht, ich habe aber einen MT9P031|12STM (M - wie monocrom). Kann ich einfach die 12 Bit als 12-Bit-Wort Helligkeitswert interpretieren? Viele Grüße! Marko
-
Thread
[AVR][ATMega328] UART Receive und Echo mit Fleury Lib
willkürlich gewählt). Ich sehe nirgens eine 33 im Echo, siehe Screenshot. Setze ich direkt, ohne if Abfrage alles auf 33 sieht es aus, wie im zweiten Screenshot. [c] /************************************************************************* Function: uart_putc() Purpose: write byte to ringbuffer
uart_getc(); } // Setze Flag "Neue Daten verfügbar" flagNewData = 1; } } [/c] Ich habe also - nachdem ich nochmal Peters Beispielprogramm durchforstet habe - den 16Bit Output aus uart_getc() verwendet, so konnte ich dann wieder prüfen, ob es sich um valide Daten handelt und
-
Thread
Digital oder Analog
würd das Signal als Strom übertragen. 4-20mA ist da so ein Standardsignal. Also bei dir 4mA vllt 0°C und 20mA 100°C oder so. Dann reichen 2 Adern, das Signal ist wenig störanfällig und 3 Meter sind absolut kein Problem. Musst mal ein wenig suchen, gibt es divere Schaltungen zu. Der "Sender" kann
einen Bus schalten kann. Jeder Sensor erhält eine Adresse und der Master kann sie der Reihe nach abfragen ( Pollen). Das entspannt die Kabelage enorm. SPI ist, ebenso wie I2C, ein Kurzstrecken-System. I2C kann man als so genanntes Power-I2C auch strecken und verlängern. Aber gerade SPI hat den Nachteil
-
Thread
Zeichenkette über UART empfangen
funktioniert es aber wenn ich auf einzelne Chars vergleiche z.B. ein kleines a: [c] if (strcmp (input_str, "Test") == 0) { PORTB &= ~(1 << PB1); //Led geht an zum Test // hier sollen
im Fehlerfalle auch einfach mal aus, was er versucht hat zu vergleichen. Z.B. so (untested): [c] static char * getline(char *buf, int size) { int i = 0; char c; // ignore status bits, UART_NO_DATA becomes '\0' assert(size > 0); // raw input - no echo, no line editing, truncate
-
Thread
#define 2 Ports auf ein define
Mach Makros, mit denen du die LEDn einzeln bedienen kannst: [c] #define LED0_PORT PORTD #define LED0_DDR DDRD #define LED0_PIN PIND #define LED0_PPIN PIN7 #define LED1_PORT PORTB #define LED1_DDR DDRB #define LED1_PIN PINB #
Die Bits einzeln ansprechen, nicht alle 8 zusammen: [c] #define LED_ON(n) if ((n) < 4) PORTB |= 1<<(n); else PORTD |= 1<<((n)-4) [/c] Keine Sorge wg. Code, bei konstantem n optimiert der Compiler die Abfrage
-
Thread
Steuereinheit eines Dartautomaten
Wenn getroffen dann if (bI[x][y] == 0) { WurfSchicken(x, y); } } } [/c] somit würde ich immer alles empfangen, jedoch ist es random welcher dieser 4 Pins gerade auf LOW ist.
[c] int masterLines = 8; //Change here to the number of lines of your Master Layer int slaveLines = 8; //Change here to the number of lines of your Slave Layer int matrixMaster[] = {13, 12, 11, 10, 9
-
Thread
1-Wire und non-blocking code (state machine)
= 0; // stop T0 return; } onwi.pbuf = pbuf; TCNT0 = 256 - OW_BIT_SLOT; } [/c]
natürlich noch BeginCritical() und EndCritical() um Sektionen ohne Interrupt, wie die Übertragung eines Bits. Eine einzelne Bitübertragung läuft also am Stück (sowas wie 80µs), zwischen den Bits oder im 1W-Reset kann der Code aber unterbrochen werden. Mit RTOS kann es also zwischen den Bits zu einem Taskwechsel
-
Thread
UART-Interrupt Problem
wenn "MotorRunning" nicht gleich ein > ganzes Byte einnehmen würde sondern wirklich nur ein Flag (Bit) in einem > Byte? Grundsätzlich ist die kleinste Einheit, die du in C ansprechen kannst immer ein komplettes Byte. Willst du auf einzelne Bits runter, dann musst du mittels | bzw & die entsprechende
und Bit-Abfrage Operationen, wie sie in jedem Programm zu Hauf vorkommen. Nur war bei dir wahrscheinlich Bit setzen bzw. Bit löschen meistens auf einen Port bezogen um damit einen Portpin zu schalten. Aber
-
Thread
mehrere Millis()
. Das wird in der Tastenentprellung benutzt, um die vier Tasten als einzelne Bits in einem Byte zu speichern und zu verarbeiten. Da ist sogar noch Platz für 4 weitere Bits bzw. Tasten. Hast du mein Beispiel mal real ausprobiert? Wie läuft es?
nur eine Bastelei. Das ist deine Beurteilung! Ein Abbild deiner Fantasieren. Ich sage: Ein 32Bit Zähler ist billig. Das verwalten einer Time/Date Struktur ist viel aufwändiger. Also, wenn das billige reicht, dann nehmen wir es doch. ---------- Außerdem redest du schon wieder über C++
-
Thread
Datenempfang in ISR - Welche Strategie?
Experte wrote: > denn int ist auf einem 8Bitter 8Bit breit. Nö. Der C Standard schreibt vor, dass ein int mindestens 16 Bit groß zu sein hat.
Hallo, ein PIC Spezi hier? ich weiss nichtr genau, ob ich in der ISR das BF Bit abfragen sollte oder nicht? Die ISR kommt ja nur, wenn ein Byte da ist. Andere Frage: Was ist mit dem Overflow Bit? Muss das berücksichtigt werden? Wird bei Stau auf der Datenrutsche gesetzt [c]
-
Thread
LCD-Display AV1624 ansteuer Probleme
Wenn man die Daten Bit-reverse anschliesst muss man sie auch Bit-reverse ausgeben. [c] #define DB0_Pin PC7 #define DB1_Pin PC6 #define DB2_Pin PC5 #define DB3_Pin PC4 #define DB4_Pin PC3 #
Bzw. wo liegt mein Gedankenfehler? Zumindest in allen Fällen an denen <Disp_Port> direkt mit 8 Bit beschrieben wird. <Exe_Port> pauschal auf Null zu setzen wird auch nicht zielführend sein. [c] void Write_Data() //0 an erster Stelle im Display ausgeben { Exe_Port=0x00; Disp_Port=0x00
-
Thread
RC Empfänger auswerten, Signal modifizieren und wieder ausgeben
output_cnt=0; ch_ready=3; } else output_cnt++; } } [/c]
Beitrag #2153857: > allerdings tue ich mir noch schwer einen > Atmel zu finden den ich bei "R" oder "C" bekomme... Beim "C" kuft man keine Atmels. Schau dich mal hier um: www.csd-electronics.de Oliver
-
Thread
Anfängerprogramm TimerA MSP430
mit ID und FAST allen anderen Bitkombinationen. Es gibt manche, bei denen man wirklich selber die einzelnen Bits setzen muss, z.B. beim SVS (istbaber vielleicht auch abhängig von der Header-Datei).
& TIMERA0_VECTOR == TIMERA0_VECTOR ) // geht sicher viel besser { // do } } [/c] kann nicht funktionieren, da TAIV Bit0 immer /0/ ist und das untere Nibble des TIMERA0_VECTOR (0x0009) /1001/b ist. Somit ergibt die Abfrage immer /false/. Oder verstehe ich das falsch? Danke aber
-
Thread
Tastenabfrage so OK?
darauf an, was hinter den T... steckt und ob du z.B. eine Entprellung haben willst und um welchen µC es geht. Manche µC können einzelne Pins (Bits) abfragen, andere nur einen kompletten Port. Wenn du letzteren programmierst, hast du mit deiner Methode natürlich eine riesige Codeaktion ausgelöst, statt einmal den Port einzulesen und dann mit einer Maske die einzelnen Bits zu prüfen. Der Zugriff auf den Port ist normalerweise volatile, d.h. der Compiler darf die Zugriffe auch nicht zusammenfassen. Es werden also vier seperate Einleseoperationen gemacht. Für AVRs
-
Thread
DOGXL Fontgenerator (SW+Graustufen)
genommen (die bei anderen Projekten funktioniert). Hier jedoch tut sich gar nichts, ich glaube, dass der uC in der Schleife für das Abfragen des SPI Interrupt-Flags hängen bleibt. Bei mir ist Miso aktuell offen (ohne irgendein definiertes Potential). Könnte es daran liegen? Ein Test mit 10k gegen GND hat
Lass den [c]SPI_PORT |=(1 << SPI_SCK);[/c] mal weg...
-
Thread
Vodafone Webby Webradio
width SDIO 1.1, No CISTPL_MANFID Tuple in FUNC CIS wifi driver :0421 SDIO AU1XXX: 4 Bit IRQ mode SDIO AU1XXX: IRQ between blocks, detect enabled RTL8711_3rdCUT Initialize Power Mode.ps_mode=0, smart_ps=0 RTC TIME GET : 4819080f(00000000:00000f3c) RTC TIME SET : 4d2f5744 saevaDBG
als "IMEI" auf dem Boden des Webby wie etwa in http://cdn03.trixum.de/upload2/6200/6019/f/fbbce9dc1c2a47d4fa6c63598092e25a.jpg
-
Thread
Vieleeeele Eingänge, viele Ausgänge.
kann man den Tastern noch XOR-Gatter spendieren, die - kaskadiert - jede Zustandsänderung an den µC melden und erst dann eine Abfrage der Schieberegister veranlassen (z.B. CMOS 4531).
verwenden. Die Schieberegister kann man übrigens kaskadieren, das ist im Prinzip noch besser als 8 einzelne Chips an nem I2C Bus anzubinden.
-
Thread
erster Mikrocontroller programmieren -> fragen
vielleicht) später mit DMX Ausgang werden. Bis dahin muss ich aber noch viel Lernen was Bascom und µC betrifft.
Preis so niedrig halten wie es geht ;) > [...]oder steckst den µC direkt rein. Okay.
-
Thread
RGB Led mit Musik steuern
mit fastFFT auf dem Atmel wohl auch geht, aber meine fastFFT Versuche unter C liegen min. 2 Jahrzehnte zurück.
Die Farbinfos kommen per 8-Bit-PWM. Beim Arduino also ein einfaches analogWrite(PIN_R, curRedValue); analogWrite(PIN_G, curGreenValue); analogWrite(PIN_B, curBlueValue);
-
Thread
LED Matrix | Atmega8 | C
= ~(1 << OE_PIN); // enable latches again col = (col << 1) & 0xFE; // lets wander through the bits and make sure of a clear LSB row++; // prepare the next scan // limit the matrix to 7 columns if (col == 0x80) { col = 0x01; row = 0; } } [/c] Der Mega 8 hat hier viel zu wenig
ist 0. also sollte die Bedingung heissen: [c] if (col == 0) { col = 0x02; row = 0; } [/c] Es steht dir auch frei, row als Abbruchbedingung zu nehmen, dann würdest du auf 'if (row > 5)' abfragen. Übrigens musst du natürlich den Timer
-
Thread
GLCD Routinen ( KS0108, HD61202 )
soll nie nie sagen. Im Code findest du einige Aufrufe der Funktion _delay_us. Das steht dann [c]delay_us(1); [/c] oder [c]delay_us(2);[/c] Änder die mal alle in [c] delay_us(20); [/c] und schau, was dann passiert. Wenn es damit geht, kannst du dich schrittweise an einen kleineren Wert
zu überschreiben, ohne ihn vorher löschen zu müssen. Hierzu muss lediglich 2 Zeile in der mylcd.c ergänzt werden: //Zeile 513 for (bit=0;bit<8;bit++) { if ((data&(1<<bit))!=0) lcd_set_pixel(x,cursor_y+page*8+bit,BLACK); else lcd_set_pixel(x,cursor_y+page*8
-
Thread
Atmega via Ethernet flashen
Claus wrote: > wenn ich in der eemem.c > unsigned long EEMEM mlTFTPipEEP = IP(255,255,255,255); > einstelle und in der etherflash.c die zugehörige Abfrage auskommentiere > if (sock.DestinationIP != IP_packet->IP_Srcaddr) > dann
16 bit addition gemacht, ohne carry. checksum.lLongAcc = (uint32_t) checksum.nWordAcc.DataL + (uint32_t) checksum.nWordAcc.DataH; return ~(checksum.nWordAcc.DataL); [/c] Im generierten assembler code
-
Thread
Inkrementieren- aber wo ist der Fehler (ATmega8)
Hallo, benutzt Du einen C++ Compiler? In der Überschrift schreibst Du "C-Programm", dann folgen aber verschiedene Definitionen von lcd_write() (mit jeweils unterschiedlichen Parametern), was C++ typisch ist. Hier ist eine
als bei C Programmen. C Programme haben die Endung .c
-
Thread
7-Segment LEDs ansteuern
#7932366: > Die Frage ist, dürfen 12 Arduino-Pins gleichzeitig mit 12×40mA belastet > werden? Die einzelnen Pins schon, aber Vcc bzw. Gnd? Was steht im Datenblatt? Bei gemeinsamer Anode würde hier einen Tiny85 nehmen und 2 solche TPIC6C596 Schieberegister: - https://www.amazon.de/dp/B0DDKF1L3H
hilft einem blutigen Laien ja so richtig weiter. Und **du selber** schlägst dann auch noch einen µC vor. Zur Erinnerung: **wir wissen derzeit noch nicht mal, ob die fraglichen Anzeigen eine gemeinsame Anode oder eine gemeinsame Kathode oder gar einzeln herausgeführte LEDs haben** Wozu also
-
Thread
AD-Kanäle galvanisch trennen
Anstelle des Optokopplers würd ich einen Datentrenner vorschlagen. Für I2C wär der ADuM1250 zu gebrauchen. Oder ADuM5240/5241/5242: Datenbustrenner mit integriertem DCDC-Converter
soll denn schwierig sein ? Z.B. wandelt ein Tiny13 mit hoher Geschwindigkeit so vor sich hin (10Bit !). Der Hauptprozessor löst zum abfragen einen INT aus und der Tiny gibt dann 2 x 8bit des zuletzt ermittelten Wertes aus. Sagen wir 4µs/Byte + 2µs für Bearbeitung der Anfrage würde mit 10µs Deine Anforderungen
-
Thread
Besitz Arduino einen RTC?
nichts über das Format aus. - Wenn man Zeiten in µCs häufiger braucht, dann braucht man sie als 32-/64-Bit Variablen. - Atmel nennt I²C auch TWI. Abweichung von normalen Namen, sind ihnen wohl egal (bei I²C waren es auch noch Lizenzkosten). Aber wenn man einmal abweicht...
im Beitrag #4493895: > Wenn man Zeiten in µCs häufiger braucht, dann braucht man sie als > 32-/64-Bit Variablen. Das ist nicht bei jedem so. Ich könnte mir vorstellen, dass nicht jeder auf einem 8-bitter das ganze in einer 64-bit Unixzeit umrechnet (32-bit ist ja nicht besonders zukunftssicher).
-
Thread
Reichelt: Was ich gerne im Programm hätte
umständlichen Beschaffung und der dadurch entstehenden Transportkosten absieht! Ferner das "Gleiche" für I2C Bauteile Leitungstreiber bzw. Bus-Multiplexer, Interfacebausteine (RS232,USB,1Wire)... ++++ -MAX7311 16Bit-I/O-Portexpander -MAX4572 14fach I²C-Analog-Schalter -IL300 Analog-Optokoppler -TLP504A
einige der gwünschten Bauteile lagernd im Sortiment habe. Um einmal ein paar zu nennen: DS1631 (12Bit I²C-Bus Temp.Sensor), MAX7311, MAX4572, IL300, TLP504, Digitaler Feuchtesensor Sensirion SHT15, Drehimpulsgeber Typ PEC12 und noch ein paar Kleinigkeiten. Vorbeischauen lohnt sich: http://cctools.hs-control.de
-
Thread
CDC für xmega
CDEFS += -DBOARD=BOARD_$(BOARD) -DARCH=ARCH_$(ARCH) [/c] bye woodym
before 'USB_EP_t' main2.c:105: warning: ignoring #pragma GCC optimize main2.c: In function 'Config32MHzClock': main2.c:112: error: 'NVM_PROD_SIGNATURES_t' has no member named 'USBRCOSC' main2.c:116: error: 'OSC_RC32MCREF_USBSOF_gc
-
Thread
Prüfsumme berechnung
identifizieren, der Tuner quittiert den Befehl mit dem Zählerwert: Beispiel: Prozessor sendet: c0 0 2 4 1 2 1 0 0 0 1 1 5b c0 Tuner antwortet: c0 0 2 84 1 0 11 c0 Da ich diese Kontrolle nicht brauche/nutze, ist es relativ egal, was für ein Zählerstand vorn steht. Tatsächlich sind die Werte
eine Flechter Sum, und die beiden Resultate werden mit XOR verknüpft. Du brauchst zwei unsigned 8-Bit Zähler (A und B). In A summierst du jedes Eingangsbyte auf (modulo 256) in B den jeweiligen Wert von A. Am Ende noch A XOR B, das ist die Checksum. [c] #include <stdio.h> #include <stdlib.h>