Перейти к содержанию
    

Пришелец

Участник
  • Постов

    186
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Пришелец


  1. модем не всегда реагирует на +++ (переход в AT режим из TCP)

     

    все требования кажется выполняются

    паузы с обеих сторон по 0,5 сек плюсы передаются без задержек

     

    версия прошивки 8-ая

     

     

    Может кто сталкивался? :help:

  2. Добрый день! всем.

     

    Может быть кто-нибудь подскажет как реально использовать команду SEARCH ROM (например для термодатчиков DS1890)

     

    Понятно как это работает. Но непонятно как это использовать на практике.

    Т.е. как сопоставить найденный мастером датчик реальному (как определить какой он из множества подключенных)

     

    Единственное что приходит в голову - после установке системы бегать по всем датчикам с зажигалкой или отключать их по одному определяя номера датчиков.

    Но тогда проще, наверное, заранее считать номера и прописать их при настройке явно.

    Тогда вообще зачем команда поиска ПЗУ.

     

    Наверное я что-то не догоняю :unsure:

  3. Оказалось - атмеловский бутлоадер (с сайта) работает :)

     

    только без JTAGа

     

    При запуске его из под отладчика не хотят запускаться прерывания RSпорта и таймера (другими словами все разрешённые)

     

    Иногда наоборот возникают самопроизвольно нерарешённые прерывания :blink: после выполнения segmentinit()

     

    Прерывания разрешаются и в AIC и в самой перефирии

    флаг разрешения прерывания в USART установлен флаг приёма байта так же устанавливается при приёме байта а до АIC сигнал не доходит. Без JTAG всё работает.

     

     

    :help:

  4. Извините не очень понял - это ведь проект для AVR или не так?

    Но ведь он на С ;) Он состоит условно из четырех частей - инициализация периферии, прием по UART, расшифровка и запись во флеш. Первую, вторую и третью надо переписать. К счастью, они составляют примерно 10% от всего проекта. Как пример вполне сойдет.

     

     

    Мне казалось что наоборот вся специфика сосредоточена в записи во flash остальное в принципе у нас будет своё.

     

    брали готовые лоадеры - все они грохаются где-то на REMAPE

  5. А нет чего нибудь попроще. В идеале - ознакомительный пример какой-нибудь примитивный

    но рабочий :unsure:

    AVR231 - AES bootloader. Не считатая портирования UART останется только заменить spm.h и spm.s90 на прилагаемые и выкинуть запись в eeprom. Вроде больше ничего править там не нужно...

     

     

    Извините не очень понял - это ведь проект для AVR или не так?

  6. Подскажите пожалуйста bootloader для AT91SAM7s256 :help:

    желательно не встраиваемый в приложение

     

    планируется его переработка - загрузка приложения из внешней DATAFLASH.

    Приложение на основе FREERTOS.

    U-boot

    мне тя жаль, если начнеш его переписывать, он паршиво документирован и через-чур мудренно сконструирован... уже с ним столкнулся...

    хотя неофициальная сегодняшняя версия 1.2.0 получше постоена уже...

    в ней даже легче чтото искать стало по сравнению с 1.1.6

     

     

    Посмотрел я и мне то же стало сразу жаль себя - разбраться год наверное в нём надо

    а если ещё и адаптировать то вообще можно загнуться. :maniac:

     

    А нет чего нибудь попроще. В идеале - ознакомительный пример какой-нибудь примитивный

    но рабочий :unsure:

  7. Всем спасибо!

     

    Но дело было вот в чём:

    AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0,1,13,6);

     

    этой ф-ции в качестве параметра нужен номер канала

    а AT91C_PWMC_CHID0 это маска бита данного канала т.е. 1<<0 (настраивался первый канал вместо нулевого)

     

    AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC,0,1,13,6); так всё работает

  8. Может кто сталкивался - не хочет генерить на ножку - зараза

     

        //* Configure PMC by enabling PWM clock
            AT91F_PWMC_CfgPMC ();    
        AT91F_PWMC_StopChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0);
    //    AT91C_BASE_PWMC->PWMC_MR = (( 0 << 8 ) | 13);
        AT91F_PWMC_CfgChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0,1,13,6);
        AT91F_PWMC_StartChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID0);
            Tmp = AT91C_BASE_PWMC->PWMC_ISR;
            Tmp = Tmp;    
        //* Enabling a PWM output through the PIO
            AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA,  AT91C_PA0_PWM0, 0);

  9. Проблема оказалась вот в чём:

     

    RTOS компилируется в THUMB инструкциях (в арм почему то не работает - не разбирался)

    но прерывания у неё описываются в АРМ инструциях

     

     

    ф-ция прерывания от таймера была на С соответственно в THUMB

     

    поставил _arm перед объявлением обработчика и всё пошло!!!

  10. Стандартный иаровский проект Free Rtos

     

    - нормально компилируется - запускается и работает во Flash

     

    При Resete его из отладчика (команда меню Reset)

     

    Он переходит опять на вектор сброса и нормално выполняет всё до вызова ф-ции __segment_init

     

    ; Initialize segments.
    ; __segment_init is assumed to use
    ; instruction set and to be reachable by BL from the ICODE segment
    ; (it is safest to link them in segment ICODE).
            ldr    r0,=__segment_init
                    mov     lr, pc
            bx    r0

     

    при попытке её вызова он оказывается в обработчике прерывания

    AT91F_Default_IRQ_handler
                b     AT91F_Default_IRQ_handler

     

     

    При выходе из отладчика и новой заливке программы нормально работает.

    ПРи резете из отладчика опять то же самое.

     

     

    В чём может быть дело???

     

    При старте кода без отладчика программа работает

  11. AT91C_BASE_AIC->AIC_EOICR = 0; стоит такая штука уже

     

     

    static void prvSetupHardware( void )
    {
        /* When using the JTAG debugger the hardware is not always initialised to
        the correct default state.  This line just ensures that this does not
        cause all interrupts to be masked at the start. */
        AT91C_BASE_AIC->AIC_EOICR = 0;
        
        /* Most setup is performed by the low level init function called from the
        startup asm file. */
    
        /* Configure the PIO Lines corresponding to LED1 to LED4 to be outputs as
        well as the UART Tx line. */
        AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, LED_MASK | (1<<1) | (1<<27) | (1<<24));
        
        /* Enable the peripheral clock. */
        AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA );
    
    
    
    }

  12. да асм обёртка есть :

     

    vTimerISREntry:
    
        portSAVE_CONTEXT        ; Save the context of the current task.
    
        bl    timer0_c_irq_handler            ; Call the ISR routine.
    
        portRESTORE_CONTEXT        ; Restore the context of the current task -
                                ; which may be different to the task that
                                ; was interrupted.

     

     

     

    вот обработчик на C:

     

    void timer0_c_irq_handler(void)
    {
        AT91PS_TC TC_pt = AT91C_BASE_TC0;
        unsigned int dummy;
        //* Acknowledge interrupt status
        dummy = TC_pt->TC_SR;
        //* Suppress warning variable "dummy" was set but never used
        dummy = dummy;
    //    count_timer0_interrupt++;
        //* Read the output state
        vParTestToggleLED(3);
    }

     

     

    Настройка таймера и прерываний:

     

     

    void soft_uart_ini(void)
    {
          unsigned int dummy;
              portENTER_CRITICAL();
            {
            
            //* First, enable the clock of the TIMER
                AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1<< AT91C_ID_TC0 );
    
            //* Disable the clock and the interrupts
            AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS;
            AT91C_BASE_TC0->TC_IDR = 0xFFFFFFFF;
    
            //* Clear status bit
                dummy = AT91C_BASE_TC0->TC_SR;
            //* Suppress warning variable "dummy" was set but never used
                dummy = dummy;
            //* Set the Mode of the Timer Counter
            AT91C_BASE_TC0->TC_CMR = 4;
        
            //* Enable the clock
            AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN;
            
        AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC0, TIMER0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, vTimerISREntry);
        AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;  //  IRQ enable CPC
        AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);
    
        AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG;
        
            }
            portEXIT_CRITICAL();
    }

     

     

     

    Ни светодиодом не моргает ни на точках останова не останавливается.

  13. arm AT91sam7s256 + FREERTOS :help:

     

    Пытаюсь использовать прерывания от таймера 0. - прерывания не возникают :blink:

     

    настраиваю таймер и AIC как в IAR овском примере проекта с прерываниями (который без RTOS на плате работает)

     

    В чём могут быть грабли :unsure: - подскажите кто знает

     

    Заранее спасибо! :biggrin:

  14. arm AT91sam7s256 + FREERTOS :help:

     

    Пытаюсь использовать прерывания от таймера 0. - прерывания не возникают. :unsure:

     

    настраиваю таймер и AIC как в IAR овском примере проекта с прерываниями (который без RTOS на плате работает)

     

    В чём могут быть грабли :blink: - подскажите кто знает

     

    Заранее спасибо! :)

×
×
  • Создать...