-
Thread
ATmega16 startet von allein neu?
ATOMIC_FORCEON) { bytUartIn = pos_uart_rx_in; pos_uart_rx_read = bytUartRead; } SET_BIT(UCSRB, RXCIE); // RX interrupt ein CLR_LED_INF; } } [/c] Jetzt gehen mir die Ideen echt langsam aus... Bin mir noch nicht einmal sicher ob ich wirklich alles als volatile deklarieren
Liest du einen uint16_t aus, dann geht das auf einem AVR nur in 2 Schritten, weil es ja eine 8 Bit Maschine ist und es keinen Assebmler Befehl gibt, der 16 Bit in einem Rutsch aus dem Speicher holen kann. schreibst du daher in C i = globale_Variable; dann kann es die Möglichkeit geben
-
Thread
AVR-Port über Funktionswert konfigurieren
ConnectionNr < ARRAY_SIZE( pinInfo ) ) pinInfo[ ConnectionNr].ddrRegister |= pinInfo[ ConnectionNr].bitMask; } [/C] Das ist eine ein wenig ausgeklügeltere Variante, in der die komplette Information, wie sich die virtuellen Anschluss Nummern auf die einzelnen Port Bits verteilen, in einer Tabelle
Karl heinz Buchegger schrieb im Beitrag #1848325: > [C] > if( ConnectionNr < ARRAY_SIZE( pinInfo ) ) > pinInfo[ ConnectionNr].ddrRegister |= pinInfo[ > ConnectionNr].bitMask; > } > [/C] Fehlt da nicht ein Sternchen? Gruß, Frank
-
Thread
USART Polling
nicht an > jeder Ecke auf das Leerwerden eines Sendepuffers warten mußt? Ich warte halt nicht, [c] if (USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == SET){ [/c] ich frage es zyklisch ab. Übrigens ist es der Empfangspuffer... Dirk B. schrieb im Beitrag #5433185: > wenn im 10kHz Interrupt 'sauber
Noise_Detect abzufragen bei defensiver Programmierung müsstest du die Voraussetzung für Parity_Error (Parity-Bit im _verwendeten_ Protokoll) vorher prüfen und zusätzlich einen 'Framing Error' beim Empfang nacheinander folgender Zeichen abfragen: wenn nach bspw. 1sek kein Zeichen empfangen wurde, dann dürfte sicher
-
Thread
GPIO schalten
nicht... wie gesagt ist "in" dem Pin bzw. "zwischen" Pin und CPU der SPI controller. Es gibt zwar µC die Multiplexer von jeder Hardwareeinheit zu jedem Externen Pin haben, die sind jedoch rar (z.B. PSoC von Infineon früher Cypress Semiconductor).
Programm um den Chip Select kümmerst, geht das. Dann kannst du auch 200 Chip Selects mit IO-Expandern (I2C oder Schieberegister) implementieren und dann im Code durch die einzelnen "Chips selecten". Der Linux-Kerneltreiber für SPI hat allerdings die 2 bzw. 3 CS-Signale fest verbaut. Für bestimmte Funktionen
-
Thread
PIC CCS C - Port Ausgang mit 8bit int setzen
Hallo Ich suche gerade nach einer Möglichkeit im CCS Compiler für den PIC184550 die PINs eines Portes direkt zu setzen. Also z.B. [code]PORTB = 11000000[/code] wodurch RB0 und RB1 gesetzt sein sollten. Gibt es irgendeine Möglichkeit dies mit einer 8 bit (oder auch 16 bit falls die direction noch enthalten sein muss)? Vielen Dank
-
Thread
Entwicklung eines Bussystems
mit den Sensoren und Aktoren, I2C Bus mit Puffern laeuft ca 50kBd, habe nur einen Master, aber viele MCUs haben Mu!timaster. Ich habe CAT 5 Kabel, 2 Adern I2C, 4 fuer Gnd + 5v + 12V, fuer die 2 verbleibenden baue ich ein RS485 Netzwerk
: Ringkerndrossel TLC 5,0A - 470 µH? R1: Metalloxydwiderstand 1W, 5%, 68 Ohm? > besser?^^ C2: Elko radial, 105°C, 47µ/10V, low ESR, RM 2,5mm, +-20%? >>> aber Lebensdauer nur 1000 Stunden!?
-
Thread
Benötigen Hilfe bei 8051: Schulprojekt Spannungsmesser
Wenn man 256 benutzt, muß man mit 16Bit rechnen, wenn man 255 benutzt, braucht man nur 8...
deswegen schrieb ich "Bei 8 Bit und 5 Volt Vref habt ihr 20mV pro Step." also ist bei 0FFh Feierabend. Nix 16 Bit. Allerhöchstenfalls 8 Bit Plus Signum !!! jetzt geh ins Bett... Stephan
-
Thread
Hargassner Pelletheizung Betriebsdatenerfassung
21 Int Vorlauftemperatur Heizkreis 3 Soll °C 22 Int Vorlauftemperatur Heizkreis 4 Soll °C 23 Int Boilertemperatur 2 SM °C 24 Int HK1 FR25 *10 °C 25 Int HK2 FR25 *10 °C 26 Int HK3 FR25 SM *10 °C 27 Int HK4 FR25 SM *10 °C
1o40901002190000a [/c] Da fällt also immer nur 1 Bit um. Ich vermute (oder so hätte ich das früher gemacht) das der Aufbau so ausschaut: 1o = Protokollkenzzeichen (was für Daten kommen) 8 Byte Daten 1 Nibble Prüfsumme
-
Thread
Sicherungsfestplatten überprüfen
ist nicht richtig. Die Daten verrotten dir durch Bitrot. D.h. sie verlieren mit der Zeit bei einzelnen Bits ihre Magnetisierung. In der Gesamtbetrachtung ist die Demagnetisierung durchaus gering, aber einzelne Bits trifft es halt schon und dann sollte das Dateisystem in der Lage sein, dies zu erkennen
Menge "--force","--i-know-what-im_doing" - Optionen... Mit "examine" kannst du den Zustand der einzelnen Raid-Member abfragen, damit ohne Stochern im Nebel herausfinden wo das Problem liegt, die Scherben zusammenkehren, "assemblen", läuft wieder, scrub-lauf drüber, fertig.
-
Thread
I2C Geschwindigkeit
for stable operation */ }/* i2c_init */ [/code] Quelle: http://homepage.hispeed.ch/peterfleury/i2cmaster.zip - twimaster.c Aber der Präprozessoroutput wäre mal interessant. Grüße Oliver
etwa 9,9 > > Kauf Dir ne neue Brille. ändert nichts ... https://de.wikipedia.org/wiki/Vors%C3%A4tze_f%C3%BCr_Ma%C3%9Feinheiten#SI-Pr.C3.A4fixe
-
Thread
16 Bit von Temp-Senor empfangen
während Du das CS des LM74 auf low hälst. Und dann halt entsprechend in die variablen packen. In C sieht das ganze bei mir so aus: [c] int16_t current_temp; clear_bit(PORTB, PB4); SPDR = 0; loop_until_bit_is_set(SPSR, SPIF); current_temp = (SPDR << 8); SPDR = 0; loop_until_bit_is_set(SPSR, SPIF); current_temp |= SPDR; set_bit(PORTB, PB4); [/c] Nachtrag: Weil ich es grad sehe, der LM74 sendet mit den ersten 2 Byte direkt den aktuellen Wert, du brauchst ihn nicht extra via Kommando abfragen.
-
Thread
Flankenauswertung bei vielen Tasten
Ich mach das gerne so, dass ich für jede Taste eine uint8_t nehme und dann die Abfrage per Interrupt alle x ms aufrufe. Bei jedem Aufruf werden die Bits um 1 nach links geschoben und dann das letzte Bit entsprechend dem Zustand der Taste gedrückt. Eine Flanke ist dann, wenn
ausreichend dargelegt. Was man also machen kann, ist in der SysTick-Routine, die zumeist zum Tasten-Abfragen herangezogen wird, zunächst alle Tasten-Zustände in ein Wort zusammenzufassen (wie auch immer), um dann alle Bits in diesem Wort der Reihe nach auszuwerten. Das ist zunächst etwas wilde Bit-Schieberei
-
Thread
Variable zwischen zwei Uhrzeiten auf 1 setzen, sonst 0
. Also in der Art: [c] private int testeEinenWert(int zahl, int limit) { if (zahl > limit) { return 0; } return 1; } [/c] Warum? Ganz einfach: Du schreibst ein paar Tests, nach dem Motto: [c]
> Balou Baer schrieb: >> Daher ist das Testen sonst sehr zeit aufwendig ^^. > > 4 Vergleiche 8Bit sind überhaupt nicht zeitaufwendig. > Das vorher multiplizieren ist deutlich aufwendiger. Das nicht, aber das Warten bis 22:30 und danach bis nach 5:30, um zu sehen, ob die Abfrage auch das gewünschte
-
Thread
Hilfe bei Port Definition notwendig?!
Ports generell einfach als Ausgänge nutzen kann und einfach über die entsprechenden Befehle die einzelnen Bits setzen kann?! Es ist also keine Initialisierung der Ports notwendig?! Bsp.: "P1_DATA = 1" --> Die einzelnen Pins von Port 1 haben die Werte 00000001 ?! Und wenn ich einen Pin als Eingang
Ports generell einfach als Ausgänge nutzen > kann und einfach über die entsprechenden Befehle die einzelnen Bits > setzen kann?! Es ist also keine Initialisierung der Ports notwendig?! > Bsp.: "P1_DATA = 1" --> Die einzelnen Pins von Port 1 haben die Werte > 00000001 ?! So richtig? Dietrich L
-
Thread
CAN Gateway mit AVR möglich?
Beiträge bezüglich CAN Gateway gefunden, aber es bleibt die Frage offen, ob es nicht doch mit einem 8-Bit AVR möglich wäre. Ziel ist es, in einem Auto welches mit 500kBit/s CAN arbeitet und rund 1000 Messages pro Sekunde aussendet ein Gateway zu bauen. Ist das noch mit einem 8-Bit AVR, also AT90CANxxx
per Hardware durchleiten und Abfangen könnte, aber geht ja leider so nicht wirklich ohne anderen µC. Herbert
-
Thread
[S] Leute die einen Logic Analyzer (MiniLA) bauen wollen
: FT_Result; begin res := Set_USB_Device_LatencyTimer(100); res := Set_USB_Device_BitMode($00,$00); // reset controller res := Set_USB_Device_BitMode($00,$08); // enable Host Bus Emulation passed := Sync_To_MPSSE; InitDev := passed; end; [/c] und in der anderen Anwendung mit einer Latenzzeit von 16ms??? [c] function InitDev : boolean; var passed : boolean; res : FT_Result; begin res := Set_USB_Device_LatencyTimer(16); res := Set_USB_Device_BitMode($00,$00); // reset controller res := Set_USB_Device_BitMode
-
Thread
brauche Hilfe für Problem mit Auto-Display
and RETI instruction Enhanced calculation precision using a 32-bit accumulator • Instruction set designed for high-level language (C) and multi-tasking System stack pointer Enhanced pointer-indirect instructions and barrel shift instructions • Faster execution
open-drain outputs) : 8 ports • Timers Timebase timer, clock timer, watchdog timer : 1 channel each 8/16-bit PPG timers 0 and 1 : 8-bit ´ 2 channels or 16-bit ´ 1 channel 16-bit reload timers 0 and 1 : 2 channels 16-bit I/O timers : 16-bit free-run timers 0 and 1 : 2 channels 16-bit input capture 0 : 2
-
Thread
Funktion zum vergleich von Variablen
zwischen den Zeilen ändert. Hmm. Das ist aber schon mal der perfekte Ansatz für eine for-Schleife [c] for( BitNr = 0; BitNr < 8; ++BitNr ) { if( ( input & ( 1 << BitNr ) ) != ( output & ( 1 << BitNr ) ) ) { sprintf( buffer, "Fehler im Bit %d", (int)BitNr ); lcd_puts( buffer
Kabelbruch verhindert, >dass die 1 überhaupt auf der richtigen Leitung durchkommt. Das prüft diese Abfrage: [c] if (inputport != outputport) [/c] Gruß Jonas
-
Thread
7 Segment Anzeige auf verschiedenen Ports
Weshalb ich in meinen Code oben davon ausgegangen bin, das mind. 1 PCF-9574 als Bus-Expander (i2c-Bus) nachgeschaltet ist. Dann muss der TO nur für jede Ziffer die Bit-Sequenz festlegen, und dann die Bit-Sequenz in einen Rutsch zum PCF-8574 senden. Die passenden "Mikro-Leds" (was anders sind
stehen würde: ((r) & ~(m)) Zu sehen ist hier eine UND-Verknüpfung mit m. In m wird jedes einzelne Bit invertiert. Somit werden die Bits in r gelöscht, die durch m maskiert sind. Der Hintergrund: Das ^ Zeichen bedeutet in C eine Exclusive-ODER Verknüpfung. Eine Exclusive-Oder Verknüpfung
-
Thread
C-Code optimieren (passt nicht in Attiny2313) :( Gesperrt
selten einfach nur int nehmen willst, sondern du willst spezifisch sein. Insbesondere willst du 8-Bit Integer benutzen wo es auch immer geht. zb hier [c] void ausgabe_display_temp(int zeile, int hv, int lv) { .... [/c] die Funktion wird so aufgerufen [c] .... ausgabe_display_temp
. Dann seh ich da 'dead code' [c] .... TWI_targetSlaveAddress = DS1621_int; messageBuf[0] = (TWI_targetSlaveAddress<<TWI_ADR_BITS) | (FALSE<<TWI_READ_BIT); messageBuf[1] = 0xAA; temp = USI_TWI_Start_Transceiver_With_Data
-
Thread
UV-Laserdrucker
ATTiny2313 besser - oder meine Schaltung war "besser". Egal, jetzt geht es wieder :-) Habe [c] OCR0B = 0x00; // Ab 0 wird das Ausgabe-Bit gesetzt [/c] durch [c] OCR0B = 0x01; // Ab 1 wird das Ausgabe-Bit gesetzt [/c]
// source size is 32bit DCH1DSIZ=4; // destination size DCH1CSIZ=4; // 32bit per transfer request [/c] Viele Grüße
-
Thread
Altium Designer 18 verfügbar
Properties Panel gefällt mir. Boah, und schon geht der Spass los mit der AccessDatabaseEngine 32 Bit gegen 64 Bit. Und da ist auch schon der erste "crash" von AD18 trotz nur noch AccessDatabaseEngine 64 Bit installiert. Sauber.
Bis Version 17 war ja noch mehr oder weniger alter Delphi-Code drin, in Version 18 jetzt alles auf C# umgestrickt. Inkl. 64-Bit-Unterstützung. Da sind solche Fehler durchaus zu erwarten, vernünftige Firmen arbeiten jetzt noch mit AD17.1, und testen AD18 evt. mal aus Neugier nebenher. Dieser Schritt
-
Thread
Heizungssteuerung mit ATMEGA 32
Werner Freytag schrieb: > hi XXX, > > habe doch mit uint16_t 2 Bytes (16 Bit) vereinbart und schreibe sowohl > als auch lese mit write_word und read_word jeweils 2 Byte. woran siehst du das? [C] hv = eeprom_read_byte(&CheckEEPROMData); .... hv = eeprom_read_word
Sourcecode aufzeigen. Mir ist nur aufgefallen, dass aus 750 schnell 238 werden wenn die die beiden oberen Bits wegfallen. Ist es evtl. ein Problem mit dem zweiten Aufruf von "itoa(hv,c,10)"? Wie ist den hv deklariert? Gruss XXX
-
Thread
mehrere Interrupts beim ATMEGA32
eine Wandlung. In dieser Zeit kann der µC ne Menge anderer Dinge erledigen (wenn er nicht grad mit einer sehr kleinen Taktfrequenz läuft).
Dir kann zu jeder Zeit ein Interrupt akzeptiert werden. In der Interruptroutine bei mir könnte das Bit freigegeben werden und damit wären auch weitere Interrupts akzeptierbar. Bei den Rückkehradressen dürfte es keine Probleme geben. Nur für die InterruptEnable Bits gibt es keinen Stack. Nachteil bzw
-
Thread
2 Taster ein Kabel
hier erstmals in die Runde. Ok, das wörtliche PIN hat gefehlt, aber bei einem Port mit mehreren Bits ist die Aufgabe ohne Witz.
merken indem du es mal aufzeichnest und durchspielst. Und warum nicht? Spiel das mal durch. Abfrage Taster 1: GPIO2 als Ausgang auf Low, Pegel GPIO1 lesen Abfrage Taster 2: GPIO1 als Ausgang auf Low, Pegel GPIO2 lesen Das ganze nennt sich dann /Zeitmultiplex/
-
Thread
Prozent rechnung mit AVR
= 8, 899/8 =8 etc. Siehe [[Festkommaartihmetik]]. So gehts besser. Die Rechung erfolgt in 32 Bit, ausserdem erst Multiplikation, dann Division. [c] pwm1 = (uint32_t)adcw2 * 12024 / 100; //pwm1 = x% von adcw2 [/c] MfG Falk
man dann ja die prozente einbauen ... Greetz, /r. Hab noch was nettes: [c] void led(char value); led_out(1<<(i=++i<8?i:0)); led_out((0xff>>(0x08-adc/0x7f))&0xff); [/c] led() nimmt 8bit werte entgegen und shiftet die an pos. 8 eines 32Bit GPIOs. Was machen die funktion
-
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
24V 1ms Impuls verlängern
Hysterese – noch > besser fahren kann. Interessant. Zeig doch mal wie man sowas (vorzugsweise in C) programmiert. rhf
Fototransistor ist recht langsam und filtert gut. Aber was passiert auf der Leitung vom Optokoppler bis zum µC? Für viele Projekte hat es sich bewährt, Eingänge des µC mit 1k..10k in Reihe unmittelbar am µC-Pin zu entkoppeln. Das nimmt schonmal vielen Transienten die Energie. Es ist daher nie unsinnig, sich
-
Thread
LCD Controller für 640x480 LCD mit mega8515
Mit RS232 ja, mit FT232 nein. Ich hatte es anfangs mit UART und 9bits gemacht, nur ein PC kann einfach keine 9bits, so wie der uC. Ich habs dann auf Low Level ebene gemacht: UART Register eingelesen, geschaut ob der Puffer leer ist, dann das Parity Bit auf Mark/Space
der 2 CE-Anschlüsse des anderen Speichers: Allgemeines: [code] Functional description The AS7C1024B is a high performance CMOS 1,048,576-bit Static Random Access Memory (SRAM) device organized as 131,072 words x 8 bits. It is designed for memory applications where fast data access, low power,
-
Thread
1-Wire und UART, wie kann man mein Problem mit dem UART-Interrupt lösen?
Mikrocontroller an usw. Es läuft alles automatisch... ps schrieb im Beitrag #1824941: > Heist vor jedem bit die Interrupt abschalten und danach wieder > einschalten. > Wenn dazwischen ein interrupt aufgetreten ist wird er dann abgearbeitet. Also zwischen den einzelnen Bits des 1-Wire-Sensors? Dann würde
Da der µC auf dem 1Wire-Bus der Master ist, startet er ja stets die Übertragung und muss ihn nicht ständig überwachen. Wie ps schon geschrieben hat, kann er zwischen zwei Bits problemlos unterbrochen werden, nur
-
Thread
Atmel oder PIC Gesperrt
Peter Dannegger schrieb im Beitrag #3147233: > Wenn schon PIC, dann aber ausschließlich in C. Hihihi... deine Abneigung gegen Assembler ist inzwischen weit genug bekannt. Nun ja, offenbar besteht die Welt der 8 Bit uC genau _darin_ ständig nur 32 Bit Variablen zu addieren... X-) W.S
>Bei den PICs mit 12/14-Bit-Befehlsworten (z.B. PIC12/16) fehlt >allerdings perfiderweise der geschlossene SetBank-Befehl, die Data-Bank >ist in 2 einzeln zu manipulierenden Bits vergraben. Nö. Es gibt das BSR-Reg. >Viele
-
Thread
Midi Drumpad mit Piezo Schallwandler
your code in next line WaitMs 250 PrintBin 144;39;127 Loop [/C] Gruß Axel
Was bite ist bei mir unsauber?
-
Thread
ATmega16 mit Timer0 will nicht
Jump +00000008: 940C0047 JMP 0x00000047 Jump +0000000A: 940C0047 JMP 0x00000047 Jump +0000000C: 940C0047 JMP 0x00000047 Jump +0000000E: 940C0047 JMP 0x00000047
für Fehler. Ich müsste jetzt im Datenblatt nachsehen, aber ich denke die Vorteiler Bits vom Mega128 unterscheiden sich nicht großartig vom Mega16. Und bei dem hab ich nachgesehen: [C] TCCR0 =(1<<WGM01)|(1<<CS00)|(1<<CS02)|(1<<CS01); [/C] Aha. Vorteiler: externer Clock an T0
-
Thread
RS485 vermute Störsignale, wie entfernen
mit einer Prüfsumme geschützt sind. Die im Rahmen des Protokolls übertragenen Daten sind entweder einzelne Bits (Coil) oder 16-Bit-Werte. Was genau für ein Sensor ist das, mit dem Du da Daten auszutauschen meinst? (Typ, Datenblatt)
Dafür gibt es bei Arduino die Funktion "Serial.available()" Das könnte z.B. dann so aussehen. [c] if (Serial.available()) { Serial1.readBytes(Anemometer_buf, 8); } [/c]
-
Thread
Verständnissfrage zu ENTPRELLUNG.
möglichst unter 20ms hinzubekommen und zwar OHNE delays. Deswegen dann auch die Interrupts die den µC nicht "anhalten". Das würde dann praktisch bedeuten das wir einen Taster 4 mal innerhalb z.b. 20ms abfragen und bei einer Folge von 1 0 1 0 einen Tastvorgang registrieren. - Sind meine Überlegungen
Ist er das nicht, wird der Zähler auf 0 zurückgesetzt. Vom Prinzip her passiert da für einen einzelnen Pin folgendes (aber wie gesagt: nur vom Prinzip, die tatsächliche Implementierung ist viel trickreicher) [C] uint8_t keyState; uint8_t keyPressed; uint8_t oldState; uint8_t pinCount;
-
Thread
BASCOM: große Zahlen über alle 4 Zeilen eines 4-Zeiligen L
Was ich noch vergessen habe, ich möchte das Display im vier - Bit Modus betreiben. mfg Sepp
am folgenden Beispiel ersichtlich kommentiert ("Jürgen","Sepp"): ;ldi R24, &B00100100 ;Jürgen 4 Bit-Datenlänge, extension Bit RE=1 ldi R24, &B01000010 ;Sepp 4 Bit-Datenlänge, extension Bit RE=1 Bitte beachte, ich habe die geänderte LIB nicht getestet, sie sollte aber funktionieren. Jürgen
-
Thread
Keine ADC-Kanal Adressierung möglich ATMEGA8
. Um ADCSRA nicht zu zermanschen, mit |= ADCSRA |= (1 << ADSC); [/c] Die Technik der Veroderns und VerANDens ist beim AVR gang und gäbe. Du kannst so in C gezielt einzelne Bits löschen und setzen, im Prinzip das, was die Assemblerbefehle CBI und SBI bzw. SBR und CBR auch machen. Zum Löschen eines Bits nimmst du die Komplementärfunktion in C. [c] ADCSRA &= ~(1<<ADFR); // als Beispiel mal das Freerun Bit löschen [/c] Die Wellenlinie ~ ist die Komplementärfunktion und das &= ist dann das VerANDen
-
Thread
Taktzyklen bzw. Effizienz von geschaltelten IF-Abfragen
zusammen, ich würde gerne wissen welcher Programmcode "intellienter" ist. Es geht dabei um IF-Abfragen mit meheren Parametern. Sollte man alle Parameter in eine einzige Abfrage packen, oder lieber im Extremfall jede Abfrage mit einer einzelnen If-Zeile bearbeiten ? Weiterhin ist mir nicht klar
irgendwelchen Optimierung- schritten sehen beide exakt gleich aus. Und das gilt ziemlich sicher für alle C-Compiler. Fast alle C-Compiler werden übrigens die erste Abfrage wegoptimieren, da sie immer wahr ist.
-
Thread
Verbesserungsvorschläge gesucht
Hallo und danke für Eure Unterstützung! > Bei uC wird es gern auch so gemacht, dass du eine bestimmte Reihenfolge > einhalten mußt (z.B. bei den 16-Bit-Timern des AVR). Yepp - das wusste ich z.B. auch von der AVR-ADC-Schnittstelle und wollte etwas
Schnittstelle (äh, auch ein Grund, warum ich die Adresse nicht innerhalb eines Speicherelementes abfragen mag). Die Statistik der einzelnen Varianten (RTL-Ansicht liegt auch bei): [pre] Altera: A B C D E LE: 35 36 36 36 36 CF: 11 12 12 28 28 LR:
-
Thread
I2C im Bitbang-Mode über FT232H
ich bewußt nicht verwenden. Der FT232H steckt in einem fertigen USB-Kabel von FTDI drin (Typ C232HD-DDHSP-0), in welchem die Leitungen des in einigen Beispielen benutzten CBuses nicht herausgeführt sind. D. h. ich kann nur den DBus benutzen. Von diesem sind die einzelnen Pins über farbcodierte
während des ACK bei 1.8 V, was für ein Low definitv zu hoch ist. An der Reihenfolge, wann in den einzelnen I2C-Sequenzen welche Leitung auf High bzw. Low gesetzt wird, habe ich auch noch ein wenig rumgespielt; es kann gut sein, daß an der ein oder anderen Stelle hier softwareseitig auch noch ein Bug
-
Thread
Maximale Entfernung/Kabellänge TasterPotis zu µC
spendieren, um den Eingangsstom des Portpins zu begrenzen - auch wenn es nur der Entladestrom von C2 beim Abschalten des µC ist. Gruß Dietrich
verwenden. D.h., jeder verdrillte Adernpaar, bspw. eines CAT-5/7 Kabels, wird über einen Port des AM26C31 (Sender) /AM26C32 (Empfänger) am uC angeschlossen. Ist sehr störsicher, da RS422 eine LVD Schnittstelle ist. Ein AM26C31/32 hat vier Sender bzw. Empfänger. Damit habe ich schon Strecken bis 50m
-
Thread
Impulse zählen ohne EXTI, 20kHz 300kHz
Habe gehofft es gibt mehrkanalige Zähler-ICs mit I2C ... Habe aber bei mouser keine gefunden, nur Zähler ohne i2c --Also einen kleinen uC dafür verwenden? Attiny XY als Zähler u. per I2C abfragen?
Oder mehrkanaligen Frequenzteiler und dann per Multiplexer (über I2C steuerbar!?) die einzelnen (runtergeteilten) Signale abfragen? Die Zählereingänge müssen nicht zeitgleich abgefragt werden. Also als Schleife sähe das im uC Code so aus in meiner Vorstellung:
-
Thread
mit AVR zählen -> 7-Segmentanzeige
grössenordnung 100nF) den zähler könntest du so ungefähr machen: TUER_1 und TUER_1_STATUS als BIT definieren und auf 0 setzen TUER_1_ZAEHLER als Byte, Word oder Long definieren und auf 0 setzen do TUER_1 = pinX.Y ' Tür abfragen, 0 zu, 1 offen if TUER_1 <> TUER_
'AT90S2313-Deklarationen $crystal = 3686400 'Quarz: 3.6864 MHz Dim Tuer_1 As Bit Dim Tuer_1_status As Bit Dim Tuer_1_zaehler As Byte Dim Endwert1 As Byte 'Endwert für Zaehler Dim Endwert2 As Byte 'Endwert für Zaehler Tuer_1 = 0 Tuer_1_status = 0 Tuer_1
-
Thread
stm32 Cortex I2C : Master zieht SCL auf Masse
= I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = ClockSpeed; I2C_Init(I2C1, &I2C_InitStructure); I2C_InitStructure.I2C_OwnAddress1
mein Fall, aber ich könnte mir vorstellen, dass sich dies in Bit 15 vom CCR übersetzt, das zusammen mit Bit 14 zwischen Standard (100Khz) und Fast Mode (400KHz) differenziert. Bit 15 F/S: I2C master mode selection 0: Standard Mode I2C 1: Fast Mode I2C I2C
-
Thread
Atmega32, Poti, ADC, Poti-am LCD ausgeben
schrieb im Beitrag #4434056: > PA1 und PA0 - potis (ADC1 und ADC0) Dann stimmt das hier nicht: [c]ADMUX |= cAD_Channel;[/c] bzw. das: [c] ADC_Value_CH1 = ucGetADValue_8Bit (1); ADC_Value_CH2 = ucGetADValue_8Bit (2); // nicht sicher ob der 2er richtig ist [/c] Du fragst ADC1 und ADC2 ab, Datenblatt
AVR-GCC-Tutorial#16-Bit_Register_.28ADC.2C_ICR1.2C_OCR1x.2C_TCNT1.2C_UBRR.29 [c] uint16_t t = ADC; return (unsigned char)(t >> 2); [/c] Alternative: ADLAR = 1 setzen und dann stattdessen nur: [c]return(ADCH);[/c]
-
Thread
switch(Funktion()) möglich?
{ c = getchar (); if (c != EOF) { putchar (c); } } while (c != EOF); [/c] Hier wäre die Abfrage doppelt. Zurück zum Thema: Du fragtest oben nach Vorteilen
Elemente in einem Container (hat in diesem o.g. Beispiel allerdings keine Bedeutung). iv) ... Als C++-Programm könnte das obige Beispiel etwa so aussehen, z.B. für 7-Bit Ascii-Zeichen oder unspezifische Bytes: [c] int main(){ while(auto c = get<AsciiChar>()) { if (!put(*c)) {
-
Thread
c# Lade- Entladeprogramm für Akkus
, d.h. ich weiß wie Schleifen, Abfragen, Variablen funktionieren. C# habe ich gewählt weil dass mal Programmierstandard war und bin dabei geblieben weil ein Wechsel auf z.B. Python für mich bedeutet hätte in unterschiedlichen Sprachen
nicht wofür die hilfreich sind. Ich kann natürlich programmieren, d.h. > ich weiß wie Schleifen, Abfragen, Variablen funktionieren. C# habe ich > gewählt weil dass mal Programmierstandard war und bin dabei geblieben > weil ein Wechsel auf z.B. Python für mich bedeutet hätte in > unterschiedlichen
-
Thread
myAVR-LCD-Fragen
Read busy flag & address'. Damit wird ein Byte vom LCD gelesen, das ein Busy-Flag enthält. Bei Busy-Bit=H ist das LCD beschäftigt. Bei L kann losgelegt werden. Allerdings verzichten manche rudimentären µC-Interfaces auf die Möglichkeit des Lesens vom Display. Dann geht das nicht. Selber Schuld. MfG
während! E auf H ist, nach der H/L-Flanke ist das Display wieder im TriState... Warum gibst Du den Bits nicht ein paar sprechende Namen? PORTB |= (1<<LCD_RS) (oder was am Bit auch immer dranhängt) liest sich besser als PORTB |= (1<<PB0); Oder gegt das in C nicht (bin immernoch ASM-Programmierer
-
Thread
untersch. Kofigurationen in versch. Projekten
Oliver schrieb: > Dafür baut man ja extra einzelne Module, um die modular zusammensetzen > zu können. Naja, das kann man sehen wie man will. Ich habe auch einzelne Module und nutze nur die, die ich auch brauche. Aus meiner Sicht funktioniert das
asynchrone Countdown-Zähler, die eine SW-Zeitbasis für die Anwendung machen (LED-Blinken, DCF-Modul abfragen, Morse-Zeichen ausgeben, Bilschirmschoner aktivieren, ...). Die C-Quelle ist generisch gehalten und im Quellarchiv. Sie includet einen Header aus dem Projektverzeichnis, in dem nur festgelegt wird
-
Thread
PIC 16F1509, ADC , Error
eine Referenz von 1024 mV für den ADC wählen würde > (Auflösung 1mV) hätte ich eine Auflösung von 10 Bit auf die > Ursprungsspannung von 0 - 10 mV Du *kannst* keine 1024mV als Referenz nehmen. Zumindest nicht mit dem ursprünglich gewählten µC. Die minimale Referenzspannug ist dann 1.8V. Wenn du eine
Referenz von 1024 mV für den ADC wählen würde >> (Auflösung 1mV) hätte ich eine Auflösung von 10 Bit auf die >> Ursprungsspannung von 0 - 10 mV > > Du *kannst* keine 1024mV als Referenz nehmen. Zumindest nicht mit dem > ursprünglich gewählten µC. Die minimale Referenzspannug ist dann 1.8V.