Jump to content

gc986

Members
  • Content Count

    18
  • Joined

  • Last visited

Community Reputation

0 Обычный

About gc986

  • Rank
    Новенький

Контакты

  • ICQ
    1234567890

Информация

  • Пол
    Мужчина
  • Город
    Екб

Электроника

  • Стаж в электронике
    Не связан с электроникой
  1. Оживлю эту тему чтобы не плодить новых. Рассматриваю модель мультивибратора, всё очень красиво и вроде как понятно, НО почему при разрядке конденсатора C1 на базу транзистора Q2 не поступает ток? И почему после зарядки конденсатора C2 ток на базу транзистора Q1 не может дальше поступать через резистор с номиналом 1k? Модель: http://www.falstad.com/circuit/circuitjs.html?cct=$+1+0.000005+8.281975887399955+50+5+50%0Aw+192+80+272+80+0%0Aw+272+80+352+80+0%0Aw+352+80+432+80+0%0Ar+192+80+192+208+0+330%0Ar+272+80+272+208+0+1020%0Ar+352+80+352+208+0+1020%0Ar+432+80+432+208+0+320%0Ac+192+208+272+208+0+0.000018+0.6203405592475093%0Ac+352+208+432+208+0+0.000018+-3.128908239425969%0Aw+432+208+432+272+0%0At+352+288+432+288+0+1+-4.393118962054482+-0.5988027240796513+100%0Aw+272+208+352+288+0%0Aw+352+208+272+288+0%0At+272+288+192+288+0+1+0.6438701633810034+0.6654079985488615+100%0Aw+192+208+192+272+0%0AR+192+80+144+80+0+0+40+5+0+0+0.5%0Ag+192+304+192+336+0%0Ag+432+304+432+336+0%0Ax+223+244+243+247+0+16+C1%0Ax+381+245+401+248+0+16+C2%0Ax+160+292+181+295+0+16+Q1%0Ax+446+294+467+297+0+16+Q2%0Ao+13+64+6+35+5+0.00009765625+0+-1%0Ao+10+64+6+35+5+0.00009765625+1+-1%0A
  2. Какие могут быть вопросы, после своего же ответа? Но это же не круто! Я реализовал приложение в котором циклично перебирается два канала, каждый раз происходит перенастройка на новый канал, в результате производительность падает. Это нормальная практика или я что-то не правильно делаю?
  3. Есть чип NXP LPC1788. Есть пример программы где в начале происходит инициализация второго канала, далее в цикле происходит обращение к функции считывания (ADC) данных с порта, но при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос - можно ли одновременно работать с несколькими каналами или каждый раз придётся перенастраивать систему на новый канал? (хочется одновременно работать со всеми)
  4. Разобрался. Программа работает исправно и датчик подключён правильно. Терминал, которым я пользовался, выводил UART буфер на экран слишком медленно, стал использовать терминал на планшете и всё полетело
  5. Как-то разобрался, пример на просторах сети нашёл. Объясните пожалуйста, почему значение на порте регистрируется только при первом запуске приложения, далее данные одни и те же (данные передаются с помощью UART на компьютер)?: /********************************************************************** * $Id$ Uart_Autobaud.c 2011-06-02 *//** * @file Uart_Autobaud.c * @brief This example describes how to configure UART using auto-baud * rate in interrupt mode * @version 1.0 * @date 02. June. 2011 * @author NXP MCU SW Application Team * * Copyright(C) 2011, NXP Semiconductor * All rights reserved. * *********************************************************************** * Software that is described herein is for illustrative purposes only * which provides customers with programming information regarding the * products. This software is supplied "AS IS" without any warranties. * NXP Semiconductors assumes no responsibility or liability for the * use of the software, conveys no license or title under any patent, * copyright, or mask work right to the product. NXP Semiconductors * reserves the right to make changes in the software without * notification. NXP Semiconductors also make no representation or * warranty that such application will be suitable for the specified * use without further testing or modification. **********************************************************************/ #include "lpc177x_8x_uart.h" #include "lpc177x_8x_pinsel.h" #include "debug_frmwrk.h" #include "bsp.h" #include "lpc177x_8x_gpdma.h" #include "lpc177x_8x_adc.h" /* Example group ----------------------------------------------------------- */ /** @defgroup ADC_DMA ADC DMA * @ingroup ADC_Examples * @{ */ /************************** PRIVATE DEFINITIONS *************************/ /** DMA size of transfer */ #define DMA_SIZE 1 /************************** PRIVATE VARIABLES *************************/ uint8_t menu1[] = "***********************************************************************\n\r" " Hello NXP Semiconductors \n\r" " ADC DMA example \n\r" "\t - MCU: LPC177x_8x \n\r" "\t - Core: ARM CORTEX-M3 \n\r" "\t - Communicate via: UART0\1\2 - 115200bps \n\r" " DMA testing : ADC peripheral to memory\n\r" " Use ADC with 12-bit resolution rate of 400KHz\n\r" " The ADC value is handled by DMA function\n\r" " The content here is displayed by UART interface\n\r" " Turn the potentiometer to see how ADC value changes\n\r" "***********************************************************************\n\r"; /* Terminal Counter flag for Channel 0 */ __IO uint32_t Channel0_TC; /* Error Counter flag for Channel 0 */ __IO uint32_t Channel0_Err; /************************** PRIVATE FUNCTION *************************/ void DMA_IRQHandler (void); void print_menu(void); /*----------------- INTERRUPT SERVICE ROUTINES --------------------------*/ /*********************************************************************//** * @brief GPDMA interrupt handler sub-routine * @param[in] None * @return None **********************************************************************/ void DMA_IRQHandler (void) { // check GPDMA interrupt on channel 0 if (GPDMA_IntGetStatus(GPDMA_STAT_INT, 0)) { // Check counter terminal status if(GPDMA_IntGetStatus(GPDMA_STAT_INTTC, 0)) { // Clear terminate counter Interrupt pending GPDMA_ClearIntPending (GPDMA_STATCLR_INTTC, 0); Channel0_TC++; } // Check error terminal status if (GPDMA_IntGetStatus(GPDMA_STAT_INTERR, 0)) { // Clear error counter Interrupt pending GPDMA_ClearIntPending (GPDMA_STATCLR_INTERR, 0); Channel0_Err++; } } } /*-------------------------PRIVATE FUNCTIONS------------------------------*/ /*********************************************************************//** * @brief Print menu * @param[in] None * @return None **********************************************************************/ void print_menu(void) { _DBG(menu1); } void GPIO_Configuration(void); /*In <debug_frmwrk. H >file can choose to a serial port*/ int main(void) { GPDMA_Channel_CFG_Type GPDMACfg; uint32_t adc_value, tmp; debug_frmwrk_init(); _printf("Welcome to use Open1768 development board\r\n"); /* Initialize debug via UART0 * 115200bps * 8 data bit * No parity * 1 stop bit * No flow control */ debug_frmwrk_init(); // print welcome screen print_menu(); /* Initialize ADC ----------------------------------------------------*/ /* Settings for AD input pin */ PINSEL_ConfigPin (BRD_ADC_PREPARED_CH_PORT, BRD_ADC_PREPARED_CH_PIN, BRD_ADC_PREPARED_CH_FUNC_NO); /* Configuration for ADC : * ADC conversion rate = 400KHz */ ADC_Init(LPC_ADC, 400000); ADC_IntConfig(LPC_ADC, BRD_ADC_PREPARED_INTR, ENABLE); ADC_ChannelCmd(LPC_ADC, BRD_ADC_PREPARED_CHANNEL, ENABLE); /* GPDMA block section -------------------------------------------- */ /* Disable GPDMA interrupt */ NVIC_DisableIRQ(DMA_IRQn); /* preemption = 1, sub-priority = 1 */ NVIC_SetPriority(DMA_IRQn, ((0x01<<3)|0x01)); /* Initialize GPDMA controller */ GPDMA_Init(); // Setup GPDMA channel -------------------------------- // channel 0 GPDMACfg.ChannelNum = 0; // Source memory - unused GPDMACfg.SrcMemAddr = 0; // Destination memory GPDMACfg.DstMemAddr = (uint32_t) &adc_value; // Transfer size GPDMACfg.TransferSize = DMA_SIZE; // Transfer width - unused GPDMACfg.TransferWidth = 0; // Transfer type GPDMACfg.TransferType = GPDMA_TRANSFERTYPE_P2M; // Source connection GPDMACfg.SrcConn = GPDMA_CONN_ADC; // Destination connection - unused GPDMACfg.DstConn = 0; // Linker List Item - unused GPDMACfg.DMALLI = 0; GPDMA_Setup(&GPDMACfg); /* Reset terminal counter */ Channel0_TC = 0; /* Reset Error counter */ Channel0_Err = 0; /* Enable GPDMA interrupt */ NVIC_EnableIRQ(DMA_IRQn); while (1) { // Enable GPDMA channel 0 GPDMA_ChannelCmd(0, ENABLE); ADC_StartCmd(LPC_ADC, ADC_START_NOW); /* Wait for GPDMA processing complete */ while ((Channel0_TC == 0)); // Disable GPDMA channel 0 GPDMA_ChannelCmd(0, DISABLE); //Display the result of conversion on the UART _printf("ADC value on channel "); _DBD(BRD_ADC_PREPARED_CHANNEL); _printf(" is: "); _DBD32(ADC_DR_RESULT(adc_value)); _printf("\r\n"); // Wait for a while for(tmp = 0; tmp < 1000000; tmp++); /* GPDMA Re-setup */ GPDMA_Setup(&GPDMACfg); /* Reset terminal counter */ Channel0_TC = 0; /* Reset Error counter */ Channel0_Err = 0; } ADC_DeInit(LPC_ADC); return 1; } #ifdef DEBUG /******************************************************************************* * @brief Reports the name of the source file and the source line number * where the CHECK_PARAM error has occurred. * @param[in] file Pointer to the source file name * @param[in] line assert_param error line source number * @return None *******************************************************************************/ void check_failed(uint8_t *file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */ while(1); } #endif /* * @} */ AD.zip
  6. Для меня очевидно использовать фрагменты вместе с NavigationDrawer при разработке для Android, а здесь чип, среда разработки Keil, читаю Datasheet и ни одной команды. К сожалению примера по аналоговому входу нет, только работа с портами в цифровом режие.
  7. В документации от производителя не пробовали поискать ? Впервые связался с микроконтроллерами, просто не знаю что искать.
  8. Всем привет Как работать с аналоговыми портами в NXP LPC1788?? Знаю как в Arduino сконфигурировать аналоговый порт (объявляем и собственно работаем), а где почитать про данную тему для 1788 так и не нашёл. Хочу подключит датчик света.
  9. Один порт - группа пинов. У процессора LPC1788FBD208, например, 5 портов по 32 пина в каждом и шестой порт с пятью пинами. Спасибо! Случайно не встречали документацию на русском для 1788?
  10. Порту соответствует группа пинов или одному порту соответствует один пин?
  11. Да, именно. А как он узнаёт от какого адреса необходимо сдвигаться? Ведь каждый вывод имеет свой чёткий адрес в мк, или я что-то не правильно думаю? В Arduino всё просто, в начале инициализируем пин на вход или выход, причём указываем явно его номер (видимо адрес уже прописан в библиотеке).
  12. Всем привет. Я делаю первые шаги в освоении МК на примере nxp lpc1788, и возник следующий вопрос: Рассматриваю приложение которое мигает светодиодами в зависимости от того как пользователь нажмёт на джойстик или кнопку. При иницииализации GPIO указывается следующий код (для каждого вывода собственная строка) GPIO_SetDir(1, (1<<14), GPIO_DIRECTION_OUTPUT); Почему производится смещение? От какого адреса? При проверке нажатой клавиши тоже происходит смещение: if(!(GPIO_ReadValue(4) & (1<<26))) От какого адреса смещение??? Я наверно ничего не понимаю так специалищируюсь на Java для обычных пк, поэтому пожалуйста вразумите меня, что проиходит? Полный код прикрепляю. main.c.txt
  13. В ходе ряда тестов, пришёл к выводу что во всём виноват компилятор...
  14. А может сам программатор портить МК ??? Кто нибудь работает с программатором WizardProg77??
  15. Монтаж нормальный (тоже сначала на него стал грешить Видимо всётаки придётся протеус начать изучать для проверки прошивки... А кто нибудь знает кружки или общества (для любителей) где занимаются микроконтроллерами в Екатеринбурге??? хочется в живую пообщаться!
×
×
  • Create New...