-
Thread
uC-OS 2 Port ATmega128 Probleme
. unsigned char uart_getchar( void ) { uint8_t tmptail, err; if (UART_RxHead == UART_RxTail) { // no data available, suspend Task data_cnt = 0; OSSemPend(Uart0_RxSem, 0, &err); } // Calculate buffer index tmptail = (UART_RxTail+1) & UART_RX_BUFFER_MASK; UART_RxTail = tmptail; // Store new index return UART_RxBuf[tmptail]; // Return data } und hier die zugehörige Interrupt Routine #if defined(__AVR_ATmega128__) UCOSISR (USART0_RX_vect
-
Thread
USB zu Seriell Adapter
Das Problem ist bekannt. Einige Treiber-Versionen werfen den Fehler 10 und gut ist. Mit der Version 2.0.2.1 vom 25.7.2005 läuft es. Bei meinem Bruder haben wir den Marathon erst letztens durch, der Schrott wollte einfach nicht... Edit: Ich glaube, der war das: http://netload.in/dateiB3Bg52O3zI/windowsprolificdrivers.zip.htm
[..] besorge dir einen vernünftigen Adapter mit FTDI Chip, z.B. > DELOCK 61460 bei Reichelt. Dafür macht ebendieser hierzuworkstation in bestimmten Situationen Probleme, namentlich beim 'Bitbanging' [2]. Im 'Normaloszenario' läuft aber auch der problemlos.
-
Thread
UART Schutzbeschaltung
Tim wrote: > 1k ist nicht schlecht. > Bei geringen Baudraten auch gerne 2K. Die 1k habe ich jetzt bei ein paar Exemplaren eingebaut. Ach so, meinst du eigentlich jeweils in RX und TX jeweils 1k? Wären dann zusammen ja auch wieder 2k. Im korrekt gesteckten Zustand würde ein R z.B. in der Empfangsleitung ja reichen. Nur wenn man sich mal verstöpselt könnte der dann der TX Port ungeschützt sein. > Zusätzlich solltest du das VCC und TX/RX Pin am Stecker > so kürzen das erst
-
Thread
XMega USART Probleme
//D2-TX als Ausgang definieren PORTD.OUTSET = PIN3_bm; //Ausgang auf High setzen PORTD.DIRCLR = PIN2_bm; //D-RX als Eingang definieren PORTD.DIRSET = PIN1
Hi >PORTD.DIRCLR = PIN2_bm; //D-RX als Eingang >PORTD.DIRSET = PIN3_bm; //D2-TX als Ausgang ist unnötig. Datenblatt: CTRLB – Control register B Bit 4 – RXEN: Receiver
-
Thread
Schutzwiderstände für RX/TX beim Atmega88?
zu viel Strom zieht. Jedenfalls sind mir schon 2 MCs dabei draufgegangen. Die RX und TX Pins des Atmega sind danach permanent auf high und der Chip verbraucht plötzlich 130mA. Kann man bedenkenlos Schutzwiderstände in die RX und TX-Leitungen hängen
"im laufenden Betrieb" das USB-Kabel an >den FT kann es scheinbar passieren, dass der Atmega88 am RX-Pin zu viel >Strom zieht. Dann stimmt deine Schaltung nicht. > Jedenfalls sind mir schon 2 MCs dabei draufgegangen. Die RX >und TX Pins des Atmega sind danach permanent auf high und der Chip
-
Thread
Probleme mit MSP430 und MMC
unsigned char spiSendByte(const unsigned char data) { while ((IFG2&UTXIFG1) ==0); // wait while not ready / for RX TXBUF1 = data; // write while ((IFG2 & URXIFG1)==0); // wait for RX buffer
Original waren da 2 kB RAM, wobei 1 kB vom MMC-Treiber belegt wird. Der Durchsatz war um 30 kB/s, trotz 8 MHz Quarz, aber viele Messungen wurden nicht gemacht.
-
Thread
2 Bytes tauschen
Mario schrieb im Beitrag #4907217: > wie kann ich in C 2 Bytes untereinander tauschen? Das einfachste ist doch wohl [c] uint8_t tmp = a; a = b; b = tmp; [/c] > Der Hintergrund ist das die Funktion eeprom_read_word aus der #include > <avr/eeprom.h
schrieb im Beitrag #4907244: > so schreibe ich es rein: > eeprom_write_word(EE_ADR_SERIAL_NUM, ucRxBuffer[6] | 256 * ucRxBuffer > [7]); dann dreht es doch dort gleich richtig. [c] uint16_t tmp = ucRxBuffer[6] << 8 | ucRxBuffer[7]; eeprom_write_word(EE_ADR_SERIAL_NUM, tmp); [/c]
-
Thread
Flowcontrol und UART
ich ein Programm das die Leitung abhört. Das erreichte ich indem ich zwei FTDI/USB-UART)-Adapter mit Rx an TX (Adapter1)und RX an RX(Adapter2) verband. Das ist zwar nicht richtig, aber so habe ich es herausgekriegt. 1. Problem Merkwürdigerweise kann ich keinen (hochwertigen) Logic-Analyzer, noch
Andreas V. schrieb im Beitrag #6125917: > Statt 08-0D-84-B7-84-CA-08-01 kommt dann > 07-0D-84-B7-84-CA-08-01 Ack. also (nach Startbit) nur die ersten 4 Bit falsch herum? Mit oder ohne Parity? 0111000001 statt 0000100001 und der Rest perfekt?
-
Thread
Störungen auf einer RS485 Übertragung
Schema beidseitig mit 120 Ohm abgeschlossen (auch schon verschiedenes probiert) - Leitungen kürzer als 2 Meter Was ich schon gesehen habe, dass zwischen VCC und A und B und GND je ein 560 Ohm Widerstand drin ist. Macht das Sinn? Habe ich auch probiert, hat mal bisschen besser funktioniert aber nicht
USARTC0 // USART PORT number #define USART_IO_PORT PORTC // USART PORT #define USART_RxD_PIN_m PIN2_bm // USART RxD PIN mask #define USART_TxD_PIN_m PIN3_bm // USART TxD PIN mask void usart_init(void); void usart_enab(void); void usart_disab(void); void usart_send_byte
-
Thread
ST24c04 - Nur erster Block lässt sich beschreiben
nicht, daß es nicht funktioniert. Du hast ne Menge zusätzlicher Fehlermöglichkeiten (Interrupt, HW-I2C). Machs erstmal zu Fuß (SW-I2C, keine Interrupts). Außerdem fehlen Funktionen, z.B. EEPROM_Select. Quelltexte als Anhang mit allem zum Compilieren nötigem! Peter
Mein EEPROM_Select setzt die Adresse des EEPROMS zusammen. Also 0b1010 und dann eben 0b00hintendran für die hardwired Adresse sowie eine 0 für Block 0 bzw. eine 1 für Block 1 hinten dran. Ergo: Block 0 = 0b1010000 Block 1 = 0b1010001 Das kommt ja auch raus
-
Thread
STM32 CAN Problem Remap Problem
to PB8 and PB9 AFIO->MAPR &= ~(AFIO_MAPR_CAN_REMAP); AFIO->MAPR |= AFIO_MAPR_CAN_REMAP_REMAP2; retVal = CAN_Init(CAN1,&CAN_InitStructure); return retVal; } Senderoutine: void Test_CAN(void) { CanTxMsg TxMessage; CanRxMsg RxMessage; uint32_t i = 0; uint8_t TransmitMailbox
CAN_FilterInitTypeDef CAN_FilterInitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // GPIO B Takt // CAN RX GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; // PB8=CANRX GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
-
Thread
[S] 1Tera Ohm (1000Gig) Widerstand
könnte man auch Wasser im dünnen Schlauch nehmen: lt. Wikipedia: Wasser (reinst) 10^12 Ω·mm2·m^−1 ;)
newproducts=0&ColumnSort=0&page=1&quantity=0&ptm=0&fid=0&pageSize=25 http://www.ohmite.com/cat/res_rx1m.pdf Gehen sogar bis 10T
-
Thread
Ethernet Preamble
Es sollte doch 0x55 55 55 55 und dann 0x55 55 55 D5 gesendet werden [c] // send preamble rx_stimulus_send_column(32'h555555FB, 4'b0001); rx_stimulus_send_column(32'hD5555555, 4'b0000);[/c]
pietro_lockvogel schrieb im Beitrag #6918064: > // send preamble > rx_stimulus_send_column(32'h555555FB, 4'b0001); > rx_stimulus_send_column(32'hD5555555, 4'b0000); > warum wird in der testbench 0x55 55 55 55 FB und dann 0x D5 55 55 55 > gesendet. Du solltest
-
Thread
Ausgabe der AD-Wandlung
aller geforderten daten will ich das ergebnis sehen. leider ist die ausgabe nicht gleichbleibend - z.b. lese ich zwei sensoren ein ist s1 an der 1. und s2 an der 2. stelle im array; lese ich nur s1 ein, dann ist das ergebnis an der 2. stelle. was mache ich falsch? codeauszüge: // die variablen
stdout = &mystdout; printf(" Werte: %u, %u, %u, %u, %u, %u, %u, %u \n",Werte[0],Werte[1],Werte[2],Werte[3],Werte[4],Werte[5],Werte[6],Werte[7]); // Ende vom while } // Ende der main } [/c] die eingabe sieht so aus: sensor 1 -> ";1#_" sensor 2 -> ";2#_" sensor 1 u. 2
-
Thread
UART Daten nicht wie erwartet
TTL/USB(1): Liest die Eingangsdaten des Slave nach dem MAX487, also auf Mikrocontroller Seite UART1 RX (s. Anhang UART_to_USB_KORREKTUR.png, das rechte Fenster) aus. 2) TTL/USB(2): Liest die "Ausgangsdaten" welche vom Master per UART1 TX verfälscht, bzw. nicht wie erwartet ausgegeben werden (s. Anhang
schrieb im Beitrag #7300787: > aber für mich sieht das > irgendwie auf ganz unterer Ebene (Baudrate zB) falsch aus. > zB wird eine 9dez. = 00001001 zu einer 130dez = 10001000. Das ist mir auch aufgefallen, dass die Darstellung der Bits in Logic 2 umgekehrter Reihenfolge zu sein scheint, jedoch vom
-
Thread
Verschiedene UART Schnittstellen kombinieren ?
Ich mache das so, falls ein Umschalten nicht nötig ist: [code] 1 bis 2kΩ Tx o-----|<|------+---[===]----o VCC | Tx o-----|<|------+------------o AVR Rx | Tx o-----|<|------+ 1N4148 Rx o--------------+
sendet, empfangen die drei seriellen Geräte gleichzeitig. Bei 1 bis 2kΩ sind Baudraten bis 115200 problemlos machbar. Alle Rx und Tx Signale müssen im Bereich zwischen 3,3V und 5V liegen.
-
Thread
CAN Controller MCP2515: Schreiben in CANCTRL
Weiß jemand wofür das 'x' (Higher Nibble) auf Seite 63 des Datanblattes > für den MCP2515/ Table 11-2 steht? x = unknown Das kann der Resetcontroller ja auch nicht wissen, weil er nicht weiß, welchen Pegel z.B. der TX2RTS-Pin hat...
die eben genannten 1111! Und X? Unterprogramm SPI_Write: SPI_WRITE: push r18 ldi r18,0b00000010 cbi PORTB,2 ;SS low! out SPDR,r18 SPIW1: in r16,SPSR sbrs r16,7 jmp SPIW1 out SPDR,r16 SPIW2: in r16,SPSR sbrs r16,7 jmp SPIW2 out SPDR,r17
-
Thread
Mehrere Signale über eine Leitung
Für 8 Taster können die De-/Multiplexbausteine U6050B/U6052B verwendet werden.
alles im Lot sein. Wenn das Poti eh keine volle Umdrehung kann, warum schickt ihr dann nicht (zB mit 10Hz) Absolutwerte? Also zB 0..255 für 0..270Grad.
-
Thread
Kleiner NF-Verstärker mit TDA2003 o.ä. mit regelbarer Lautstärke
Datenblatt gelesen? Seite 8 Cx bzw. Rx upper frequenzy cutoff Erechnet sich unter anderem aus R2 Deshalb lieber Poti vor Schaltung.
Ich hatte nach der Formel im ersten Bild gerechnet. Dort steht Cx = 1/(2*pi*B*R1). Mist, schon wieder falsch geschaut. Es steht da R1 und nicht Rx. Dann wären es nur 18kHz mit der Herstellerdimensionierung. Somit kann ich meine innere Verwunderung über die 110kHz auch wieder
-
Thread
Frage an die Arduino-Nutzer
Wenn du was gutes bauen willst muss sowohl der bootloader wie auch eine lötleiste zu vcc, gnd, reset, rx & tx auf's board.
Schaltungen zu bauen und den Namen als Synonym beibehalten. siehe: https://www.strippenstrolch.de/1-1-2-die-brettschaltung.html
-
Thread
Max. 200 Meter Bussystem
Rs422 ist ja, so wie ich es verstanden habe, lediglich eine Erweiterung der RS485. Im letzteren liegt Rx und Tx auf dem selben verdrillten Aderpaar, bei RS422 sind es 4 Leitungen statt 2. Ich schwanke gerade zwischen folgenden ICs: SN65HVD24D ADM2582E Wobei ich sogar eher zum ADM2582E/ADM2587E
3.3V auf dem Board). Nehme ich dem Kabel eigentlich ein Aderpaar für V_isoout / V_isoin und GND_2? Lege ich diese also auch mit auf die Leitung? (neben A/B, X/Y)?
-
Thread
RX62 - "gescheite" resourcen
Hallo Uli, wo hast du denn die RX62x gekauft? Frag doch deinen Distri, der sollte dir auch weiterhelfen können. Grüße Carsten
auch für einen Weg entscheiden. Aber klar. Aber wenn ich IDE 1 nehmen muss und ein Sample nur in IDE 2 verfügbar, dann ist es eben Mist. (IAR-Keil zB sind wesentlich portabler) IAR drückt sich hier im konkreten Fall selber ganz "elegant" und bietet nur Programmier-Code an für das im Chip enthaltene
-
Thread
fehlerfreie UART-Übertragung?
.255 sendest, kann es etwas heikel sein, da das erste byte zufällig auch diesen wert haben kann. 2.) ich würde jeweils eine sequenz (paket) von z.b. 32 zeichen senden, mit startzeichen und einer angehängten prüfsumme. (8 bit quersummee ist nicht optimal, aber ganz brauchbar - es gibt bessere verfahren
genügend Leitungskapazität vorhanden ist, kann man einfach die Daten dreimal schicken und dann die 2-von-3-Funktion bilden, die jedes einzelne gekippte Bit korrigiert: #define mc_two_of_three(a, b, c) (((a) bitand (b)) bitor ((a) bitand (c)) bitor ((b) bitand (c))) Das Makro hat den Vorteil daß
-
Thread
Makros in C und ASM nutzen
Teilen gibt es Makro-Definitionen, oft für das Selbe: Assembler: #set DEVICE MB96346RxA; #set CLOCK_SPEED CPU_24MHZ_CLKP2_12MHZ C: #define PROZESSORTYP 96348 #define F_SYSTEM 24000000 // CPU-Takt in Hz Die Beispiele sind
Debugmodus definiert werden, und sowohl ASM als auch C-Files includen das und benutzen den Inhalt, z.B. im ASM: #if PROZESSORTYP == 96348 #if PROZESSORVARIANTE == A #set DEVICE MB96348RxA ; <<< select device #else #set DEVICE MB96348RxB ; <<< select device #endif #endif
-
Thread
Sammelbestellung OLED 0.96 I2C für den ESP8266
gar nicht enthalten ist, oder? btw was ist heutzutage noch normal? Spass beiseite. ESP8266 z.B.I²C mit den ESP-12 Beispiel: SDA : GPIO2 SCL : MTMS (GPIO14 ) SSD1306 lib einbinden vom Hersteller/Vertreiber Den SoC wie jeden anderen auch üblichen I²C Procederas beibbringen. mit dem ESP
testen. Später kann man immer noch neue FW mit einem verschlüsselten Nicht-AT-Protokoll erstellen (z.B. JSON per HTTPS + Login-Passwort). Ich brauche aber weder 999 noch 1000 Stück davon. ;-) Und _das_ passt dann auch wieder zum Thread-Titel: "OLED 0.96 I2C für den ESP8266"
-
Thread
RS-232 Schnittstelle
nur die > richtigen Signale miteinander verbinden und dann geht das schon. Meist > reichen dazu RX und TX. Und GND Hi, mittlerweile wird zu fast jedem Internetzugangsgerät serienmäßig auch gleich ein Satz Übergangsstecker mitgeliefert, z:B. DB25 auf DB9. Oder wie im Link frei nach Kundenwunsch
Karl B. schrieb im Beitrag #7196575: > Hi, > mittlerweile wird zu fast jedem Internetzugangsgerät serienmäßig auch > gleich ein Satz Übergangsstecker mitgeliefert, z:B. DB25 auf DB9. Bist du sicher,
-
Thread
Arduino-Kummunication
zum Ernst der Sache: Wir benutzen für 'auf die schnelle Projekte' auschliesslich Teensy Module ( 3.2 / 3.6) die sind sau schnell und besitzen Peripherie im Überfluss ( z.b. bis zu 4 USART) Und sind obendrein voll Arduino kompatible ! - Herz was willst du mehr.
; Serial_ SerialB; void setup() { SerialA.begin(9600); SerialA.println("Start"); SerialB.begin(9600); SerialB.println("Start"); } void loop() { SerialA.println("A"); SerialB.println("B");
-
Thread
max3232 funktioniert nicht
Die SW koennest du auch wie folgt prüfen. 1. Jumper JP2 (Pin 1 - 2 u. Pin 3 - 4) entfernen. 2. Jumper JP2 Pin 2 und 4 brücken 3. Gesendete Zeichen und Empfangende Zeichen auf gleichheit prüfen und dann eine LED einschalten.
Dann fällt mir auch nur ein Fehler in der Schaltung ein (z.B. Kurzschuss) oder -wie Du schon sagtest- IC kaputt. Du kannst ja mal testweise ohne PC-Anschluss das Signal TX (TTL) auf 0 und 1 legen und dann TX (RS232) messen - gleichzeitig auch RX (RS232) (falls
-
Thread
Was ist 32 Bit und nicht ARM?
- Xtensa (z.B. als LX106 im ESP8266 oder LX6 im ESP32) - einige DSPs (z.B. C2000 von TI, Blackfin von AD)
eine ganze Reihe von 32-Bit Controllern, die nicht auf ARM basieren: SuperH (ursprünglich Hitach), RX (Renesas), V850 (ursprünglich NEC), M32R (ursprünglich Mitsubishi) FTDI hat FT32 in bspw. den FT900ern Fujitsu hat noch FR50, FR60 und FRlite im Angebot Noch unbekannter ist hier z.B. Andes
-
Thread
Wie ein 128s BMS für 4 kWh Hochvoltbatterie ?
Ich würde gerne aus diesen 5 Ah B-Grades eine 128s2p Hochvoltpufferbatterie bauen: https://m.alibaba.com/product/62517038510/32650-lifepo4-cheap-price-battery-cell.html Dachte eigentlich, dass ich schon irgendwie mit diesen 40
die Zelle auf ungesunder Maximalspannung ist. Drum gebe ich lieber 16€ für einen 17s aktiven 1.2 A Balancer mit 1s Überlappung aus und mach die Protection über die Gesamtspannung. Die steckbare 16s Batterie hätte dann zwei großflächige Kontakte für B0 und B15 sowie einen 1.2A Kontakt für B1
-
Thread
LPC2468, Ethernet MAC und Interrupts
VICIntEnable |= BIT_15; /* enable the link up/down interrupt */ SA0 = (MAC_ADDRESS1 << 8) | MAC_ADDRESS2; /* set up the station address */ SA1 = (MAC_ADDRESS3 << 8) | MAC_ADDRESS4; SA2 = (MAC_ADDRESS5 << 8) | MAC_ADDRESS6; RxFilterCtrl = (BIT_02 | BIT_05); /* allow broadcast and perfect */
(INT32U)rx_status_desc; /* status descriptor base */ RxDescriptorNumber = MAC_RX_FRAGMENTS - 1; /* number of rx descriptors */ RxConsumeIndex = 0; /* begin at the first rx descriptor */ } static void
-
Thread
KSQ mit Diode oder Transistor temperaturkompensieren?
100k-Widerstand, sondern vom TK der Basis-Emitter-Strecke der Transistoren. Da die Ube einen TK von -2mV/K hat erhöht sich die Spannung über den in Reihe liegenden R1 und R2 um diesen Betrag, und daher auch der Strom durch R1/R2 und somit auch der Strom durch R3/Rx. Die Temperaturkompensation der Zweige
Elliot schrieb im Beitrag #6605155: > Da die Ube einen TK von -2mV/K hat erhöht sich die Spannung über den in > Reihe liegenden R1 und R2 um diesen Betrag, und daher auch der Strom > durch R1/R2 und somit auch der Strom durch R3/Rx. Achso ist das gemeint. Gut
-
Thread
flashfile über rs232 weiter mittels i2c ins endgerät, wie?
(RS232) -> RS232 -> Display Da braucht man nur eine kleine Umlenkung schreiben. Alles was bei RX0 reinkommt sofort in TX1 schreiben. Was bei RX1 reinkommt in TX0 schreiben. Einfacher gehts kaum noch. Für I2C wird es wohl schwer was fertiges zu finden.
habe, an die 7 und 8 der sub >buchse beschaltet habe. war so auf dem schaltplan den ich hatte. Rx und Tx liegen aber auf 2 und 3 der Sub-D Buchse. Auf 7 und 8 liegen die Handshake Leitungen RTS und CTS. Da liegst du völlig falsch. Und Ground Pin 5 muss man auch anschliessen. Ich gebs jetzt
-
Thread
PIC16C: USART will nicht senden
PIR1 btfss PIR1, TXIF ; warten, bis TXREG leer (TXIF = 1) goto $-1 banksel BUFFER2 movfw BUFFER2 ; drittes Byte laden banksel TXREG movwf TXREG ; Byte (BUFFER2) abschicken nop nop nop banksel PIR1 btfss PIR1, TXIF ; warten, bis TXREG leer (TXIF
mit Setzen nicht die Wertigkeit 1 gemeint, sondern die korrekte Definition der Richtung. Also TRIS:=b10xxxxxx
-
Thread
Can't infer registers
end if; else iCounter2 <=RX_COUNTER; end if; RX_COUNTER<=iCounter2; end process Lesen_Pro; [/CODE] Vielen Dank
-- (3) iCounter2 <=RX_COUNTER; end if; RX_COUNTER <= iCounter2; -- (4) end process Lesen_Pro; [/vhdl] (1) Naja, das kann arg ins Auge gehen: ein Asynchroner Reset... (2) Jetzt kommt
-
Thread
SPI-Kommunikation mit STM32F2xx
gespeichert sein. ReceiveBuffer[0] <-- 0x0000005E ReceiveBuffer[1] <-- 0x00004000 Nachdem der RxDMA aktiviert wird, ist der erste empfangen 16bit Wert nicht 0x0000005E sondern 0x00000000. [c]SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Rx, ENABLE);[/c] Wie kann ich dieses Problem lösen ?
; } SPI_MASTER_Buffer_Tx[0] = 0; SPI_MASTER_Buffer_Tx[1] = 0; SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, DISABLE); SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Rx, DISABLE); DMA_Config(); SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, ENABLE); SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Rx
-
Thread
Mit STM32 Byte-Sequenz aus UART-Strom herausfischen?
feste Länge hat, hole ich nacheinander Bytes und schaue, ob das Ende aus der gesuchten Sequenz (z.B. "OK") besteht: [c] uint8_t *p = buffer; int found = 0, count = 0; while (1) { if (HAL_UART_Receive(&huart7, p++, 1, 1000)) break; if (++count >= 2 && !strncmp(p - 2, "OK", 2)) {
Bülent C. schrieb im Beitrag #5426083: > im RX interrupt immer byteweise in ein buffer schreiben und schauen ob > der aktuelle und der letzte byte ein 0Dh und ein 0Ah ist. > Achtung: Du benutzt diese s...ß HAL Treiber, ein RX interrupt wird hier
-
Thread
Probleme mit GY-271 (HMC5883) Compass
tx_load_pos>=tx_buffer_size) { tx_load_pos=0; } return 0; } void compass_init() { i2c_start(compass_write); i2c_write(0x00); i2c_write(0b0001000); i2c_stop(); i2c_start(compass_write); i2c_write(0x01); i2c_write(0b00100000); i2c_stop(); i2c_start(compass_write); i2c_write(0x02); i2c_write(0x00); i2c_stop(); } ISR(USART_RX_vect) { rx_buffer[rx_read_pos]=UDR0; rx_read_pos++; if(rx_read_pos>=rx_buffer_size) { rx_read_pos=0; }
-
Thread
Suche Datenblatt/Quelle für Motorola 171-10245 Spannungsregler (?)
Vergleichsmessung mit einem 2N3055 ergibt bei +/- an B-E und B-C jeweils Durchgang hat und im Gegensatz zum 2N3055, der bei -/+ jeweils sperrt, die Strecken B-E und B-C jeweils einen Durchgangswiderstand von ca. 20KOhm anzeigen.
funktioniert - ebenso ca 3.5V sein muessen. Die Berechnung fuer 5V-Ausgangsspsnnung=> 3.5V/R9 = 1.5V/Rx => 3.5V/2k = 1.5V/Rx => Rx = 1.5V/(3.5V/2k)= 850 Ohm Wenn man genauere Werte einsetzt komt man auf ca.820 Ohm. Eventuell hast du uns/mir falsche Werte fuer denSpannungsteiler R6/R7 (jeweils 2k2)
-
Thread
UART Probleme
der Fehler? Das Kabel zu einem PC o.ä. ,muss doch unbedingt gekreutzt sein, oder? TX vom Atmel in RX des PC und RX vom Atmel in TX des PC... bei zusammengeschalteten Sende- und beide Empfangsleitungen können die sich doch nicht unterhalten... greetz Danny
Nullmodemkabel nehmen! Hier im Tut nicht. Schau die mal die Belegung des 9pol D-Sub an. Bei Rowalt geht RxD auf 2 und TxD auf 3. Hier im Tut genau umgekehrt! Ich habe das Board von Rowalt nachgebaut, mit dem ATMega8 (aus dem neuen Buch). Bei mir funzt die UART, aber mit einem krummen Quarz! werde es am
-
Thread
Mehrere UARTs mit Interrupts
registers */ GPIO_InitTypeDef GPIO_InitStruct; // this is for the GPIO pins used as TX and RX USART_InitTypeDef USART_InitStruct; // this is for the USART2 initilization NVIC_InitTypeDef NVIC_InitStructure; // this is used to configure the NVIC (nested vector interrupt controller)
now all the values are passed to the GPIO_Init() function which sets the GPIO registers /* The RX and TX pins are now connected to their AF * so that the USART2 can take over control of the * pins */ GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_USART2); // GPIO_PinAFConfig(GPIOD
-
Thread
PIC18Fxxx8 CAN Protokoll Frage
>kann ich die 2 PICs auf direkt zusammenhängen >TXCAN1->RXCAN2 und RXCAN1<-TXCAN2? So nicht, aber anders: mit wired or, denn alle Rx müssen alle Tx hören, und dominant (low) soll recessiv (high) übertönen: +5V PullUp | Rx1 ------*------ Rx2 | Tx1 --|<|-*-|>|-- Tx2 (sollen 2 schnelle Dioden sein) geht auch mit mehr als 2 Teilnehmern, wenn die Leitungen relativ kurz sind.
-
Thread
STM32 RF24 Kommunikation
Mein Code: [c] #include "mbed.h" #include "nRF24L01P.h" Serial pc(USBTX, USBRX,9600); // tx, rx nRF24L01P my_nrf24l01p(D11, D12, D13, D10, D9, D7); // mosi, miso, sck, csn, ce, irq DigitalOut myled1(LED1); DigitalOut myled2(LED2); int main() { // The nRF24L01+ supports transfers
rxDataCnt--, i++ ) { pc.putc( rxData[i] ); } // Toggle LED2 (to help debug nRF24L01+ -> Host communication) myled2 = !myled2; }
-
Thread
RS232 Kabel am Olimex Dev. Board ?
zweite Fehlerquelle könnte sein, dass das "TX" vom µC nicht an einem der beiden T-IN hängt bzw. das "RX" nicht an einem der beiden R-OUT. Eine dritte Fehlerquelle kann sein, dass die Paarung am MAX232 nicht beachtet wurde, also z.B. R1-IN auf R2-OUT. Dann kommt auch nix durch.
Ah, ich habe das Schaltbild gefunden: http://www.olimex.com/dev/images/avr-p40b-8535-sch.gif Die RX/TX Bezeichnung ist verzwickt. Der Pin T2IN am MAX232 ist mit RX bezeichnet und der R1OUT mit TX. So gesehen macht es Sinn den vorgesehenen Output-Pin des µC mit RX und den vorgesehenen
-
Thread
Renesas: drei neue, für Motorsteuerung optimierte Mikrocontrollerfamilien
und 64 KByte SRAM stehen auch 16 kB EEPROM-artiger Speicher zum Ablegen von Konstanten zur Verfügung. Wie in der Einleitung genannt, unterstützt er einen Spannungsbereich von 2,7-5,5 V - dies ist nicht nur zu Erhöhung der Stör-Festigkeit
sichtbar. Der RA4T1 bringt einen mit 100 MHz laufenden Cortex M33 mit, dem entweder 128 oder 256 kB Flash und 40 KByte SRAM zur Verfügung stehen; analog zum RX26T gibt es auch hier einen vier KByte großen EEPROM-Bereich für das Remanentspeicher von Konstanten. 
-
Thread
Uart-Programm testen
Blödsinn. Es schreibt nur Quadrate hin. Eingestellt in hterm habe ich Baud=9600, Data=8 und Stop=2 und Parity=None Der uC ist ein at90 [c]#include <avr/io.h> #include <avr/interrupt.h> int main (void){ UBRR1= (6>>8); //9600, 1MHZ UBRR1= 6; UCSR1B= (1<<RXEN1) | (1<<TXEN1); UCSR1C=
& (1<<RXC1)) ) ; zeichen = UDR1; [/c] Bei diesem Interrupt schickt er mir zuerst ein a,b,b,b,b.... Sollte es nicht a,b,c,d,.... sein? ISR (USART1_TX_vect) { UDR1= zeichen+1; }
-
Thread
Eine Callback Funktion erstellen, wie?
(void){ TimeoutISR(); // entweder rxBuffer[]... // oder }[/c] In der Klasse ComPort ist die Funktion "TimeoutISR", die mir ein Flag in der Klasse selber setzen soll, oder die Daten aus dem rxBuffer der durch einen DMA bedient wird
ComPort1_IRqHandler USART2_IRq -> ComPort2_IRqHandler SysTick_Irq -> ComPort1_Ticks -> ComPort2_Ticks Das ganze soll dann noch möglichst dynamisch erweiterbar sein. Beim PC können ja auch z.B. Tastendruck-Events
-
Thread
Terminierung von Datenleitungen
Schau dir mal diese Bilder an: https://www.microchip.com/forums/m697983.aspx Hier sind es die 2·49,9 Ω Widerstände, welche die Rx und Tx Leitungspaare terminieren. Manche MAC Chips verwenden Übertrager mit anderen Übersetzungsverhältnissen als 1:1. Zum Beispiel 1:3, da haben die Widerstände
dir mal diese Bilder an: > https://www.microchip.com/forums/m697983.aspx > > Hier sind es die 2·49,9 Ω Widerstände, welche die Rx und Tx > Leitungspaare terminieren. Richtig. Das sind die Widerstände für die Quelle. Und wo sind bei offenen Buchsen oder einem angesteckten Kabel die Widerstände
-
Thread
3x Mega32 über I2C = 3x TxD und RxD ?
noch Anfänger und habe ein paar Fragen. Ich brauche 4x Rxd und Txd. Ein einfaches billiges IC, das z.b. I2C auf RxD/TxD umwandelt hab ich (noch) nicht gefunden. Alternative: Multiplexer? Meine Frage: Wenn ich nun eine Schaltung mit 4xMega32 aufbaue und die über I2C Parallel schalte, müsste ich
Anfänger und habe ein paar Fragen. > Ich brauche 4x Rxd und Txd. Ein einfaches billiges IC, das z.b. I2C auf > RxD/TxD umwandelt hab ich (noch) nicht gefunden. ich weiss jetzt nicht was für dich einfach und billig ist, für mich jedenfalls würd ein ATtiny2313 diese Vorraussetzungen erfüllen. Ne
-
Thread
AVR Mega32 Umschalten UART Geschwindigkeit
(1<<OVR) #define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC) // USART1 Receiver buffer #define RX_BUFFER_SIZE1 8 volatile int msg_index=0; //uart rx index volatile char rx_buffer1[RX_BUFFER_SIZE1]; volatile unsigned char tx_can[8]; volatile unsigned char rx_wr_index1,rx_rd_index1,rx_counter1; // This flag is set on USART1 Receiver buffer overflow // bit rx_buffer_overflow1; volatile char rx_buffer_overflow1; //Kläre BIT volatile