-
Thread
C8051F020Dk Port4-7 aktivieren bzw. freischalten (SFR)?
bastelt, dann kann man die doch auch alle gleich behandel. "rrrrr" ;-) Auszug von SiLabs.com: [c] entity C8051F020 is generic(PHYSICAL_PIN_MAP: string := "TQFP_100"); port( P0_0 : INOUT BIT; ... P4_0 : INOUT BIT; P5_0 : INOUT BIT; ...analog bis P7 P0_1 : INOUT BIT; ...
. Read = 00b, Write = don’t care.R/WR/WRRR/WR/WR/WR/WReset ValueIE7IE6--IE7CFIE6CF--00000000Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SFR Address:0xAD C8051F020/1/2/3 178 Rev. 1.4 Port Data register will cause the Port pin to be driven to GND, and a logic 1 will cause the Port pin to assume a high-impedance
-
Thread
Hunderte Messungen mit ADC: Eigenen ADC oder integrierten ADC im µC?
nicht ausreichend ist. -Bei externen Wandlern kommen zu den Umschaltverzögerungen auch noch Abfragen nach: "Are you ready" hinzu. -Darüberhinaus wollen die Daten auch noch in die CPU geschaufelt werden. Meist seriell, aber für beliebig viele I²C Schnittstellen reicht's auch nicht. Also ein Eigenbauprotokoll
getrennte ADC Peripherien hat. Wenn nicht, kannst du auch immer nur auf einem Kanal messen. Den uC würde ich an deiner Stelle nach der externen Beschaltung auswählen. Wenn du noch funken willst, dann kann es bei so einer 70er 8Bit Krücke schnell an Rechenleistung fehlen. Dann solltest du auch über
-
Artikel
Word Clock Variante 1 - Software
uart.c, uart.h USER Verantwortlich für die Interaktion mit dem Benutzer, z.B. dem Anlernen der IR Befehle user.c, user.h, usermodes.c WCEEPROM Funktionen, die das persistente Ablegen und Abfragen von Informationen im bzw. aus dem EEPROM ermöglichen wceeprom.c, wceeprom.h Im Folgenden soll nun die genaue Funktionsweise der einzelnen Module näher erläutert werden: DCF77. Zur Programmierung siehe den Artikel DCF77-Funkwecker mit AVR. Im Abschnitt Programmierung
-
Thread
Takt sieht schlimm aus - FPGA-Eingang optimieren?
MHz Abtastfrequenz, damit es einfacher wird. Der Eingangsport kommt auf ein Schieberegister mit 16 Bits. Da die Zielfrequenz 2 MHz sein soll, gibt es 4 Bits je Halbtaktphase. Man addiert folglich die Bits 1,2,3,4,9,10,11,12 und zieht die anderen 8 der lo-Phase ab. Das entspicht der Multiplikation mit
Jürgen Schuhmacher schrieb im Beitrag #3206884: > Was macht denn dann der Konstrukt mit der Abfrage nach der 15? > > Tja, das wäre dann schon ein potentielles Problem Deiner Version der > Schaltung. 15? Ich glaube du hast auf [c] if (rslt>15'sd3) sro[0]=1; [/c] geschaut
-
Thread
MSP430 parallele Impulszählung mehrere Ports
also alle 8 Leitungen abgerufen. Wenn also an Port 1 ein Impuls eintrifft, wird er aufgerufen. Die einzelnen Pins müßte ich dann in der Interruptroutine abfragen. Dann zähle ich aber mitunter Signale doppelt, da ich nicht weiß welcher Port den Interrupt ausgelöst hat. Hat jemand eine Lösung?
> 8 Leitungen abgerufen. Wenn also an Port 1 ein Impuls eintrifft, wird er > aufgerufen. Die einzelnen Pins müßte ich dann in der Interruptroutine > abfragen. Dann zähle ich aber mitunter Signale doppelt, da ich nicht > weiß welcher Port den Interrupt ausgelöst hat. > Hat jemand eine Lösung?
-
Thread
Nullstellenunterdrückung bei 7 Segment
define _1 _B+_C #define _2 _A+_B+ _D+_E+ _G #define _3 _A+_B+_C+_D+ _G #define _4 _B+_C+ _F+_G #define _5 _A+ _C+_D+ _F+_G #define _6 _A+ _C+_D+_E+_F+_G #define
länger ist, braucht einen Timer, der parallel zur CPU dann das Zählen übernimmt. Denn: weährend der µC im Wait hängt, macht er in seinem eigentlichen Programm nichts anderes mehr. Insbesondere kann er dann keine Tasten abfragen. Das ich einen Wait benutzt habe, ist dem Umstand geschuldet, dass ich
-
Thread
8bit-Computing mit FPGA
Assemblersyntax schon als Hochsprache bezeichnest, wie sieht bei Dir dann eine maschinennahe Sprache aus? Bits? Sind Deine Bits eigentlich trinär oder quaternär? > sondern es reichen einfache Unterprogramme, bei welchen > alle Übergabe-Parameter gleichberechtigt sind. Oder aber auch in C: [c] for
C-3PO schrieb im Beitrag #4281093: > oder ist das perfekt isoliert von allem ? http://www.mikrocontroller.net/articles/8bit-Computer:_bo8h
-
Thread
AVR: Zustand eines Tasters einlesen nicht möglich
Hallo... Ich habe folgendes Problem: Ich möchte mit einem Atmega8 den Zustand eines Bits einlesen. Dafür hab ich den Code [c]DDRB&=~(1<<PB1); PORTB|=(1<<PB1); DDRB|=(1<<PB0);[/c] verwendet, um die Datenrichtung zu bestimmen und die Pull-Up-Widerstände zu aktivieren, dann [c]if(PINB
geht um die beiden if. Das zweite if fragt genau die gegenteilige Situation vom ersten if ab. Ein einzelnes Bit kann aber nur 0 oder 1 sein. Es gibt keine 3. Möglichkeit. D.h. du weißt aus dem Ausgang der ersten Abfrage bereits, wie die zweite Abfrage ausgehen MUSS! Es gibt keine andere Möglichkeit. Und
-
Thread
Neue Reflow Steuerung zum Stöbern Meckern oder Bauen
\ratcos-code\firmware\trunk\ratcos.X\app\ratcos.c:14:*Error* [1027] unable to locate 'stdbool.h' "C:\Programme\Microchip\mplabc18\v3.47\bin\mcc18.exe" -p18F2550 -ms -oa- -I "C:\Programme\Microchip\mplabc18\v3.47\bin"\\..\\h -fo build/default/production
of MPLAB C18, please contact your local distributor or visit buy.microchip.com. WARNING: This version of MPLAB C18 does not support procedural abstraction. Procedural abstraction will not be run. "C:\Programme
-
Thread
Datentyp Formatierung
irgendwelcher Mist der dem Filestream entnommen wird. Ich habe nun folgendes geändert und schick dem Pi 32 Bit: fwrite(&c, sizeof(uint32_t), 1, f); ...unverändert stürzt es ab.
read(uart0_filestream, &rx_header_buffer, sizeof(int)); aber 32 Bit einlesen möchte, meint Karl Heinz Buchegger das dies zum Absturzt führt. Nun sende ich aber 32 Bit, können ja auch mehr sein, mit: fwrite(&c, sizeof(uint32_t), 1, f); Trotzdem stürzt das Programm
-
Thread
AVR I2C/TWI: wie sag ich als Slave dass ich busy bin?
Hallo zusammen, ich hab grad ein kleines Verständnisproblem beim i2c-slave am AVR: ich hab einen kleinen Adapter gebaut, der mit einem ATmega328P ein LCD-Display ansteuert, und diverse Kommandos und Daten per i2c empfängt. Sobald ich per i2c ein Kommando kriege,
writing the TWEA bit to one again.
-
Thread
Frage zum "Einsynchronisieren" und "RESET"
Jochen schrieb im Beitrag #3158615: > Cyclone III C6 ... StratixV Da passt natürlich ein Xilinx Whitepaper wie die Faust aufs legendäre Auge... ;-) > Ich werde auf jeden Fall "alle" Signale einsynchronisieren Es hat keinen Sinn, z.B. 32 Bits eines
das Steuersignal abtasten und abhängig von diesem einzigen einsynchronisiserten Signal dann die 32 Bits Daten einlesen.
-
Thread
LED mit Microcontroller schalten
Du hast ja schon mal den ganzen Port C auf Ausgang gestellt. Das ist schon mal gut. PortC ist aber nicht nur ein Bit sondern ein ganzes Byte. Du sagst jetzt ja mit PORTC =1 das gleiche wie PORTC = b00000001.
Stefan H. schrieb im Beitrag #3157250: > @Timmo H. : Wie meinst du das mit 8 LEDs an PortC? Mein PIC16F688 hat > nur 6 I/O beim Port C, die anderen 2 bits sind laut Datenblatt nicht > implementiert. Auch recht. > muss ich gerade das Bit weiterschieben: PORTC = 0b00000010 ? Wäre das
-
Thread
Facharbeit: Eigenbau eines MidiControllers
> Wo fange ich am besten nun an? Wenns ein µC sein soll: INdem du einen µC auf einem Steckbrett zum laufen bringst und erst mal eine LED blinken lassen kannst. Auch wer eine Mondrakete bauen will, muss erst mal lernen, wie man einen rechten
... (Die gab's nicht einzeln)
-
Thread
ATmega16: ADC-Multiplexing geht nicht
AdcVoltage(2); } else if(x ==3) { val= AdcVoltage(3); } return val; } [/c] Warum vorher noch abfragen? Besser: [c] uint16_t val = ADCVoltage(x); [/c] Oder nicht? Ingo
Hallo [c] #include <avr/io.h> #include <avr/sfr_defs.h> loop_until_bit_is_clear(ADCSRA, ADSC); [/c]
-
Thread
Assembler lernen für Mikrocontroller-Programmierung
Hallo zusammen, bei der Assemblerprogrammierung lernt man ja jedes Bit des µC einzeln kennen. Habe das im Screnshot zu sehende Programm zum Festellen des Systemtaktes benutzt. Das Oszi zeigt eine Frequenz von 14,660kHz an PB4 ( Pin3 ), an. Dies mal 8 ergibt -> 117,280kHz
-128 bis 127 -> V gesetzt $C2-$FF = -62 - -1 = -61 liegt im Bereich -128 bis 127 -> V nicht gesetzt Das gilt dann auch für 16-bit, 32-bit etc. arithmetik.
-
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
Projekt : viele kleine zu einem groß Projekt, brauche Infos
um das so umzusetzen dann wohl eher die variante in > einer schleife immer wieder die slaves abfragen. Warum nennst du die dann cs Leitung? Sowas wie Interrupt Request wäre angebracht. Das ist nichts was etwas mit I2C zu tun hat sondern nur eine extra Leitung über die der Slave halt einen Interrupt
abfrageleitung" einplanen um pins zu sparen. naja halt per ISR > sobald daten zum abholen da sind sofort abfragen und dann weiter im > code. Hast du dir schon Gedanken über die Datenmenge gemacht die du hin und her schieben möchtest/musst? I2C ist nicht sooo schnell.
-
Thread
Mehrere Eingänge
praktisch immer eine Timer-Sache. [[FAQ#Timer]] Aber um bei deinem Programm zu bleiben [C]ISR(INT0_vect) { cli(); /* Interrupt Code */ // EIN/AUS variable if ( PINC & (1<<PINC0) ) ... [/C] frag halt nicht jeden Pin einzeln ab [C] ISR(INT0_vect) {
]] Tu dir selbst einen Gefallen und stell dein 'Projekt' erst mal zurück. Experimentiere mit Bit setzen Bit löschen Bit abfragen (sowohl auf 1 als auch auf 0) Das sind die Grundbausteine eines µC-Programms. Sozusagen das kleine Einmal Eins. Solange diese 4 Dinge nicht 100% sicher sitzen
-
Thread
Zahl überprüfen
Die relevanten Bits sich raussuchen und überprüfen?
löst Dein Problem. Du musst die "134" erst als string vorliegen haben und kannst dann mit strchr einzelne Zeichen abfragen. Grüsse, R.
-
Thread
AT90USB162 USB CDC Kommunikationsablauf
usb_init_device(); USB_State |= USB_Connected_bm; Usb_enable_EORST_IRQ(); } } [/c] Stimmt die Kommunikation des Bulk-Transfers? [c] uint16_t usb_read_OUT_data(unsigned char *pBuffer, unsigned int bLength) { U8 buffer_byte_counter = 0; U16 read_counter = 0; Ack_RXOUT_IRQ
Frameanalyse. Die Enumeration läuft und das OS erkennt erfolgreich ein CDC - Device. Windows 7 64Bit: COM-Port Ubuntu 12 32Bit: dev/ttyACM0 CDC - Device Die Einstellung von Baudrate, Stop-/Datenbits durch das OS funktioniert auch. Ich habe jetzt den AVR im Debug-Modus (JTAG ICE debugWire).
-
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
Linvor Bluetooth Modul antwortet Atmega8 nicht wie erwartet
habe ich 4 grüne für die 4 hohen Bits an Port C und 4 rote für die 4 niedrigen Bits an Port B angschlossen. Wenn ich den Chip nun starte, blinken gemäß Intention zuerst 1 mal alle 8 LEDs. Danach wird (nicht gemäß Intention) die Schleife
einfaches Steuerzeichen signalisiert das Ende der Zeichenfolge for (z=0;z<i;z++){ PORTB = cWord[z]; // Die vier niedrigen Bits auf den ersten 4 Ausgängen von Port B ausgeben PORTC = (cWord[z]>>4); // Die vier hohen Bits auf den ersten 4 Ausgängen von Port C ausgeben long_delay
-
Thread
Telekom schafft die Flatrates ab
nicht das oberste Ziel der Telekom sein. @Harald http://www.chip.de/downloads/NetSpeedMonitor-64-Bit_42115169.html z.B. Da sollte es schon ein paar kostenlose Tools geben.
Auf "Heise" gab es einen netten Beitrag betreffend Telekom-Werbung: 384kBit/s Downstream *Plus 75GByte HIGHSPEED inklusive* ;-)
-
Thread
Xmega mit USB on board
size -= copy_nb; if (size) { goto udi_cdc_write_buf_loop_wait; } return 0; } [/c]
#define CONFIG_USBCLK_SOURCE USBCLK_SRC_RCOSC #define CONFIG_OSC_RC32_CAL 48000000UL [/C]
-
Thread
Lightweight WS2811/WS2812 Library
> sorry das verstehe ich grad noch nicht, ich meinte wie setze ich die > Farben, Helligkeiten einzelner LEDs im Array bevor set_leds aufrufe? Wie man halt Arrays in Ansi-C beschreibt: [c] struct cRGB led[16]; // array mit 16 leds reservieren led[0].r=255;led[0].g=00;led[0].b=0;
machen soll. Es gibt eine äußere und innere Schleife. Die äußere Schleife läuft von 8 bis 0 um die einzelnen Bit des Bytes zu ermitteln. Die innere Schliefe ermittelt den Wert des einzelnen Bits um entsprechend die Dauer der Ansteuerung des logischen Pins zu realisieren. Die äußere Schleife ist die „i“
-
Thread
TWSR – TWI Status Register Codes
Hallo, ich habe eine Frage zum TWSR. Die ersten 5 bits speichern ja ein Statuscode. Diesen möchte ich nun abfragen, nur leider findet sich nirgendswo eine Beschreibung der Statuscodes. Welches Bitmuster bedeutet was? Ich wollte nämlich eine Fehlerabfrage
du im Datenblatt für den entsprechenden Modus findest, sind die die du dort auch brauchst. Die einzelnen Bits (TWS7..TWS3) werden vom entsprechenden Hardwaremodul gesetzt und da gibts nun mal nur bestimmte Kombinationen die auftreten können - und nicht 32 verschiedene Möglichkeiten. Sascha
-
Thread
Atmel ZigBit (ATZB-24-A2/B0) und XBee
Firmware möglich wäre, was ich nicht weiss). Dein Aufbau wird also immer sein: Sensor <--> µC <------------> Funk (ZigBee, WLAN) SPI SPI, UART, etc µC und Funk gibt es kombiniert als fertige Module evtl. mit frei programmierbaren µC (ZigBit??? bitt prüfen, ich habe das Datenblatt
>Das ATmega128RFA1 klingt zwar auch gut, da müsste ich aber in jedem Fall >mit dem uC arbeiten. ... ATmega128RFA1 und ZigBit sind bei Licht betrachtet das gleiche, sie unterscheiden sich nur im Gehaeuse und in den technischen Parametern, du hast in beiden Faellen einen AVR-Controller
-
Thread
Real Time Sortieren im FPGA
Hallo, ich möchte 64 Bit Datensätze, die je einen 32 Bit Zeitstempel enthalten parallel aus ca. 60 FIFOs lesen und nach Zeitstempel sortiert in einem Ausgangs-FIFO ablegen. Das ganze sollte mit mindestens 20 Millionen Datensätzen
voll, daher ist eine Vorsortierung schon sinnvoll. Ist aber auch nur ein Vergleicher: "Obere 32 Bit > Untere 32 Bit" then "vertauscht latchen" else "unvertauscht latchen". Den gfs getauschten Wert wieder in eine 64 Bit pipe, die später mit 2x32Bit ausgelesen wird. Dann stimmt die Reihenfolge. Auf
-
Thread
AVR-Assembler - gleichzeitig I/O am PortB
erfolgreich etc. pp. NUR ... Folgendes ist mein Problem: Beim 8051 konnte ich die I/O Ports direkt abfragen/beschreiben, das ging fix und ohne viel Aufwand. Bei den AVR's (aktuell habe ich ein paar 2313 hier) muss nun gesagt werden, wer Eingang/Ausgang ist, dann wird das Bit geschrieben bzw. kann abgefragt
Wenn man einfach so Beispiele kopieren kann (davon kann es gar nicht genug geben) die für genau den µC geschrieben sind und mit denen rum probieren kann, sie ändern kann, dann hilft das oft (mir z.B.) ungemein weiter. Außerdem, du musst gar keinen Fragen! Und jeder kann doch selbst entscheiden, ob
-
Thread
Attiny als schieberegister
im zweiten Takt je nach Wert des zweiten Bit etc: [c]Tosnes = !(keys & (1 << N));[/c] Sorry, müsstest du halt von C nach BASIC übersetzen. Da die variable Schiebeoperation auf dem AVR auch nicht gerade das Gelbe vom Ei ist, besser: [c
. Es gibt nur noch einzelne Bits. Zugegeben, das Beispiel in meinem letzten Post war etwas sehr knapp. Hoffe, jetzt wird es etwas klarer.
-
Thread
Ein VB6-Programm dekodiert das DCF77-Signal. Das kommt von einem Mikrocontroller/avrasm über COM1 Gesperrt
Zusammenhang nicht entsprechen. Wie gesagt, der Ursprung war eine reine Hardwarelösung, nur mit PC und ohne µC. >Kleine Anmerkung, soll kein meckern sein, den die Projekt-Idee ist gut! >Versuch mal bitte nicht jedes einzelne Verzeichnis zu komprimieren... >hat jetzt 'ne Weile gedauert, bis ich alles entpackt
wenn ein DCF-Modul direkt an die CTS-Leitung angeschlossen wird, also die Variante ohne weiteren µC. Der COM-Port registriert die einzelnen Pegeländerungen, misst die Zeiten und errechnet die DCF-Zeit durch VBA. Ich vermute, das Steuerelement "mscomm" reagiert auf eine CTS-Zustandsänderung (wie
-
Thread
Hilfe bei Fehlersuche
. . . break; } } } [/c]
B-Eingängen. Es braucht nur ein weiterer Eingang nicht auf High liegen und dein Taster2 bleibt in der Abfrage unerfasst. Du solltest die einzelnen Bits isolieren um sicherzustellen, dass ein bestimmtes Bit eine bestimmte Reaktion auslöst.
-
Thread
Com Port Zugriff unter Windows 7 64 bit mit C++
weiß nicht genau, warum (vor allem C/C++ Programmierer?) immer das rad neu erfinden müssen gibts bei "euch" keine fertigen libraries ...
zitat: C:\>javac ListPorts.java C:\>java ListPorts Serial port: COM7 Serial port: COM10 Serial port: COM3 Parallel port: LPT1 Parallel port: LPT2 ist das jetzt die C platte von einem solaris oder linux
-
Thread
DDS mit DE0-Nano Board nur niedrige Frequenzen?
! Bit 19 ist in der Tat für die Unterscheidung, von welcher Seite die Tabelle gelesen werden soll und Bit20 ist das eigentliche Vorzeichen-Bit! Ich kann aber mit meiner Tabelle nur Frequenzen generieren
Beschreibungen zwischen die Token [ vhdl] und [ /vhdl] (ohne Leerzeichen, so wie im Screenshot mit den C-Quelltexten). Dann funktioniert das auch mit dem Syntax-Highlighting... Atmega-Verleger schrieb im Beitrag #3110977: > oder ich takte den Prozess zum Abfragen von QUADRANT gar nicht > und packe
-
Thread
Temperaturanzeige mit PIC16f872 und LCD display problem
viel aufwändiger, als es gleich richtig zu machen, ohne Hardware, ohne Interrupt, mit nur einer Abfrage pro main while Schleifendurchlauf. [c] uint8_t taste,gedrueckt; while(1) // deine Programm-Hauptschleife { taste=PINB&1; gedrueckt=taste&~gedrueckt; if(gedrueckt) { taster
Arrayinhalt ist veränderbar. Der Arrayinhalt wird mit "0000.0" iniitialisiert aber danach kannst du die einzelnen Zeichen ändern soviel du lustig bist. ---> C-Buch besorgen! >> Was ist mit dem hierunsigned char txt[3]; >> >> berücksichtigtshorttoStr(ad, txt); // Umwandeln >> dass ad nur
-
Thread
VB Serial Port Datenempfang nicht komplett
BaudRate = 9600 ' SerialPort1.Parity = IO.Ports.Parity.None ' SerialPort1.DataBits = 8 ' SerialPort1.StopBits = IO.Ports.StopBits.One ' SerialPort1.Handshake = IO.Ports.Handshake.None ' SerialPort1.RtsEnable = True SerialPort1.Open()
SerialPort1.BaudRate = 9600 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.DataBits = 8 SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.Handshake = IO.Ports.Handshake.None SerialPort1.RtsEnable = False SerialPort1.DtrEnable = False
-
Thread
ADC zu PWM, LED dimmen, Neuling!
8-bit Timer/Counter2 with PWM and Asynchronous Operation Du brauchst also Timer2. Dann brauchst du noch das Counter-Register zum Timer2, namentlich TCNT2 und das Vergleichs-Register OCR2. Immer wenn sie
>atmega8b.c >ADCSRA=0b11000101; Kleiner Tipp nebenbei, die Bitschreibweise ADCSRA=(1<<BITa)|(1<<BITb)|(1<<Bitxyz); liest sich deutlich einfacher.
-
Thread
Windows 8 oder doch lieber Windows 7
www.deskmodder.de/wiki/index.php/Windows_8_Themes_installieren#Aero_Glass_Transparenz_unter_Windows_8_aktivieren.2C_einstellen
geschaffene Technik nicht mehr begreifen wird: http://de.wikipedia.org/wiki/Technologische_Singularit%C3%A4t
-
Thread
Entprellung Ziffern-Tastenfeld
> der Hersteller der uC? Kenn ich ehrlich gesagt gar nicht... wo finde ich diese Notes? > Natürlich kannst du, wenn es unbedingt sein muss, auch 14 Pins und > Abfrage nach Dannegger verwenden, einfach 2 bytes verwenden
" - so dass key_press_C null bleibt, wenn sich ein anderer Pin ändert. Wenn ich get_key_press() verwende (hatte ich anfangs), müsste ich die Funktion mit entsprechender Maske pro Taste einzeln aufrufen, oder? Ich fand das
-
Thread
Mega8 Assembler RGB Fader
; gedrückt worden wäre, wäre ein entsprechendes ; Bit in key_press gesetzt gewesen sbrc temp1, 1 ; <------- Du musst Bit0 abfragen!!! dec ocr_r rjmp main [/avrasm] Fällt dir was auf? Gruß Steffen
Danke für deine Antwort! So ganz verstehe ich aber nicht, worauf du hinaus willst. Das Bit das ich auswerte, hängt ja vom Taster ab, welchen ich abfragen will. Da ich an Pin0-3 Taster angeschlossen habe, ist es also theoretisch egal, welches der 4 Bits ich abfrage, ich muss nur den zugehörigen
-
Thread
LCD zu langsam
Zehntel-Promille-Bereich. Man kann wunderbar damit arbeiten, dass wir Menschen aus Sicht eines µC extrem langsam sind und für alles (auch für das Lesen einer Anzeige) lange brauchen. Es ist daher gar nicht notwendig JEDE einzelne schnelle Änderung auf einer Anzeige anzuzeigen.
immer ausgeführt wird egal was sonst gerade so läuft. lass die ISR mal mit 50 .. 100µs laufen Abfrage noch ein bisschen opt. ... [c] uint8_t newPORTC = PINC; uint8_t change = (newPORTC ^ lastPORTC) & 0x2A; if (change==0) return; //Eingänge unverändert if (change & 0x02) { if (newPORTC
-
Thread
Lüftersteuerung mit C
OCR0 = i; > > } > if(i<=255) > { > OCR0 = i; > > } > } [/c] da steht nicht mehr als " [c] OCR0 = i" [/c] Versuch erst mal den Quellcode zu verstehen, den dir dein Lehrer gegeben hat. Dann bekommst du es vielleicht auch hin.
Offenbar 'dead Code' [C] while(bit_is_clear(PIND,0)){_delay_ms(1000);} while(bit_is_clear(PIND,1)){_delay_ms(1000);} while(bit_is_clear(PIND,2)){_delay_ms(1000);} [/c]
-
Thread
Maxim DG508A
Schön, aber ich kann die Adressen der Sensoren nicht abfragen und drum auch nicht einzeln ansprechen. Also muss ich die einfach nacheinander auf einen Ausgang schalten. Das sollte mit dem Analogschalter gehen. Was also tun mit V- ?
> Schön, aber ich kann die Adressen der Sensoren nicht abfragen und drum > auch nicht einzeln ansprechen. Wie wäre es, wenn du, nachdem du dessen Typennummer kennst, auch mal dessen Datenblatt lesen würdest ? SEARCH ROM.
-
Thread
PWM - Breite von 0
Stimmt schon, im Header-File wird das einzelne Bit definiert, in welchem Register es liegt und welche Bit-Nr. es ist. Keil geht hier einen Sonderweg und hat neue Elemente in die Sprache C aufgenommen, die *nicht* dem C-Standard entsprechen. Das
eines EPROM. Ich kaufte zuvor auf der Hobby-Tronic in Dortmund bei einem Händler gebrauchte EPROM 27C128. Meine Aufbauten: TTL-Gräber. Dann ging es los, byteweise Eingabe von Hand, 8 Tasten für die 8 bits. Also, es wurde jedes Bit einzeln eingegeben, zur Sichtkontrolle je eine LED an jeder Taste, und
-
Thread
24 bit signed in einer 32bit variablen?
MLSB << 8) + LSB; So, jetzt stehen die Bytes an der richtigen Stelle in temp. Dann musst du abfragen ob die Zahl negativ ist. Das Vorzeichen steht in MSB D7. Wenn 1 dann musst du die oberen 8 Bits von temp alle auf 1 setzen. Wenn Null machst du gar nichts. if(MSB & 0x80) temp |= 0xFF000000;
Wenn man nicht wissen will, wo das sign-Bit auf dem Ziel hin muss, überlässt man das einfach dem Compiler: [c] if(signed) { val = val * (-1); } [/c] ...oder habe ich da jetzt was verpasst? [edit] /signed/ muss natürlich durch
-
Thread
Debounce und Filter per PChg-Isr
In der Pchg_isr werden alle Pegelwechsel innerhalb einer Timerperiode gesammelt und das jeweilige Bit in "Changed_pins_sum" gesetzt. Eine 1 bedeutet hierbei, dass sich dieses Bit verändert hat, nicht jedoch, dass sein Pegel 1 ist...! In der Timer_Isr wird der letze PINB-Status nach "Deb_pinb" transferiert, wobei das Byte in "Changed_pins_sum" die Maske liefert, für jene Bits (die gekippten) die beim Übertrag nach "Deb_pinb" ausgelassen werden. Kurz: 'Wd_isr' ist eine Transferroutine von Byte A nach Byte C, wobei das Bitmuster im Masken-Byte B (hier das "Changed_pins_sum
-
Thread
Hilfe bei ATmega32 Programmierung
Hier: [c] #include <avr/io.h> #include <inttypes.h> #include <stdio.h> int main(void) { // Port D initialization // Function: Bit7=Out Bit6=Out Bit5=Out Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out
Sebastian Kappel schrieb im Beitrag #3075549: [c] if ((PIND && (1<<PD2)) || (PIND && (1<<PD3)) || (PIND && (1<<PD4))) [/c] Willst du hier die Bits PD2 bis PD4 von PINB abfragen? Dann muss das so aussehen: [c] if ((PIND & (1<<PD2)) || (PIND
-
Thread
Datenübertragung (SPI) ich kapiere es einfach nicht
ok also "prizipiell" wie beim onewire. aus writebyte() wird dann der string in einzelne bits zerlegt und einzenld "geschoben". und wie/woher erfährt der master ob der slave 8 oder 100 bit übertragen soll, oder ob es denn nur 1 oder 10 verschiedene variablen sind?
master dem slave "gibt mir den inhalt der variable xyz" der slave sagt dem master "das sind x bits" und schreib die daten ins spi register der master sendet die "leeren" bits zum slave der slave antwortet dem master mit den "vollen" bits der master beendet die abfrage. kann ich mir das
-
Thread
PIC16F627 Problem beim lesen von Eingängen mit Velleman k8048
4, 8 und verwenden ? Naja, weil deine Taster am Parallelport PORTA dranhängen. Und weil jede einzelne Leitung (Bit) eben die entsprechende Wertigkeit hat. Evtl. wird das klaren, wenn du die binäre Schreibweise nutzt mit "0b" Prefix (die allerdings nicht alle Compiler verstehen): // Bit 76543210
sollte es auch gehen Und eigentlich kannste die Prüfung auf den "Sollwert" auch weglassen, weil C ja die if Abfrage auswertet nach "true" oder "false", und somit kannst kürzer schreiben if ((PORTA & 0b00001000) // prüfe ob dieses Bit gesetzt ist Gruss