-
Thread
FSM mit ADC synchronisieren
danach zwischen den anderen hin und her gewechselt wird. Der z2 wird erst dann erreicht wenn SPI Transfer beendet wird. Wie kann ich am besten das Problem in den Griff bekommen damit bei jeder steigender Flanke des Signal ADC_CLK die FSM den Spi Transfer einleitet? MFG derNeugierige PS: der
Problem in den Griff bekommen damit bei jeder > steigender Flanke des Signal ADC_CLK die FSM den Spi Transfer einleitet? Du ermittelst die steigende Flanke dieses "Taktes" und setzt daraufhin /TX_Start/.
-
Thread
STm32F0 und 1Mbit I2C EEprom
uint32_t data_num = 0; //Configure slave address, nbytes, reload and generate start I2C_TransferHandling(I2C_EE, m_ee_address, 1, I2C_Reload_Mode, I2C_Generate_Start_Write); //Wait until TXIS flag is set m_ee_timeout = EE_LONG_TIMEOUT; while(I2C_GetFlagStatus(I2C_EE, I2C_ISR_TXIS
m_ee_address = deviceSelect; //Configure slave address, nbytes, reload and generate start I2C_TransferHandling(I2C_EE, m_ee_address, 1, I2C_Reload_Mode, I2C_Generate_Start_Write); //Wait until TXIS flag is set m_ee_timeout = EE_LONG_TIMEOUT; while(I2C_GetFlagStatus(I2C_EE, I2C_ISR_TXIS
-
Thread
PIC32MX I2C Problem
= TRUE; UINT8 i2cbyte[5]; BYTE ix; if( !StartTransfer(FALSE) ) { while(1); } I2C_FORMAT_7_BIT_ADDRESS(SlaveAddress, 0x68, I2C_READ); i2cData[0] = SlaveAddress.byte; TransmitOneByte(i2cData[0]); if(!I2CByteWasAcknowledged
DelayMs(10); } DelayMs(10); } } StopTransfer(); [/c] So ganz verstehe ich auch nicht die Reihenfolge hier: [c] // Warten bis ein Byte da ist? und wer schaltet dann die clock Leitung? // oder wird hier einfach mal auf glueck
-
Thread
SPI vom USART1 nutzen, Probleme durch USART0?
must be set after the transmitter is enabled */ UBRR1 = 6; } unsigned char SPI2_MasterTransfer (unsigned char c1,unsigned char c2) { while (!(UCSR1A & (1<<UDRE1))); UCSR1A |= (1 << TXC1); UDR1 = c1; UDR1 = c2; //while (!(UCSR1A & (1<<RXC1))); return UDR1; } //Aufruf ReData = SPI_Transfer(110,110); [/c] Vielen Dank Achja, ich habe dies schon in einem alten Thread schon ähnlich behandelt, aber ohne Lösung (http://www.mikrocontroller.net/topic/223486#2243219) Nun aber die
-
Thread
USB Signal testen mit Multimeter
5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 0 Endpoint
5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 32 Device
-
Thread
SD card: STOP_TRANSMISSION beim MULTIPLE BLOCK WRITE
Force First word after Enabling SPI DMA0REQbits.FORCE = 1; // wait until the first transfer is finished while(DMA0CONbits.CHEN == 1); _LATA1 = 0; asm volatile("nop"); asm volatile("nop"); asm volatile("nop"); asm volatile("nop"); asm volatile
(SectorsToWrite); } //end SectorMultiWrite [/c] In der ersten for-Schleife starte in den DMA-Transfer für SPI. Ich schicke 1 + 512 + 2 Bytes, wobei das erste Byte DATA_START_MULTIBLOCK_TOKEN ist, gefolgt von 512 Bytes Daten und 2 Bytes Pseudo-CRC. Danach wird DMA deaktiviert, damit ich SPI wieder
-
Thread
16 Bit SPI senden
mcp_4921.h" #include <avr/io.h> #include <avr/interrupt.h> ISR(SPI_STC_vect) /* SPI Transfer Complete Handler */ { switch(spi_status) { case 1: /* 1. Byte wurde gesendet */ SPDR = lower_byte; // Sende 2. Byte spi_status = 2; // Status: 2. Byte wird
Gucke Dir den SPI-Transfer mal mit dem Oszilloskop und vergleiche die beiden Varianten. Was ist anderst? Das sicher bei der Fehlersuche...
-
Thread
OV9655 Kamera hat nur Blautöne
sollte im double-buffer-mode laufen, damit das Bild "kontinierlich" eingelesen werden kann. Beim transfer complete interrupt wird nicht immer der Buffer sofort gewechselt. Eignetlich sollte am Anfang der Buffer0 gefüllt werden. Dann nach dem TCI Buffer1 und die Addresse von Buffer0 so erhöht werden
or multiply accesses in case of memories access. Workarounds : Avoid concurrent AHB and APB2 transfer using DMA2. One of the following approach could be used to solve the issue: If DMA2 is used to manage AHB peripheral (DCMI, CRYPT, HASH), we can use the Cortex-M CPU to manage APB2 peripherals
-
Thread
GPDMA mit SPI auf LPC1787
GPDMA_Channel_CFG_Type dma_config; dma_config.ChannelNum = GPDMA_CONN_SSP1_Tx; dma_config.TransferSize = 1; dma_config.TransferWidth = 0; dma_config.SrcMemAddr = (uint32_t)&buffer[0]; dma_config.DstMemAddr = 0; dma_config.TransferType = GPDMA_TRANSFERTYPE_M2P; dma_config.SrcConn
-
Thread
Kurze Frage zu Grafikkartenspeicher.
muß der Prozessor nur Anfang und Ende eines Speicherbereichs dem DMA Controller mitteilen. Der Transfer erfolgt rein hardwaremäßig und das recht flott ohne den Prozessor zu belasten.
Prozessor nur Anfang > und Ende eines Speicherbereichs dem DMA Controller mitteilen. Der > Transfer erfolgt rein hardwaremäßig und das recht flott ohne den > Prozessor zu belasten. Du meinst den grafikprozessoer?
-
Thread
Lacher der Woche Ingenieur-Mangel in Deutschland eskaliert trotz Wirtschaftskrise Gesperrt
Sie sehen das nicht richtig. Durch die globale Zusammenarbeit und durch Know-How-Transfer können unsere Firmen in neue Markte hineinwachsen und neue Umsatzgrößen entwickeln.
Ich kann Gast beipflichten... Aber, Know-how-transfer gibt es nur zwischen kooperierenden Mitarbeitern. Die beruehmten Synergien, die dann ploetzlich verschwunden sind, wenn die Leute nicht mehr wollen. Es gibt immer noch Vorgesetzte, die glauben wenn
-
Thread
Raspberry Pi kommuniziert mit ATtiny2313 über SPI
; int i, j; for(i = 0; i < 50; i++) { if(data == '5') { bcm2835_spi_transfer(data); data = '6'; printf("5 sended...\n"); } else { bcm2835_spi_transfer(data); data = '5'; printf("6 sended...\n"); } // Wait before sending the next
-
Thread
TWI hängt sich auf CLK Puls geht unter
SlaveAdresse,SlaveInternAdresse,Datenbyteanzahl,Byte1,Byte2) über die Funktion Twi_Tx_TriggerNextTransfer(). Danach ist der Handler dran. [c] void Twi_Tx_TriggerNextTransfer(Twi *p_twi){ uint8_t buffer_out = 0; gl_twi0_state = TWI0TX_BUSY; /* Set write mode, slave address and 3 internal
-
Thread
Autokauf und Bargeldobergrenze
https://www.europeanpaymentscouncil.eu/sites/default/files/participants_export/sepa_instant_credit_transfer/sepa_instant_credit_transfer.pdf Achte auch auf Dein Überweisungslimit, das musst Du evtl. rechtzeitig vorher hochsetzen lassen.
-
Thread
S-Function für mehrere Temperaturfühler
// delay 62.5ns on a 16MHz AtMega, 100ns erforderlich NOP; byte MSB = SPI.transfer(0); // höherwertiges Byte einlesen, D15 ... D8 byte LSB = SPI.transfer(0); // niederwertiges Byte einlesen, D7 ... D0 digitalWrite(CS, HIGH); KTemp
-
Thread
STM32F103 ADC und DMA Verständnisfrage
> freigegeben." Ja, etwas lässig beschrieben. Jedes Ende einer Wandlung stößt einen DMA-Transfer an. Verloren gehen wird da nichts, da sind ja keine eventuell gesperrten Interrupts im Spiel. Und das Ende eines Durchlaufs wird von der DMA signalisiert. Welche Kanäle in welcher Reihenfolge gewandelt
Carl D. schrieb im Beitrag #6174589: > Jedes Ende einer Wandlung stößt einen DMA-Transfer an. Verloren gehen > wird da nichts, da sind ja keine eventuell gesperrten Interrupts im > Spiel. dieses Anstoßen eines DMA Transfers macht der ADC wenn ich also in dessen CR2 das DMA Bit auf
-
Thread
Sinusfilter für abgetastetes Signal
Du könntest auch einfach in Simulink einen "Transfer Fcn" Block oder einen "Discrete Transfer Fcn" Block verwenden. Dann musst du nicht den Umweg über Simscape machen. Du könntest aber auch einfach in Matlab die Funktion "filter" verwenden. Die
-
Thread
Zeigt her Eure Kunstwerke! Gesperrt Bilder
nix dolles, hat mich aber einiges an Nerven gekostet. Die Platine habe ich mit der Direkt-Toner-Transfer-Methode gemacht und die Leiterbahnen waren doch arg dünn. Aber hey, es funktioniert. Achja, es ist im Prinzip n normaler USB-Seriell-Adapter mit wählbarem TTL Pegel von 5Volt oder 3,3Volt und 2x
Improvisation mit anderem Spannungsregler und ein paar SMD Komponenten. Wieder in spontaner Direkt-Toner-Transfer-Methode verwirklicht. Jens
-
Thread
STM32F4 falsche DMA-Werte zu Beginn des Transfers
den Daten-Clock-Pin gekoppelt ist, um die Anzahl der eingelesenen Werte hochzuzählen und den DMA-Transfer immer bei einer steigenden Clock-Flanke auszulösen. Könnte es sein, dass dieser Timer den Transfer der ersten paar DMA-Werte behindert? Ich stecke nicht tief genug in der Thematik drin um das beurteilen
DMA_SxFCR register is ‘0’), the threshold level of the FIFO is not used: after each single data transfer from the peripheral to the FIFO, the corresponding data are immediately drained and stored into the destination." Im Reference Manual RM0090 sind in Kapitel 10.3.10 mehr Hinweise. Gruß Stefan
-
Thread
DMA allgemeine Fragen
architecture eliminates the need for cycle stealing, which halts the CPU when a higher priority DMA transfer is requested." Mehr Info über's DMA gibts im "dsPIC33E/PIC24E Family Reference Manual", Section 22, "Direct Memory Access (DMA)" Gruß, N.
DMA ist nicht kostenlos. Ein Transfer blockiert u.U. kurz die CPU, um Zugriff auf das RAM zu erhalten. Es gibt IO-Module mit besonders hohen Tranferraten, bei denen dies signifikant sein kann, wie etwa Ethernet oder Highspeed-USB.
-
Thread
Frage zu Funktionszeiger und dessen Verwendung
more than one byte to read { TWCR=(1<<TWINT)|(1<<TWEA)|(1<<TWEN); // then start transfer with acknowledge while (!(TWCR & (1<<TWINT))); // wait for response val[i++]=TWDR; // read databyte from TWDR } TWCR=(1<<TWINT)|(1<<TWEN); // start last byte transfer without acknowledge while (!(TWCR & (1<<TWINT))); // wait for response val[i]=TWDR; // read databyte from TWDR } else { printf_P
-
Thread
Usart Rx mit DMA
request */ USART_DMACmd(USART3, USART_DMAReq_Rx, ENABLE); /* Enable DMA Stream Half Transfer and Transfer Complete interrupt */ DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE); DMA_ITConfig(DMA1_Channel1, DMA_IT_HT, ENABLE); DMA_Cmd(DMA1_Channel1, ENABLE); /* Enable the
-
Thread
Parallelport im EPP-Modus
die Daten kontinuierlich eingelesen werden, da ich ja keinen Buffer habe, der kurze Stockungen im Transfer auffangen könnte. Afaik hat der EPP-Modus im Gegensatz zu ECP keine Möglichkeit, den Fifo des Parallelport zu verwenden, habe ich das richtig verstanden? (Quelle: http://www.beyondlogic.org/epp/
Daten kontinuierlich eingelesen werden, da ich ja keinen Buffer habe, der kurze Stockungen im Transfer auffangen könnte." Das hängt ganz stark davon ab, ob und was für ein Betriebssystem auf Deinem PC läuft. Bei 125 kByte/sec liegen zwischen zwei Bytes gerade mal 8 µsec - einen kontinuierlichen
-
Thread
SPI mit STM32
//while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE)==RESET); /* terminate spi data transfer */ //SPI_SSOutputCmd(SPI2, DISABLE); GPIO_WriteBit(GPIOB, GPIO_Pin_12, 1); return data_byte; } void test_fram(void) { unsigned char i; fram_spi_write_byte(0, 0x01
//while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE)==RESET); /* terminate spi data transfer */ GPIO_WriteBit(GPIOB, GPIO_Pin_12, 1); CS wieder hochziehen bevor das Byte raus ist, ist keine gute Idee.
-
Thread
Timer und Interrupt
onTimer1Ov ; 9 Timer1 Interrupt bei Überlauf reti ;10 TC0 Overflow reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete reti ;15 ADC Conversion Complete reti ;16 EEPROM Ready reti ;17 Analog
reti ; 9 TC1 Overflow reti ;10 TC0 Overflow reti ;11 SPI, STC Serial Transfer Complete reti ;12 UART Rx Complete reti ;13 UART Data Register Empty reti ;14 UART Tx Complete reti ;15 ADC Conversion Complete reti ;16 EEPROM Ready
-
Thread
DDR4-3200 Interner Datenbus zwischen Speicherchip und IO
was man als "einen Arbeitstakt" zusammenfassen könnte. Sprich man adressiert einmal, startet den Transfer und bekommt 8 Bit geliefert - wobei sich "ein Bit" auf die gesamte Busbreite (64 Bit) bezieht. Dabei ist ein DDR4-Modul in mehrere kleinere Bereiche unterteilt, die zu verschiedenen Zeiten aktiv
Ben B. schrieb im Beitrag #6450679: > startet den Transfer und bekommt 8 Bit > geliefert - wobei sich "ein Bit" auf die gesamte Busbreite (64 Bit) > bezieht. Heißt das, dass jede Taktflanke 64 Bit liefert. Das würde bedeuten der interne Speicherbus ist
-
Thread
RAM mit der höchsten Datenrate je IO.
steht gleich auf der ersten Seite des Datenblatts: Data Rate = 1866MT/s MT steht für "Mega-Transfer". Also 1866 Mbit/s pro IO. 1866MByte/s pro Baustein mit 8 IOs. Aber wenn dir die Pins am FPGA ausgehen: hast du dann noch die rund 20 Pins übrig, die du für Commands und Adressen des Bausteins
> steht gleich auf der ersten Seite des Datenblatts: Data Rate = 1866MT/s > MT steht für "Mega-Transfer". Also 1866 Mbit/s pro IO. 1866MByte/s pro > Baustein mit 8 IOs. Nein, der hat deutlich mehr als 8 IOs. Wenn der nur 8 IOs hätte könnte ich davon 5 Stück an eine Bank anschließen. Hier kann ich
-
Thread
Wann muss die Spannung ganz genau stimmen?
apriori auf den Druck schließen. Somit hätte ich gedacht, dass hier auch nur wieder ein stabiler Transfer notwendig ist aber die absolute Spannung keine Rolle spielt. Bei der Temperatur ähnlich, wobei einige Sensoren da ja schon sehr genau an elektrischen Größen spezifiziert sind.
schrieb im Beitrag #4588769: > Somit hätte ich gedacht, > dass hier auch nur wieder ein stabiler Transfer notwendig ist aber die > absolute Spannung keine Rolle spielt. Doch, Thermoelemente und Pirani liefern absolute Spannungen. Jede Schwankung der Vergleichreferenz wirkt also direkt auf den Messwert
-
Thread
SPI - Buffer verändern - per Soft SPI
ein frage hätte ich noch: wie kann man am sinnvollsten feststellen, ob der serielle transfer im z.b. AVR2 durch ist? Also AVR2 muss es selber wissen, damit die daten bearbeitet werden können. Schauen ob PB2 (SS) auf high ist? Kann man das per interrupt auch rausfinden? also, mein transfer
-
Thread
Erstaunliche Folien für Layouts
Erfahrungen nicht aber ich war auch am Überlegen für Toner Transfer aber in der Bewertung sind oft schlechte weil die sich im Laser Drucker verwickelt haben.
Hallo Noy, soweit ich weiß, ist Folie für die Toner-Transfer-Methode sowieso nicht geeignet. Es wird doch immer von Katalogpapier geredet. Des Weiteren bat ich ja um Ink-Jet-Erfahrungen. Aber dein Hinweis auf die schlechten Bewertungen bzgl. Laser zeigt
-
Thread
Layoutprogramm mit "Auto-Bestückungsdruck"
Hallo zusammen ich habe am WE meine erste (Test-)Platine mit dem Toner-Transfer verfahren erstellt und das ging sehr gut (bis 0,15mm sind die Linien ultrascharf und zwar sehr zuverlässig, daunter wirds ein bisschen Glückssache, liegt aber am Drucker). Als Papier verwende ich
Schalplan einfach in ein Board verwandeln können 2.) Der Ausdruck des Programmes muss Toner-Transfer-Methode geeignet sein 3.) Was ich mich sehr wünsche ist eine Auto-Bestückungsdruck Funktion, also eine Funktion die mir automatisch noch die andere Seite der Platine, halt die mit den Beschriftungen