data byte in Read Instructions Read Program Memory, High byte $28 adr MSB adr LSB high data byte out Read Program Memory, Low byte $20 adr MSB adr LSB low data byte out Read EEPROM Memory $A0 0000 00aa (2) aaaa aaaa (2) data byte out Read Lock bits $58 $00 $00 data byte
SUB yPAGEFLIP (pageNum AS INTEGER) DIM adr AS STRING adr = LEFT$(MKL$(CLNG(pageNum) * 16000), 2) DO: LOOP WHILE (INP(&H3DA) AND 1) OUT crtcINDEX2, crtcStartAddressHigh OUT crtcDATA2, ASC(RIGHT$(adr, 1)) OUT crtcINDEX2, crtcStartAddressLow OUT crtcDATA2, ASC(LEFT$(adr, 1)) DO: LOOP UNTIL (INP(&H3DA) AND 8) END SUB SUB yPAGEWORK (pageNum AS INTEGER) yPageSeg = &HA000 + pageNum * 1000 END SUB FUNCTION yPOINT% (x AS INTEGER, y AS INTEGER) OUT gcINDEX
PORTB #define SDA_PIN 0 #define SDA_PORT PORTB // define I2C bus options #define I2C_TIMEOUT 1000 // after 1s, if slave is not answering, I2C functions will time out #define I2C_FASTMODE 1 // I2C bus frequency is now 400kHz //INCLUDE //include libraries
Channel_init(void) { if (!Channel_device_exist) return; // Port A as output i2c_start(MCP23017_ADR + I2C_WRITE); ... Allerdings folgt darauf bereits ein NACK. Das IC antwortet also nicht auf seine Initialisierung. > Ich habe Dir mal ein paar Codeschnipsel von mir angehangen. Ich arbeite
ldi handelt es sich um ein Macro welches einen 16 Bit wert in ein Index Register lädt. zb. _ldi z,1000 kannst du mit den Befehlen ldi zh,high(1000) und ldi zl, low(1000) ersetzen. Dann kennt es Dein Assembler auch ohne Macro. Klar kannst Du jeden Port nehmen um dein LCD anzusteuern. Aber nebenbei: die
. Ich habe z.B. folgende Macros aus alten .asm Files ausgegraben: [code] .macro SetRamBit ; RamAdr, BitPos .macro SkipIfRamBitSet ; RamAdr, BitPos .macro IncRamAdr ; RamAdr .macro CmpRamAdr ; RamAdr, FixValue etc. [/code] Und ich habe heute noch keinen Problem zu verstehen, was diese Macros
Nach gefühlt 1000 sinnlosen Beiträgen erlaube ich mir, mich noch mal selbst mit der immer noch unbeantworteten Frage zu zitieren: Das einzige (sofern ich nichts übersehen habe) Zitat aus Nicht-Forumskreisen war
bei > Auslegung von Schraubenverbindungen, wo man nach der VDI2230 rechnet > oder Druckkessel nach ADR-Richtlinien auslegt!!! Im Energiewirtschaftsgesetz wird "Stand der Technik" und auch VDE genannt. Wenn man keine Ahnung hat und noch nicht Mal ein Gesetz lesen kann, sollte man besser die Griffel
InitUART(); unsigned char write_addr0[2] ={0xd0,0x00}; while(1) { _delay_ms(1000); TWI_Start_Transceiver_With_Data(write_addr0 , 2); _delay_ms(1000); SendUART("b"); } } [/c] Und in der TWI-Master.h: [c] void TWI_Master_Initialise( void );
condition. (0<<TWWC); // break; case TWI_MTX_ADR_NACK: // SLA+W has been transmitted and NACK received case TWI_MRX_ADR_NACK: // SLA+R has been transmitted and NACK received case TWI_MTX_DATA_NACK: // Data byte has been
or slave receive mode, data that has been received may be read from this register.*/ __IO uint32_t ADR0; /*!< (@ 0x00C) I2C Slave Address Register 0. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines
200 Ports zu kommen. Deswegen habe ich jetzt nach Bauteilen mit mehr Ports wie z.B den PCA9698 (3bit Adr / 40bit I/O) gesucht. Zu meiner eigentlichen Frage: Als Anhang habe ich eine sehr rudimentäres Bild (bitte um Verzeihung...) wie ich mir die Beschaltung vorgestellt hätte. Wenn ich pin 4 auf High
einzigen Chip hineinbekommen. Technisch ist das überhaupt kein Problem. Es gibt FPGAs mit 600 oder 1000 Pins, damit kannst Du sehr viel größere Kabelbäume testen. Dann brauchst Du nicht mal mehr einen Microcontroller. Du steckst einen "guten" Kabelbaum an, drückst auf eine "Lernen"-Taste, klemmst nacheinander
Energiezähler). Mit dem Standard String Control Offset von 101 wären also Fronius String Control Adres- sen ab 139 (entspricht Modbus ID 240) nicht möglich. Daher kann der String Control Offset über die Website des Fronius Datamanager verän- dert werden, wenn weniger als 100 Wechselrichter zum Einsatz
Rückgabewert haben und dieser Wert vom Typ Real ist. Beispiel für eine Funktion, die ihr Argument mit 1000 multipliziert: real a0 a0=2.0 print fn_sen(a0) stop function sen(yz) real yz return yz*1000.0 fnend end Anmerkung: Wird innerhalb einer Funktion ein Integer-Wert als Rückgabewert angegeben, so erfolgt
zentrale Rollen einnimmt. Dokumentation gibts nur in irgendeinem Blog, Forum oder Reddit, was unter 1000 anderen "diese Software ist so toll"-Blogbeiträgen untergeht und deswegen kaum auffindbar ist. Und zwar quer durch alle Betriebssysteme und Software, egal ob Arduino, Blogframework, Desktopsoftware,
Anwendungen die man unter den Desktop-Betriebssystemen vergeblich sucht (z.B. "LawDroid" und "Gefahrgut ADR Pro"). Android ist also eine gute Ergänzung für die Desktop-Betriebssysteme.
capacitance L =330µH C 10 47 0.6 · C µF CC SPS VCC,L330µ ST V CCtput capacitance LSPS000µH C VCC,L1000µ 68 100 0.6 · ST µF 2) C VCCequivalent series resistance LSPS30µH RESR,CVCC,L330µ.2 0.5 0.8 Ω C VCCequivalent series resistance 2)PS000µH RESR,CVCC, L1000µ 1.25 1.5 Ω Ceramic capacitance V to ground
TotalHarmonicDistortionPlusNoisevs.Amplitude Figure22.SupplyCurrentI vsSSrequency Rev. C | Page 13 of 20 AD5290 Data Sheet 1000 A ( D I T N R R 100 U C L P P VDD /SS = ±16.5V S 3 - 4 7 6 10 0 7 0 0 1 2 3 4 5 DIGITAL INPUT VOLTAGE V IH(V) Figure23.SupplyCurrentvs.DigitalInputVoltage Figure25.LargeSignalSettlingTime,Code=0x00to0xFF
einem richtigen, nicht ein USB-Modul aus China) auf die Stringadresse triggern und die gespeicherten 1000 zuvor ausgeführten Befehle zu untersuchen. Habe ich vor Jahren genacht, also Trigger auf Datenadresse und vorher ausgeführtes Programm aufzeichnen. Georg
Lade den aktuellen Wert des Stackpointers + 0x44 in das Register R0 ROM:0026A730 ADR R1, aFgsDnl ; "/fgs.dnl" # Lade Register R1 mit dem relativen Offset zum Label 'aFgsDnl' # Da das nächste Kommando nur zwei Byte entfernt ist, muss es sich hier also um einen 16-Bit Thumb-Code
suche nach Alternativen habe ich zwei anderen Referenzensp. gefunden, nämlich den LT1461AIS8-2.5 und ADR431BRZ. Jetzt weiß ich aber nicht, wie ich das mit den Daten bzgl. Rauschen, Initial Accuracy usw. machen soll. Ich habe mal die m.M.n. wichtigsten Daten rausgesucht und verglichen, dabei kam das raus: [code] | REF5025 | ADR431BRZ | LT1461 | max Output | 10 mA | 30 mA | 50 mA | Line Regulation | 1 ppm/V | 20 ppm/V | 12 ppm/V | Initial Accuracy | 0,05% | 0,05% | 0,04% |
EN 61010-031, - Maximale Bemessungsspannung gegen Erde ( ) und Messkategorie: Mit Aufsteckkappe: 1000 V CAT III, 600 V CAT IV, Ohne Aufsteckkappe: 1000 V CAT II, - Maximaler Bemessungsstrom: 10 A, - Schutzklasse II ( ), durchgängige doppelte oder verstärkte Isolierung, - Verschmutzungsgrad: 2, - Länge
http://arduinolearning.com/code/arduino-and-mcp3424-a-d-converter-example.php Dazu noch DB vom PT1000: https://www.sensorshop24.de/tpl/download/PT1000-Kennlinie.pdf dann kannst du jetzt programmieren.
beim Hochladen des sketches ist ein Fehler aufgetreten" > raus. Also liegt es gar nicht an dem Pt1000 und dem MCP3424. Bringe erstmal /Blinky/ zum Laufen, notfalls nachdem du den ADC/Pt1000 vorübergehen erstmal wieder entfernt hast.
V ( 3.2 +55ºC g l o 3.0 +20ºC l e 2.8 C Ø 5.5 2.6 max -20ºC 2.4 -40ºC 2.2 1 1.5 ± 0.3 0.1 10 100 1000 Current (mA) 50 ± 0.3 Ø 14.5 Typical discharge profiles at + 20°C ± 0.15 3.8 0.4 3.6 3.4 V 3.2 ( A Ø 7.5 g 3.0 m m A ± 0.1 t m 6 . m o 5 8 3 1 l 2.8 5 / s s e / s m m C 2.6 s h O O Dimensions in mm. h O 0 0 2.4 O 0 0 0 5 4 1 3 2.2 2.0 1 0.1 10 100 1000 10000 Time (hours) Storage Restored Capacity versus Current and Temperature (2.0 V cut-off) ● The storage area should be 3.0 2.8 clean, cool (preferably not 2.6 exceeding + 30 C), dry and 2.4 ventilated
V ( 3.2 +55ºC g l o 3.0 +20ºC l e 2.8 C Ø 5.5 2.6 max -20ºC 2.4 -40ºC 2.2 1 1.5 ± 0.3 0.1 10 100 1000 Current (mA) 50 ± 0.3 Ø 14.5 Typical discharge profiles at + 20°C ± 0.15 3.8 0.4 3.6 3.4 V 3.2 ( A Ø 7.5 g 3.0 m m A ± 0.1 t m 6 . m o 5 8 3 1 l 2.8 5 / s s e / s m m C 2.6 s h O O Dimensions in mm. h O 0 0 2.4 O 0 0 0 5 4 1 3 2.2 2.0 1 0.1 10 100 1000 10000 Time (hours) Storage Restored Capacity versus Current and Temperature (2.0 V cut-off) ● The storage area should be 3.0 2.8 clean, cool (preferably not 2.6 exceeding + 30 C), dry and 2.4 ventilated
normal form (the 16-bit form is similar). unsigned long crc_normal (); unsigned long crc_normal (blk_adr,blk_len) unsigned char *blk_adr; unsigned long blk_len; { unsigned long crc = INIT; while (blk_len--) crc = crctable[((crc>>24) ^ *blk_adr++) & 0xFFL] ^ (crc << 8); return crc ^ XOROT; } Here is the reflected form: unsigned long crc_reflected (); unsigned long crc_reflected (blk_adr,blk_len) unsigned char *blk_adr; unsigned long blk_len; { unsigned long crc = INIT_REFLECTED; while (blk_len--) crc = crctable[(crc ^ *blk_adr++) & 0xFFL] ^ (crc >> 8)); return crc ^ XOROT; } Note:
in r1. Diese Adresse wird dann von "ldr" verwendet. Der Befehl "adr" ist nützlich, wenn die Adresse eines Literal explizit benötigt wird. Im Blinker-Programm kann es beispielsweise verwendet werden, um die Adressen des Arrays abzurufen: adr r7, BlinkTable @ Adresse von "BlinkTable" in r7 verschieben adr r8, BlinkTableEnd @ Adresse von "BlinkTableEnd" in r8 verschieben Zum Laden eines einzelnen Wertes wird die Adresse jedoch nicht benötigt. In diesem Fall können "adr" und "ldr" kombiniert werden: .type
V ( 3.2 +55ºC g l o 3.0 +20ºC l e 2.8 C Ø 5.5 2.6 max -20ºC 2.4 -40ºC 2.2 1 1.5 ± 0.3 0.1 10 100 1000 Current (mA) 50 ± 0.3 Ø 14.5 Typical discharge profiles at + 20°C ± 0.15 3.8 0.4 3.6 3.4 V 3.2 ( A Ø 7.5 g 3.0 m m A ± 0.1 t m 6 . m o 5 8 3 1 l 2.8 5 / s s e / s m m C 2.6 s h O O Dimensions in mm. h O 0 0 2.4 O 0 0 0 5 4 1 3 2.2 2.0 1 0.1 10 100 1000 10000 Time (hours) Storage Restored Capacity versus Current and Temperature (2.0 V cut-off) ● The storage area should be 3.0 2.8 clean, cool (preferably not 2.6 exceeding + 30 C), dry and 2.4 ventilated
address is then used by “ldr”. The “adr” instruction is useful when the address of some literal is explicitly needed; for example, in the blinker program, it can be used to obtain the addresses of the array: adr r7, BlinkTable @ Move address of "BlinkTable" into r7 adr r8, BlinkTableEnd @ Move address of "BlinkTableEnd" into r8 However, for loading a single value, the address is actually not needed. In this case, “adr” and “ldr” can be combined: .type EnableClockGPIOA
V ( 3.2 +55ºC g l o 3.0 +20ºC l e 2.8 C Ø 5.5 2.6 max -20ºC 2.4 -40ºC 2.2 1 1.5 ± 0.3 0.1 10 100 1000 Current (mA) 50 ± 0.3 Ø 14.5 Typical discharge profiles at + 20°C ± 0.15 3.8 0.4 3.6 3.4 V 3.2 ( A Ø 7.5 g 3.0 m m A ± 0.1 t m 6 . m o 5 8 3 1 l 2.8 5 / s s e / s m m C 2.6 s h O O Dimensions in mm. h O 0 0 2.4 O 0 0 0 5 4 1 3 2.2 2.0 1 0.1 10 100 1000 10000 Time (hours) Storage Restored Capacity versus Current and Temperature (2.0 V cut-off) ● The storage area should be 3.0 2.8 clean, cool (preferably not 2.6 exceeding + 30 C), dry and 2.4 ventilated
- wahl der Pull-up Widerstände, dass die Anschlusspins SDA+SCK einen Innenwiderstand von ca. 600..1000 Ohm, evtl. auch mehr haben (betrifft LO-PegelbeimLesenvonDatenbzw. dem ACK-Bit). I2C-Address (A2=LO) Adr Function $78 Write Command $79 Read Status $7A Write Data $7B Read Data I2C-Address (A2=HI) Adr
Adr, unsigned char *Data, unsigned int Len){ //I2C Daten senden bool success = true; unsigned int x = Len; unsigned char *data = Data; //Start-Condition while(__I2C_BUSY); __I2C_START; while(!__I2C_START_SENT); I2C1->DR = (Adr << 1); //Adresse ist 0x27 -> nach dem 'Schieben' ist der Byteinhalt 0x4E while(!__I2C_ADDR_SENT); // <--- Hier bleibt das Programm haengen!! AF ist gesetzt und SCL ist auf LOW (wird nicht durch
A Peak sink current V HO = 12 V IHOpulldown 3.0 A OUTPUT RISE AND FALL TIME Rise Time LO, HO C = 1000 pF T 8 15 ns load R Fall Time LO, HO C = 1000 pF T 8 15 ns load F DELAY MATCHING LI ON, HI OFF T 7 ns Pulse width = 1 ms MON LI OFF, HI ON Pulse width = 1 ms T 7 ns MOFF TIMING Minimum Input Filter
gewundert. Im Prozessor wird wohl so was ausgeführt: [c]uint32_t kmstand = 1; for (uint16_t adr = 0x1F0; adr < 0x200; adr++){ kmstand += ((0xFFFF - read_93c66_word_von_adresse(adr))); } show_kmstand(kmstand << 1); // *2[/c] Aber ich denke das passt so. Vieleicht prüft Nick das ja und
speichern kann, um einen Sacnner für schnelle Daten zu haben. Gespeichert werden Prozessorzugriffe mit ADR+DAT+STROBES = 44 Bits. Der Prozessor arbeitet mit 156.25 MHz. Wieviele Zugriffe kann ich speichern (angenommen der FPGA ist schnell genug, wovon ich ausgehe)? Aus dem Artix Family Sheet ersehe
Graphikkarten mit HBM(=schneller gehts nicht): Radeon VII: Schnittstelle: 4.096 Bit Taktrate: 1000 MHz (DDR) Bandbreite: 1,0 Terabyte/s Latenz ------- Artix 7 200: Schnittstelle: 25920 Bit Taktrate: 509Mhz (höchster Speedgrade) Bandbreite: 1,6 Terabyte/s Und da sprechend wir noch nichtmal