-
Thread
Toner-Chip resetten / kopieren (Zahle eventuell für Lösung
fragen: ist bei dem EVa-Kit für den DS2401 Software bei? @Fasti ich habe mir einen preiswerten EPSON C64-Drucker gekauft und habe schon 1x die schwarze Tinte nachgekauft, jetzt sind die bunten drann. Epson rühmt sich damit, jede Farbe einzeln wechseln zu können, haben aber verschwiegen, dass nun jede
Kit. Habe mal zwei der Chips testweise angeschlossen: 1-Wire Device Description Device Address: C9004740937332B3 (B3 32 73 93 40 47 00 C9) Name: DS1961S Alternate Names: DS2432 Description: 1K-Bit protected 1-Wire EEPROM with SHA-1 Engine. 1-Wire Device Description Device Address: F200474032E2F9B3
-
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
einfaches DIGITAL- Oszilloskop (800 Datenpunkte) Assembler
Soundkarte verfügt a) über eine höhere Bandbreite (bis zu 50kHz) b) über eine höhere Auflösung (bis zu 24bit) c) über einer schnellere Aktualisierungsrate (> 100fps) d) über eine größere Aufzeichnungstiefe (ein paar 100GByte, eben bis die Festplatte voll ist) Warum geht die Schaltung nur bis 5kHz ? Ich
... ein neues Update (Version 1.0.25)..... @Dieter @Benedikt > ... Public Sub ABFRAGE_AUF_HDD_SPEICHERN() > und zwar erwartet er ein File auf Laufwerk C:\AUSGABE_OSZI.txt > Ist dieses File nicht vorhanden, hängt sich das Programm bei mir auf Danke für den sehr wichtigen Hinweis
-
Thread
T6963c Text wiederholt sich
: 1. Die Sourcen sind wohl ursprünglich für einen AVR geschrieben. Also schmeiss mal die ganzen Bit-Schiebereien etc. raus, und steuere die Ports direkt an. Du kannst entweder mittels #define oder durch sbit-Deklaration für die einzelnen Portbits entsprechende Namen vergeben. Also entweder statt der
Quelltext gesehen, das du bei allen Funktionen die direkt auf das Display zugreifen(also Status abfragen, Kommando schreiben, Daten schreiben, Daten lesen) alle Leitungen gleichzeitig setzt/ausliest. Schreibe dir mal Makros zum setzen und löschen aller einzelnen Leitungen(CE, WR, CD usw) und rufe
-
Thread
Grundsätzliches: Ungeklärtes Verhalten
damit ich fehlerhafte EEPROM-Werte ausschließen konnte. Er springt zum Verrecken nicht in die if-Abfrage [c] if (mode==0) { // 0 - Standby if ( !(PINB & (1<<PINB3)) ) { // Akkutyptaster (PB3) abfragen .... [/c] obwohl er nichts anderes machen müsste.
nicht das, was man richtigerweise gelesen hätte. Jetzt kann man natürlich vor JEDEM Zugriff das EEPE-bit im EECR abfragen, ich hab dann aber (nachdem ich nur einen zentralen Schreibzugriff hab) die Abfrage nur nach dem Schreibvorgang eingebaut. Hab damals auch eine Weile das "ungeklärte Verhalten" studiert
-
Thread
IR NEC Signal mit einlesen
IRMP_SUPPORT_xxx_PROTOCOL]] Du kannst die Stelle aber auch so lassen wie es ist. Dann "versteht" Dein µC sogar noch ein paar weitere Fernbedienungen, die außerdem noch in Deinem Haushalt rumschwirren. 6. irmpconfig.h: IRMP_PORT_LETTER + IRMP_BIT_NUMBER definieren Klicke erst auf [[IRMP#IRMP_SUPPORT_xxx_PROTOCOL
0xDC23 && irmp_data.command == 0x0017 ) // Taste Pfeil oben { [/c] Das sieht zu kompliziert aus. Teste einmal in der Hauptschleife auf NEC Protokoll und die Adresse, dann mache aus irmp_data.command ein switch-case Konstrukt. Dann musst du nicht jedesmal alles abfragen
-
Thread
Atmega 32 RC5
leider irgendwie nicht zum gewünschten ergebnis. Aber ich hab noch eine frage wieso wird in dem Block [c] if(wartezeit >= 13) // 1 Bit = 14 * 127 µs gewartet? { anzahl_bits++; code_B[anzahl_bits] = (PIND & (1<<PD2)); // Bit pollen wartezeit = 0; // nächste Wartezeit beginnt
abzufragen. Daher habe ich wartezeit mal auf 6 gesetzt ( bedeutet ja um 127µs weiter in der mitte). Die Abfrage zum einlesen des Port Status wird nun erst nach 14 Timer Overflows ausgelöst. Nun ist mir aufgefallen das sich im Code Bereich die beiden letzten beiden Bits (Bit 13 und Bit14), egal welche Taste
-
Thread
Anzahl Sensoren - Anzahl I/O Pins
), sonst wären ja bei 4 Siebensegmentanzeigen noch einmal mindestens 28 Pins des µC weg. Und das ginge dann ja schon nicht mehr. Außerdem verstehe ich das im Moment so, das die einzelnen Pins des ATMega16 doppelt belegt sind. Wenn ich also 20 Lichtschranken anschließe, kann ich diese
und man kann auch die Lichtschranken multiplex abfragen (4x5Matrix, 9 Pins für 20 Lichtschranken ohne weitere ext. Hadware), ebenso ist eine I/O-Erweiterung über I2C möglich, mache ich aber eigentlich nie, da mir die I2C-Chips meist zu teuer sind. Für
-
Thread
zu viele Taster
kannst auch 255 Tasten an einen Pin hängen...wenn es der >Analogeingang ist! Da der AVR einen 10bit-ADC hat, würden auch 1023 gehen...
Kann mich daran erinnern, als ich mit µC angefangen habe wurde die 10er Tastatur der C-Control so abgefragt. Unterschiedliche Widerstände pro Taste die auf einen gemeinsamen Widerstand gehen und dann unterschiedliche Spannungen (Spannungsteiler
-
Thread
Bits nacheinander aus Maske lesen
den Wald grad nicht... Ich möchte gerne aus einer Bitmaske (0b10011110) - nacheinander die einzelnen Bits lesen und auf einen Pin ausgeben. Da komme ich quasi um eine if Abfrage ja nicht drum herum oder? Da geht es um eine Soft-I2C Anwendung die ich gerne schreiben würde. Da muss ja der SDA Pin
einfacher wenn ich als Grundvorraussetzung den Pegel von SDA immer auf 0 setze und dann je nachdem welcher Bit in der Maske gesetzt ist, den Pegel auf 1 setze oder eben nicht?! Also so: [c] uint8_t Maske = BitMaske; //Damit BitMaske nicht "leer geschoben" wird for( i = 8; i; i--) { SDA_PORT
-
Thread
Zeiger auf Array
Versuch mal das hier: [c] union BUS { struct { unsigned Bit7:1; // Bit 7 unsigned Bit6:1; // Bit 6 unsigned Bit5:1; // Bit 5 unsigned Bit4:1; // Bit 4 unsigned Bit3:1;
Machs doch so, das geht immer ;-) [c] Zeiger = (unsigned int*)(void*)&BusSpiOutput[0]; [/c] Oder gib dem Zeiger den richtigen Typ: [c] union BusTransfer { struct { unsigned Bit7:1; // Bit 7 unsigned Bit6:1;
-
Thread
Idee für Optimierung? (Scope-Clock auf Speed)
Hi, ich sucht nach Ideen für Geschwindigkeits-Optimierung des C-Codes für meine Scope-Clock. Eckdaten: -- ATmega168 @ 24 MHz -- IRQ-Rate = 48000/s, d.h. 500 Ticks/IRQ IdR wird pro IRQ ein Pixel an einen 8-Bit DAC ausgegeben. Weil die Anzeige eine Röhre ist
Regs sie verwenden. Eigentlich bin ich ganz froh, daß ich geschafft hab die Software zu 95% in C hinzubekommen. Ähnliche Projekte implementieren komplett in Assembler oder nutzen andere Hardware wie FPGA, mehrere Prozessoren oder 32-Bit Boliden. In Assembler sind lediglich Teile der Arithmetik
-
Thread
Eprom von Denon DJ Laufwerk defekt Winbond 78e52
dem obigen Dump des T-3 ist nicht sehr kompliziert, im Prinzip viel "User Interface" (u.a. Tasten abfragen, LEDs ansteuern, Pitch Regler per ADC abfragen, Geschwindigkeit berechnen und an den CPLD schicken). Um die Geschwindigkeit kümmert sich dann der CPLD, das wird beim DJ101 vermutlich genauso sein.
ein Aprilscherz? Wer kommt auf die Idee Programmcode nicht als reinen Text zu speichern? Keil C für 8051 compilert das Zeug. SDCC sollte auch funktioniern, beschwert sich bei mir aber mit der merkwürdigen Fehlermeldung: "denonmcuv3.c:1: warning 190: ISO C forbids an empty source file". Vielleicht
-
Thread
BCD Z ählen (AVR ASM)
bis 9. ---->8---- Der Port soll 4 74LS2154 (4-to16-Line Decoder) ansteuern, mit den ersten 4 Bits übermittel ich den BCD Code an alle IC's und mit den anderen 4 möchte ich die Freigabe geben bzw. sperren für die einzelnen IC's ----8<---- Da du einen (eigentlich 4) "1 aus 16-Decoder" dranhängen
der oberen Bits gelöscht und alle unteren Bits auch - kopiere die unteren Bits von zahl zum Ausgaberegister, ohne dabei die oberen 4 Bits zu verändern (or ausgeb,zahl) - gib das Register an den Port aus (out
-
Thread
Wärmezähler über optische M-Bus-Schnittstelle auslesen
(&tty, speed); tty.c_cflag &= ~CSIZE; tty.c_cflag &= ~CSTOPB; tty.c_cflag &= ~(PARENB | PARODD); tty.c_cflag |= (CLOCAL | CREAD); tty.c_cflag |= bits; tty.c_cflag |= parity; tty.c_iflag &= ~(IXON | IXOFF
nicht ohne: "\x10\x40\xFE\x3E\x16" # SND_NKE mbus_init "\x68\x05\x05\x68\x53\xFE\x51\x0F\x0F\xC0\x16" # statusrequest vor der Abfrage.
-
Thread
LCD mit Interrupt möglich?
Hi >Ich habs eben mal ausgerechnet: mein µC befindet sich für einmal 7 >Messwerte schreiben 89,124s in der Warteschleife. In welcher Warteschleife?? MfG Spess
bisher nicht praktisch ein, war mehr ne Designstudie, obs geht. Ich nehme die standard 50µs warten 4-Bit LCD Ansteuerung. Und ein Scheduler in der Mainloop ruft sie alle 200ms auf. Peter
-
Thread
LCD und lesen des AC
gleichbleibenden Code in Funktionen aus: [c] // sendet ein Daten- oder Kommandobyte (RS am LCD muss vorher // entsprechend gesetzt sein) void writeByte( unsigned char data ) const { // viel Bitgefummel, je nach 4-Bit
|= (1 << RS); lcd_enable(); _delay_us(100); } ... [/c] lcd_enable() setzt lediglich das "Enable" Bit. mfg Reini.
-
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
suche einfachen und guten Temp Sensor
verstehe ist es egal wann und wie viele Sensoren ich auslese. Aber jeder einzelner Sensor benötigt min. 750ms um die aktuelle Temperatur zu digitalisieren. Macht er aber erst wenn er gesagt bekommt miss mal neu und mach ein paar Bit daraus und warte ob jemand diese Bits lesen
Hi Der TSIC hat nur eine 'Genauigkeit' von 0,3°C bei 11bit, laut Datenblatt werden die Werte als 8+3 (=11bit, 8tel Grad) ausgegeben - der DS18B20 hat dagegen 8+4 (=12bit, 16tel Grad). Wenn schon der DS18B20 mit seiner Auflösung von 0,0625K nur bedingt
-
Thread
Bootloader: Wenn er hängt, was dann ?
haben, daß weder die Firmware noch der Bootloader selber den Bootloader überschreiben kann. Andere µC bieten mehr, andere weniger. Aber wenn man mit Bootloader arbeiten will oder muß, dann tut man gut daran, einen µC mit gutem Support für Bootloader zu verwenden. Ist ja nicht so, daß man keine Auswahl
Beitrag #5577573: > Schlaukeks. Lieber Schlaukeks als Dummbrot. Und pass auf, daß du nicht aus den Bits kippst.
-
Thread
PID-Regler mit anti-Windup
PID-Regler möglich auf jedem µC laufen sollte! Long Int hat 32-bit float hat 32-bit Das einzige was die beiden unterscheidet ist die Darstellungsweise: Int ist allerdings in 2er komplement und float ist in matrisse und exponent
I-Anteil zu groß war, oder die Berechung von e falsch skalierte. Deshalb alles auf 0..1 rechnen. [c][c]const double y_min = 0; double y_max = 1023;//(10 bit PWM) double x_min =0; double x_max =255; //z.B 8_Bit ADC double Ta = ???; double Kp = ????; double Ki = ????*Ta; double
-
Thread
unterbricht ein zweiter Interrupt einen anderen ?
auszug aus dem datenblatt vom ATmega8: When an interrupt occurs, the Global Interrupt Enable I-bit is cleared and all interrupts are disabled. The user software can write logic one to the I-bit to enable nested interrupts. All enabled interrupts can then interrupt the current interrupt routine.
Die Abfrage der Taster in die PWM-Routine mit hineinlegen. Da wird er zwar öfters abgefragt, aber das sollte nicht schaden. (Gilt natürlich nur, wenns um die reine Abfrage geht - die Auswertung darf nicht im
-
Thread
Probleme bei der IIR-Filter Realisierung
der Implementierung dürfte sich noch einiges verbessern lassen, zwischen einem straightforward in C runtergeschriebenen Programm und einer auf die Hardware optimierten Version können bei einem DSP wie dem C6000 Welten liegen. Erst mal würde ich die if-Abfragen aus der inneren Schleife rauswerfen, die
Hallo, habe ein IIR-Filter Beispiel (in C) in der Hilfe gefunden, bin mir aber nicht ganz sicher was die bitverschiebung nach rechts (>>15) soll? ein short hat doch 32bit... [C] void iir(short x[],short y[],short c1, short c2, short c3)
-
Thread
RAM-Initialisierung beim Hochlauf unterdrücken
auslesen! So werd ich es eh machen! Am besten ists, wenn man den Hochstartgrund und dann noch ein 16-bit-value abfragt. Dann könnte (fast) nichts mehr schief gehen! (Anbei der Code, wie man den Neustart-Grund abfragen kann) viele Grüße, Christian //hochstartgrund am programmbegin per MCUSR-register
akkumulieren die einzelnen Bits und du hättest plötzlich ,,mehrere Reset-Gründe''. :) Als allererstes deshalb, weil der Zeitraum bis zum Löschen des MCU[C]SR natürlich eine race condition darstellt. Tritt innerhalb dieser
-
Thread
Uhr wie im Ham Yard Hotel in London Gesperrt
auch schon am überlegen ob dass mein nächstes Projekt wäre. Was spricht eigentlich dagegen die einzelnen "Uhrwerke" mit einem Shiftregister anzusteuern? Für jeden (VID28-05) werden somit 2 Ausgänge (1. Bit = Impuls; 2. Bit = Richtung) von einem Schieberegister benötigt(z.b. http://www.reichelt.de/74HC
zuverlässiger beschleuligen zu können und weniger Geräusche zu erzeugen, wie Kai-Uwe oben schrieb. 16-Bit-Schieberegister ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Im MCP23S17^^ ist ein 16-Bit Schieberegister. Man könnte auch zwei 74HC595 kaskadieren um auf 16 Bit zu kommen. Mit 100Ω-Vorwiderständen zwischen Motor und
-
Thread
Erste Schaltung: Terrariensteuerung/DCF77/Dimmer/Schalter
Nulldurchgang der Spannung recht genau bestimmen, dafür muss ich ja ständig einen der Eingänge abfragen (polling). Wenn ich die Kommunikation über den 1-wire-Bus in Software selber gieße, ist der µC ja eine ganze Weile mit selbigem Bus beschäftigt. So weit ich weiss dauert die Übertragung eines Bits
Widerstand an, werden vielleicht noch mit Schmitt-Triggern aufbereitet und der Impuls wird an den µC geleitet.
-
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
Wenn sich Timer0 und Timer1 streiten.
(flag_1) { OUT_CLK1 = ~(OUT_CLK1); flag_1 = 0; } } return 0; } [/c] Portvariablen.h [c] #ifndef PORTVARIABLEN_H_ #define PORTVARIABLEN_H typedef struct { unsigned int bit0:1; unsigned int bit1:1; unsigned int bit2:1; unsigned int
OUT_CLK0_DDR REGISTER_BIT(DDRA,0) #define OUT_CLK1_DDR REGISTER_BIT(DDRA,7) #define OUT_CLK0 REGISTER_BIT(PORTA,0) #define OUT_CLK1 REGISTER_BIT(PORTA,7) #endif [/c] Grüße Sebastian
-
Thread
sbr,cbr.sbrs,sbrc
,bit1 ;bit1=1 sbr temp,bit0 ;bit0=1 ich will die einzeln setzen und nicht zugleich ;Stimmt das nun so? oder ist das bit0 das bit1? bit_abfragen: sbrc temp,bmask_0 ;spring wenn bit0=0 rjmp end_frage
Umgedreht wird ein Schuh draus... Die Bitnummern gehen von 0 bis 7, die Bitmasken von 0 (kein Bit gesetzt) bis 255 (alle Bits gesetzt). Selbstverständlich kannst Du die Bitmasken (Wertigkeiten der Bitnummern) vordefinieren und Dir damit die (für den Neuling ungewohnte) an C angelehnte Notation
-
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
avr-gcc-10 - "volatile deprecated [-Wvolatile]" Warnungen
aber einfach nur lästig, zum (in der Hardware häufig mal > notwendigen) Setzen eines einfachen Bits statt > > [c]FOOREG |= BIT;[/c] > > dann > > [c]volatile_store(&FOOREG, volatile_load(&FOOREG) | BIT);[/c] > > schreiben zu müssen – den wirklichen Mehrwert davon müsste mir erstmal >
/avr-libc/user-manual/group__avr__sfr.html [c] #define bit_is_set (sfr, bit) (_SFR_BYTE(sfr) & _BV(bit)) #define bit_is_clear (sfr, bit) (!(_SFR_BYTE(sfr) & _BV(bit))) [/c]
-
Thread
Wittig(welec) DSO W20xxA Hardware (Teil 2)
interessant buggy, auch abhängig vom FPGA-Bitstream. Mir sind 2 Versionen bekannt. Mein Scope kam mit 8C7, seit ich es umprogrammieren kann habe ich mit 1C9 rumgespielt. So wie die Abfragen in der alten Firmware programmiert sind ist 8C7 die neuere FPGA-Version. In Osoz habe ich einen Testbutton eingebaut
auch 0 oder auch 1 sein müßte. In den Raw ADC Werten dieses gestörten ADCs müßte es daher ein Bit (D5 oder D6 ...) geben, das sich nie ändert. Eine Maintenance Funktion, die die Datenübertragung überprüft, indem sie den DAC Wert verändert und dabei überprüft, ob die einzelnen Bits der Raw ADC
-
Thread
Optimale Auswertung von Rückgabewerten
nur 7 Bit zu vergleichen. Wie wird so ein Funktionspointerarray in C geschrieben? Kannst Du mir den Quellcode hier angeben? Hab da absolut keine Vorstellungen. Ich habe mir noch überlegt, ob ich alternativ Verzweigungen mache und jedes Bit des Codes nacheinander einzeln abfrage, ob es 1 oder 0 ist. Somit komme ich nach 8 Abfragen (8 Bit) zu der gewünschten Stelle. Wird aber im C-Code sicherlich verdammt unübersichtlich. Martin
-
Thread
Der vhdl-Schnipsel-Anfängerfragen Thread
oder auch, C <= "01" when A(7)='0' else "10"; /mfg
Oder [vhdl] C(1) <= A(7); C(0) <= not C(1); [/vhdl] Ach, übrigens: > Du hast also die ganzen anderen Kombinationen ausser "01" und "10" > ignoriert. Das war ein Lesefehler :-/ Richtig müsste es heißen
-
Thread
Funktion innerhalb von ISR aufrufen
; } ... } } [/C] Auf diese Art sind die Interrupts nur minimal gesperrt. Der µC bearbeitet das ISR Ergebnis, sobald Zeit dazu ist.
empfangen wurde. [C] char ReceiveBuffer[80]; uint8_t ReceiveCnt; uint8_t UART_Job; ISR( UART_RX_vect ) { char c = UDR; if( c == '\n' ) { ReceiveBuffer[ReceiveCnt] = '\0'; UART_Job = 1; } else
-
Thread
F1-Drehzahlanzeige selber programmieren
Gedankengang ist durchaus richtig und was du suchst sind Datenfelder, Arrays, Tabellen. http://www.c-howto.de/tutorial-arrays-felder-initialisierung.html Alles was du benötigst ist eine Zuweisung Anzahl LEDs zu BIT Muster and den Ausgängen. Statt BIT Weise zu steuern könntest du auch die Ports direkt
[AnzahlLeds]; } [/c] Das lässt sich auch auf 16 BIT erweitern nur musst du dann diese wieder in 2x8 BIT für den jeweiligen Port zerlegen. [c] void BargraphAnsteuerung (uint8_t AnzahlLeds) { const uint16_t BarGraph
-
Thread
Hilfe bei I2C (Peter Fleury)
doch nicht so oder? Der UART funktioniert. Habe ihn vorher getestet mit einem konstanten String: [c] uart_puts( "Hello World!\n" );[/c] Über ein Terminal kam auch im Sekundentakt Hello World! an. Also ich hatte einzeln zuerst das Blinken getestet (hat funktioniert), dann einzeln den UART und nun
received while(!(TWCR & (1<<TWINT))); // check value of TWI Status Register. Mask prescaler bits. twst = TW_STATUS & 0xF8; if ( (twst != TW_MT_SLA_ACK) && (twst != TW_MR_SLA_ACK) ) return 1; return 0; }/* i2c_start */ /***********************************************************
-
Thread
Große Datenmenge übertragen µC SD-Karte -> PC
Hi, ich würde gerne wissen wie man am geschicktesten ohne großen Ram/Puffer Daten einer SD-Karte (Fatfs) über eine UART an einen PC überträgt (UART in meinem Fall => Virtual-ComPort USB). Es geht um einen STM32 Temperatur und Feuchtigkeitslogger welcher die Daten in Tages-Dateien speichert YYmmdd.log Alle 24std gibts eine neue Datei. Ich habe viele einzelne Dateien welche aufgezeichnet werden, diese sind so ca. 30KB pro Stück groß. Wie macht man das nun ? Überträgt man immer Packetweise die Datei rüber? Oder gibts eine Methode wo ich nur die größe der Datei angebe und mein Transerfunktion
-
Thread
Hilfe bei Atmega32 Initialisierung
ADCSRA |= ( 1 << ADSC ); // nächste Messung starten } ... } [/c] verbraucht in Summe mit Sicherheit weniger Zeit, als dein ganzer Interrupt Klimbim samt Free-Running Modus und 3 Millionen globale Variablen und Flags. Abfragen musst du sowieso. Ob du jetzt eine Flag-Variable abfragst oder gleich das ADCSRA Register ist Jacke wie Hose. Edit: Nach genauerem Überlegen geht sogar die direkte ADCSRA Abfrage schneller als das globale Flag. Und zwar auf einem Mega32 deutlich schneller
-
Thread
Mit Drehimpulsgeber RGB Farbe einstellen
Problem mit dem Drehimpulsgeber habe ich schon gelöst. Ich habe das Programm dafür auf einen 89C2051 abgelegt. Dre tut nichts anderes, als den Drehimpulsgeber abfragen. Sobald ich dann drehe, dann kommt entweder bei P1.0 oder bei P1.1 ein kurzez Signal heraus. Diese beiden Signale steuern dann die
----------------------------------------- In meinem 2051 habe ich dieses Programm: INCLUDE 89C2051.mc abfrage: IF P1 = #11111111b THEN JMP aus IF P1 = #11111100b THEN JMP ein JMP abfrage aus: IF P1 = #11111110b THEN CLR P3.0 NOP NOP SETB P3.0 LCALL wait_20000 JMP abfrage
-
Thread
AVR-Mikrocontrollertechnik-Kursus in Assembler besprechung Gesperrt
xyz auftauchen damit der entsprechende Port auch > was ausgeben kann. > Der Befehl *SBI* ( Set Bit im I/0-Register ) macht dies für ein einzelnes Bit. Bernd_Stein
arbeiten musste. Auch das half leider nichts : http://rn-wissen.de/wiki/index.php/Assembler_Einf%C3%BChrung_f%C3%BCr_Bascom-User#.22S.22_und_.22V.22_Bit Immerhin scheine ich ja jetzt wenigstens das mit dem H-Flag begriffen zu haben. F. Fo schrieb im Beitrag #3947196: > Die Bücher von Schwabl-Schmidt
-
Thread
Ampelsteuerung mit 80C552 und µvision3 in Assembler
nein. So funktioniert das nicht. Was soll das sein "wenn 20h.0 nicht 0 ist" Ich kenn zwar deinen µC überhaupt nicht, aber das würde mich schwer wundern, wenn man sich bei einem jnz auf ein Bit eines Ports beziehen könnte Ein jnz wertet üblicherweise die Statusflags aus, die ein vorhergehender Befehl
Hallo! Beim 8051 ist 20h im internen RAM bit-adressierbar. Es dient also als Flag. Je nach Assembler kann man das aber nicht so schreiben. Es ist nämlich an der Bitadresse Null. Der Assemblerbefehl lautet also JNB 0h, marke (JumpNoBit
-
Thread
ARM7 mit VIC und Spurious Interrupts
per Software der Vektor abgefragt (und damit die Bits). Wenn aus diesem Modell etwas werden soll, dann muss das IRQ-Request-Bit im VIC "sticky" sein, d.h. es wird mit einlaufendem IRQ sofort gesetzt und bleibt dies so lange, bis der Handler es explizit
"Na klar, ich möchte beiden Problemen vorbeugen, da ich auch mal das I-Bit und das F-Bit verändern möchte." Darfst du ja auch, Du darfst auch beide abschalten wie es dir beliebt. Wenn du es allerdings einrichten kannst, nie beide zusammen mit dem selben MSR-Befehl abzuschalten
-
Thread
Signalwechsel ATMeg
die Austastung und setz sich nach weiteren Y Takten zurück, geht so was? Die Umschlatung der einzelnen Frequenzen will ich lösen in dem ich die Werte für ICR1, Ocr1A, OCR2 als Variable definiere, Tasten abfrage und die Variale beim dücken der Taste entsprechend übergebe. Das ist aber erts der näschte
Hallo mue_c liest Du noch mit? ich komm nicht weiter.
-
Thread
ADC Prescaler ändern Controllino
beschrieben wie das geht. Also habe ich folgenden Code eingefügt der aber scheinbar garnichts macht: [c] // set prescale to 16 sbi(ADCSRA, ADPS2); cbi(ADCSRA, ADPS1); cbi(ADCSRA, ADPS0); [/c] Ich habe einfach gemessen wie lange 1000 analog reads brauchen (millis davor und danach
PS @ufuf: Dein Code geht - danke dafür. Daraus kann ich aber auch nur entnehmen, dass man ein paar bits setzen muss um den prescaler zu ändern. Aso werde ich mal weitersuchen.
-
Thread
DIP-Schalter an ATmega8515
desto trotz: Pins einzeln abfragen ist Basisfertigkeit. Das muss sitzen (mit einem großen MUSS)
wie kommst du auf die merkwürdige Idee, PD0 wäre eine /Variable/? Um den Zustand der Pins an Port C abzufragen, liest man das PINC Register. Und schaut dann, ob in diesem 8-Bit Wert (aka unsigned char) das Bit mit der Nummer PC0 gesetzt ist: [c] if (PINC & (1<<PC0)) { return 1; } else {
-
Thread
schneller Optokoppler gesucht (3V RS-232, Reichelt?)
aber wenn's doch mal vorkommt, dann sollte nicht gleich alles abrauchen. Alternative wäre nach I2C-Isolatoren suchen und I2C benutzen - falls man mit denen kein UART-Signal übertragen kann.
Einschränkungen auch Balancing in einem einzigen IC (wofür sie aber wieder eine Steuerung durch einen µC brauchen) - aber bei Überwachung nur einer einzelnen Zelle (oder einer Parallelschaltung vieler), brauche ich das nicht bzw. kann ich das auch alleine machen wenn ich sowieso einen Steuer-Controller
-
Thread
ws2812 und andere zeitkritische Sachen
kannst Interrupts verwenden. > Das Assembler nötig wäre, ist Quatsch. Ist es nicht. Es mag auch in C gerade noch so gehen, dann bleibt aber ganz sicher nicht mehr sehr viel Rechenzeit über. Es ist nämlich so, dass in ein SPI-Byte nur maximal die Info für 2,66... WS2812-Bits passt, weil nämlich jedes WS2812-Bit zu mindestens 3 SPI-Bits verwurstet werden muss, wobei die Bitrate 800kHz/3=267kBit/s beträgt. Die Interrupts erfolgen also mit 267/8=33kHz. Und wenn der ganze C-Overhead bei ISRs 33.000mal pro Sekunde
-
Thread
Betty als Modellbau-Oszi
/drawing/fb1bit -DDRIVER_DRAWING -I./driver/graphic/ssd1854 -DDRIVER_GRAPHIC -DDRIVER_GRAPHIC_BACKLIGHT -I./platform/lpc2220 -I./platform/lpc2220/lpc2220_lib -c -o driver/drawing/fb1bit/drawing.o driver/drawing/fb1bit/drawing.c driver/drawing/fb1bit/drawing.c:25:1: warning: initialization from incompatible pointer type driver/drawing/fb1bit/drawing.c:25:1: warning: initialization from incompatible pointer type driver/drawing
-
Thread
CRC Fehlerkorrektur -> Lookuptable
Bei 113950 Baud habe ich aktuelle eine Fehlerrate von 50% ohne korrektur. Die Fehler liegen in einzelnen geflippten Bits. Fazit: original Softwareserial ist nicht so schlecht wie es im Netz immer behauptet wird. Aber sie ist natürlich viel schwächer als die Hardwareserial, klar! Für mich
..3 Mikrocontroller für einen > "simplen" BLDC Controller Wenn interessiert es, ob da 2 oder 6 uC werkeln? Ich habe es erst neulich irgendwo im Forum geschrieben: Wir nehmen MEGAs(328P) für Abfrage der verschiedenen Sensoren sowie Steuern der Aktoren und STM32 als Master macht die notwendigen