kostyan1 0 5 октября, 2011 Опубликовано 5 октября, 2011 · Жалоба Народ, подкиньте пожалуйста пример ЧТЕНИЯ из SSC через DMAC, если у кого есть. :blink: В поставке иара идет пример, но он на запись. Пробовал его на чтение приспособить - ну никак не получается. По прерыванию ацп ADS1274 читать получается, но хотелось бы таки через DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 5 октября, 2011 Опубликовано 5 октября, 2011 · Жалоба никак не получается Что именно не получается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kostyan1 0 5 октября, 2011 Опубликовано 5 октября, 2011 · Жалоба Не попадаю в прерывание HDMA_IrqHandler, хотя настроил прием на несколько байт, а прием идет постоянно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 5 октября, 2011 Опубликовано 5 октября, 2011 · Жалоба Пример настройки: typedef struct DMA_DSCR { void *saddr; void *daddr; u_int ctrla; u_int ctrlb; struct DMA_DSCR *dscr; } DMA_DSCR; #pragma arm section zidata = "extsram" __align(4) u_char audio_buffers[AUDIO_BUFFERS][AUDIO_BUFFER_SIZE]; #pragma arm section zidata DMA_DSCR audio_dscrs[AUDIO_BUFFERS]; //****************************************************************************** //* #define AUDIO_DMA_CTRLA (AT91C_HDMA_DST_WIDTH_WORD | AT91C_HDMA_SRC_WIDTH_WORD | \ AT91C_HDMA_DCSIZE_4 | AT91C_HDMA_SCSIZE_1 | (AUDIO_BUFFER_SIZE / 4)) #define AUDIO_DMA_CTRLB (AT91C_HDMA_FC_PER2MEM | AT91C_HDMA_SRC_ADDRESS_MODE_FIXED | AT91C_HDMA_SRC_DSCR_FETCH_DISABLE) void audio_start_dma(void) { u_int a; *AT91C_HDMA_CHDR = AT91C_HDMA_ENA0 << AUDIO_DMA_CH; for(a = 0; a < AUDIO_BUFFERS; a++) { audio_dscrs[a].saddr = (void *)AT91C_SSC0_RHR; audio_dscrs[a].daddr = audio_buffers[a]; audio_dscrs[a].ctrla = AUDIO_DMA_CTRLA; audio_dscrs[a].ctrlb = AUDIO_DMA_CTRLB; audio_dscrs[a].dscr = (a == (AUDIO_BUFFERS - 1)) ? &audio_dscrs[0] : &audio_dscrs[a + 1]; } AT91C_BASE_HDMA->HDMA_CH[AUDIO_DMA_CH].HDMA_SADDR = (u_int)audio_dscrs[AUDIO_BUFFERS - 1].saddr; AT91C_BASE_HDMA->HDMA_CH[AUDIO_DMA_CH].HDMA_DADDR = (u_int)audio_dscrs[AUDIO_BUFFERS - 1].daddr; AT91C_BASE_HDMA->HDMA_CH[AUDIO_DMA_CH].HDMA_CTRLA = audio_dscrs[AUDIO_BUFFERS - 1].ctrla; AT91C_BASE_HDMA->HDMA_CH[AUDIO_DMA_CH].HDMA_CTRLB = audio_dscrs[AUDIO_BUFFERS - 1].ctrlb; AT91C_BASE_HDMA->HDMA_CH[AUDIO_DMA_CH].HDMA_DSCR = (u_int)audio_dscrs[AUDIO_BUFFERS - 1].dscr; AT91C_BASE_HDMA->HDMA_CH[AUDIO_DMA_CH].HDMA_CFG = AT91C_HDMA_FIFOCFG_HALFFIFO | AT91C_HDMA_AHB_PROT | AT91C_HDMA_SOD | AT91C_HDMA_SRC_H2SEL_HW | SSC_RX_DMA_IF_NUM; *AT91C_HDMA_EBCIER = (AT91C_HDMA_BTC0 << AUDIO_DMA_CH) | (AT91C_HDMA_ERR0 << AUDIO_DMA_CH); *AT91C_HDMA_CHER = AT91C_HDMA_ENA0 << AUDIO_DMA_CH; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kostyan1 0 6 октября, 2011 Опубликовано 6 октября, 2011 · Жалоба Однако шведские индусы меня обманули :( По ихнему хедеру работает только нулевой канал DMA. Не могли бы вы, уважаемый aaarrr, скинуть свой файл, где определено всё это дело AT91C_BASE_HDMA->HDMA_CH, в иаре сиё называется AT91SAM3U4_H? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 6 октября, 2011 Опубликовано 6 октября, 2011 · Жалоба Вот он: AT91SAM3U4.zip Точно работает не только нулевой канал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kostyan1 0 6 октября, 2011 Опубликовано 6 октября, 2011 · Жалоба Ага спасибо большое. А где взяли файло если не секрет? в моем хедере тупо не было AT91_REG HDMA_SPIP; // HDMA Channel Source Picture in Picture Configuration Register AT91_REG HDMA_DPIP; // HDMA Channel Destination Picture in Picture Configuration Register AT91_REG HDMA_BDSCR; // HDMA Reserved AT91_REG HDMA_CADDR; // HDMA Reserved Оно вообщето таких регистров и в описании на проц нету, я просто заглушку из 4х пустых регистров добавил. Ну и спасибо за код, взял его за основу + поправил хеадер = заработало так как мне нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 6 октября, 2011 Опубликовано 6 октября, 2011 · Жалоба Ага спасибо большое. А где взяли файло если не секрет? Если ничего не путаю, файл взят из огромного software pack непосредственно у атмела. Но это единственная полезная его часть :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться