Jump to content

serg123

Members
  • Content Count

    646
  • Joined

  • Last visited

Community Reputation

53 Обычный

About serg123

  • Rank
    Завсегдатай

Информация

  • Пол
    Мужчина
  • Город
    Уварово

Электроника

  • Стаж в электронике
    6-10 лет

Recent Profile Visitors

4300 profile views
  1. Ясно буду разбираться.
  2. Перед началом рабы DMA устанавливается бит SPI1INTFbits.SPI1TXUIF = 1; в общем заказал логический анализатор надо посмотреть что там вообще происходит.
  3. Начал тестить по такой инициализации DMA void DMA1_Initialize(void) { /* stop and clear DMA 1 */ // DMA1CON0 = 0; /* configure DMA 1 */ /* 1. Program the appropriate Source and Destination addresses for the * transaction into the DMAxSSA and DMAxDSA registers */ DMA1SSA = (uint24_t) & SrcVarName0[0]; /* source address */ DMA1DSA = (uint24_t) & SPI1TXB; /* destination address */ /* 2. Select the source memory region that is being addressed by DMAxSSA * register, using the SMR<1:0> bits. */ DMA1CON1bits.SMR = 0b00; /* source pointer points to GPR space */ /* 3. Program the SMODE and DMODE bits to select the addressing mode. */ DMA1CON1bits.SMODE = 0b01; /* source is incremented after each transfer completion */ DMA1CON1bits.DMODE = 0b00; /* destination remains unchanged after each transfer completion */ /* 4. Program the Source size DMAxSSZ and Destination size DMAxDSZ * registers with the number of bytes to be transferred. It is recommended * for proper operation that the size registers be a multiple of each other. */ DMA1SSZ = 9; /* source transfer size is size of array */ DMA1DSZ = 1; /* destination size 1 */ /* 5. If the user desires to disable data transfers once the message has * completed, then the SSTP and DSTP bits in DMAxCON0 register need to be set */ DMA1CON1bits.SSTP = 1; /* SIRQEN bit is cleared when source counter reloads */ DMA1CON1bits.DSTP = 0; /* SIRQEN bit is not cleared when Destination Counter reloads */ /* 6. If using hardware triggers for data transfer, setup the hardware * trigger interrupt sources for the starting and aborting DMA transfers * (DMAxSIRQ and DMAxAIRQ), and set the corresponding interrupt request * enable bits (SIRQEN and AIRQEN). */ DMA1SIRQ = 21; /* HW trigger is SPI1TX */ DMA1AIRQ = 0; /* none */ /* enable hardware source trigger */ DMA1CON0bits.DMA1SIRQEN = 0; //PIE2bits.DMA1SCNTIE = 1; // Enable Source Count 0 Interrupt //PIE2bits.DMA1SCNTIE = 0; //DMA1_SetSCNTIInterruptHandler(DMA1_DefaultInterruptHandler); // PIR2bits.DMA1SCNTIF = 0; // Clear Source Count Interrupt Flag bit PIE2bits.DMA1SCNTIE = 0; // Disable Source Count Interrupt PIR2bits.DMA1AIF = 0; // Clear abort Interrupt Flag bit PIR2bits.DMA1ORIF = 0; // Clear overrun Interrupt Flag bit // // Can use DMAxDCNTIF to signal when DMA x transfer is complete PIR2bits.DMA1DCNTIF = 0; // Clear Destination Count Interrupt Flag bit PIE2bits.DMA1DCNTIE = 0; // Disable Destination Count 0 Interrupt // PIE2bits.DMA1AIE = 0; // Disable abort Interrupt PIE2bits.DMA1ORIE = 0; // Disable overrun Interrupt // /* 7. Select the priority level for the DMA * (see Section 3.1 ?System Arbitration?) and lock the priorities * (see Section 3.1.1 ?Priority Lock?) * 0 being the highest priority and 4 being the lowest priority. */ m_ARBITER_UNLOCK(); /* unlock Arbiter settings */ MAINPR = 3; ISRPR = 2; DMA1PR = 0; DMA2PR = 1; SCANPR = 4; m_ARBITER_LOCK(); /* lock Arbiter settings */ /* 8. Enable the DMA (DMAxCON0bits. EN = 1) */ DMA1CON0bits.EN = 1; /* 9. If using software control for data transfer, set the DGO bit, * else this bit will be set by the hardware trigger. */ DMA1CON0bits.DGO = 1; /* * DMA Transfer is started with * MA1CON0bits.DMA1SIRQEN = 1; */ } Старт передачи пакета void SendPktToSlave(void) // Enable DMA1 to send a full data packet according to DMA1SSZ size { PIE2bits.DMA1SCNTIE = 1; // Enable Source Count 0 Interrupt DMA1CON0bits.SIRQEN = 1; // Start of Transfer Interrupt Request Enable DMA_Busy = 1; // признак занятости шины } И прерывание по завершению передачи пакета void __interrupt (irq(IRQ_DMA1SCNT)) DMA1Complete(void) //Enabled 10-Jul-2019 { // ------- DMA 1 DCount = 0 Interrupt (DMA - SPI1 Transfer is complete) ------------------------ DMA_Busy = 0; PIR2bits.DMA1SCNTIF = 0; // Clear Destination Count Interrupt Flag bit PIE2bits.DMA1SCNTIE = 0; // Disable Destination Count 0 Interrupt } Так вот при этом не срабатывает прерывание.
  4. Привет народ, собираю проект с использованием дисплея ILI9341 и PIC18F47k42. Сейчас все работает просто через SPI. Так вот вопрос, никто не использовал похожую связку с использованием DMA? И еще скорее всего у меня проблема в этом можно ли передавать команды просто по SPI, а данных по DMA не отключая модуль DMA.
  5. Где то на просторах инета, уже точно не помню где. Один человек считывал все возможные регистры для чтения из RDA5807, там правда говорилось, что в 10h регистре хранится уровень ошибок, но анализируя поведение данного регистра, это не совсем так, больше похоже на индикатор rssi но для RDS сигнала.
  6. В новых ревизиях вроде должны добавить определение ошибок в блоках данных, но пока новые описания никто не виде
  7. ОК вот https://pichobby.lg.ua/shemu/sound.html Ну это от местности зависит если у меня RDS начинает принематся на уровне RSSI больше 45, то у baza3812, он мне сильно помог с настройкой алгоритма, больше 70. И при чтениееи данных стоит посамтривать на регистр 10h, он не указан в описании но вполне себе считывается. И в его битах с 11 по 8 заложена информация о качестве RDS не об ошибках, а качестве. Так вот если там о то считывание RDS вразы улучшается.
  8. Не поверите у меня RDS в pic16f88 влез со всем функционалом RDA5807, да и насчет требовательности сигнала, оказываете есть ключик немного упрощающий данный процесс.
  9. Особо прав по удолению кроме личных сообщений мало у кого есть, либо это косяк с тормознутостью интернета. В общем на работе учителя выстовляют оценки в журнал они вроде есть,, а строницу обновляешь глядь их уже нету.
  10. Как то ну очень давно собирался такой стробоскоп с возможностью управлением от музыки, все прекрасно работало.
  11. Датчик холла можно попроще какой-нибудь цифровой типа A3144 , если используются клапана, то там электромагнит, данный датчик в теории при срабатывании клапана тоже должен будет сработать.
  12. У вас есть шунт, не хотите использовать его сделайте токовые трансформаторы тока примеров в инете по его расчетам полно https://rustaste.ru/raschet-transformatora-toka.html, ну а дальше можно и сам ток посмотреть, а используя компаратор отследить включение. Изначально я предлагал оптопару, подключите ее на стороне нагрузке на стороне вторичного питания где ни будь, оптопара включилась устройство работает.
  13. Цветной да, но там еще ему и скорость передачи данных нужна. Меня на подобный дисплейчик в своем проекте baza3812 уламывает, кстати если память не изменяет там нет проблемы с засветкой по краям. Кстати как у вас успехи с RDS?
×
×
  • Create New...