-
Постов
792 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Весь контент serg123
-
Ясно, ну собственно определение ошибок тут только в двух блоках, а для еще двух надо корректор ошибок делать, но там для меня покрайней мере пока муть, или регистр 10h попробовать использовать но сильно лучше не станет. C SI4703 в этом плане попроще, там ошибки во всех блоках определяются. В общем нужен декодер ошибок.
-
Да есть такое, в общем все началось с экспериментов установки различных токов потребления усилителем rda5807. Самым хорошим оказался режим с током 2.5 мА, удалось поймать мощные станции из города расположенного за 70 км от меня. Но пришлось загнать мк в сон при этом, вот и родилась эта идейка с фильтром.
-
Может не стоит заморачиваться со светодиодом, показывал он стерео и ладно, к стати на счет улучшения качества приема. В RDA5807 есть встроенный антенный усилитель , так вот что то подсказывает что он широкополосный и ни кто не ставит входной полосовой фильтр на вход типа GFWB3 76-108 МГц. В общем заказал себе данные фильтры буду пробовать.
-
Перед началом рабы DMA устанавливается бит SPI1INTFbits.SPI1TXUIF = 1; в общем заказал логический анализатор надо посмотреть что там вообще происходит.
-
Начал тестить по такой инициализации 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 } Так вот при этом не срабатывает прерывание.
-
Привет народ, собираю проект с использованием дисплея ILI9341 и PIC18F47k42. Сейчас все работает просто через SPI. Так вот вопрос, никто не использовал похожую связку с использованием DMA? И еще скорее всего у меня проблема в этом можно ли передавать команды просто по SPI, а данных по DMA не отключая модуль DMA.
-
ОК вот https://pichobby.lg.ua/shemu/sound.html Ну это от местности зависит если у меня RDS начинает принематся на уровне RSSI больше 45, то у baza3812, он мне сильно помог с настройкой алгоритма, больше 70. И при чтениееи данных стоит посамтривать на регистр 10h, он не указан в описании но вполне себе считывается. И в его битах с 11 по 8 заложена информация о качестве RDS не об ошибках, а качестве. Так вот если там о то считывание RDS вразы улучшается.
-
Как то ну очень давно собирался такой стробоскоп с возможностью управлением от музыки, все прекрасно работало.
-
Датчик холла можно попроще какой-нибудь цифровой типа A3144 , если используются клапана, то там электромагнит, данный датчик в теории при срабатывании клапана тоже должен будет сработать.
-
У вас есть шунт, не хотите использовать его сделайте токовые трансформаторы тока примеров в инете по его расчетам полно https://rustaste.ru/raschet-transformatora-toka.html, ну а дальше можно и сам ток посмотреть, а используя компаратор отследить включение. Изначально я предлагал оптопару, подключите ее на стороне нагрузке на стороне вторичного питания где ни будь, оптопара включилась устройство работает.
-
Оптопара в помощь, дешево и сердито.