Jump to content

    

jenya7

Участник
  • Content Count

    2349
  • Joined

  • Last visited

Community Reputation

0 Обычный

About jenya7

  • Rank
    Гуру

Recent Profile Visitors

5432 profile views
  1. Если вы делаете загрузчик то проект должен быть сконфигурирован как Dual Boot Image. тогда у вас сгенерируются output_file_cfm0_auto.rpd и output_file_cfm1_auto.rpd  - соответствено CFM0 и CFM1. и посмотрите map файл. там описанны все секции и адреса.
  2. да в модельсиме я не сомневаюсь. только когда начинаешь прогонять в реальном железе появляются сюрпризы. я сразу ставлю сигнал тап и он мне все показывает.
  3. да отладки ради. хочу увидеть что счетчик инкрементируется. не вижу. правда сигнал тап не показывает частоту на внешнем пине но у него это бывает, на скопе я частоту вижу.
  4. ну для начала я хочу увидеть на сигнал тап что meas_counter инкрементируется. как говорится ешь корову маленькими кусками. я немного переписал process(FREQ_IN, reset) begin if (FREQ_IN'event and FREQ_IN = '1') then f_count <= f_count + '1'; end if; if (reset = '1') then f_count <= (others=>'0'); end if; end process; скажем при reset = 0 я должен увидеть как каунтер инкрементируется?
  5. интересно а это должно работать если частота больше тактирующей частоты? process(meas_freq) begin if (rising_edge(meas_freq)) then meas_counter <= meas_counter + "1"; if (Redge = '1') then -- Передним фронтом нашего длинного сигнала meas_counter <= (others => '0'); -- Сбрасываем счетчик (подготсвливаем для счета) end if; end if; end process; у меня FPGA клокируется от осцилятора 30 мега а на ножку приходит 100 мега.
  6. да я понимаю какой становиться переменная. но зачем объявлять ее снаружи если она используется только в этой функции и должна сохранять свое значение?
  7. и что? в чем проблема? умники великие.
  8. ой. это с циклом while. я ушел от него. uint8_t ResponseFromTube(uint8_t tube_id) { static uint32_t no_ack_timeout; static uint32_t resp_timeout; uint32_t bit_progress_timeout; static uint8_t st_count = 0; uint8_t result; uint8_t task_done = 0; //no_ack_timeout = globalSysTimer + (g_sfGcpcon[noAck] * 1000); //resp_timeout = globalSysTimer + (g_sfGcpcon[rqpRto] * 1000); switch (tube_state) { case ST_IDLE : no_ack_timeout = globalSysTimer + (g_sfGcpcon[noAck] * 1000); resp_timeout = globalSysTimer + (g_sfGcpcon[rqpRto] * 1000); st_count = 0; tube_state = ST_CAN_RX; break; case ST_CAN_RX : if (globalSysTimer >= bit_progress_timeout) { bit_progress_timeout = globalSysTimer + 1000; write_bit_process(st_count); st_count++; if (st_count > 5) st_count = 0; } canbus_receive_one_channel(tube_id); if (globalSysTimer < no_ack_timeout) { //и так далее } break; } } no_ack_timeout должна быть глобальной так почему ее не сделать статической в функции?
  9. к примеру uint8_t ResponseFromTube(uint8_t tube_id) { static uint32_t no_ack_timeout; static uint32_t resp_timeout; static uint32_t bit_progress_timeout; static uint8_t st_count = 0; uint8_t result; uint8_t task_done = 0; no_ack_timeout = globalSysTimer + (g_sfGcpcon[noAck] * 1000); resp_timeout = globalSysTimer + (g_sfGcpcon[rqpRto] * 1000); switch (tube_state) { case ST_CAN_RX : if (globalSysTimer >= bit_progress_timeout) { bit_progress_timeout = globalSysTimer + 1000; write_bit_process(st_count); st_count++; if (st_count > 5) st_count = 0; } canbus_receive_one_channel(tube_id); if (globalSysTimer < no_ack_timeout) { //и так далее } break; } } при каждом вхождении в функцию мне нужны предыдущие значения
  10. ну я имею ввиду что только эта функция использует переменную. IAR, VxWorks достаточно профессиональные, но у них периодически отсыхает индексация.
  11. вот и прекрасно. пусть создаются. если я оперирую глобальной переменной и мне да нужно сохранять предыдущее результаты и это однопоточное приложение - почему переменную не сделать статической в функции? на больших проектах часто бывает что я бегаю по коду ищу где эта переменная, ее тип, а так все под рукой.
  12. Реентерабельность? Что это значит? Ну есть случаи когда глобальные переменные неизбежны.
  13. В последнее время увлекся использованием статических переменных в функции. Очень удобно - повышается переносимость функции из проекта в проект, повышается читаемость функции - видишь какими переменными она оперирует. Но я как то не встречал проектов изобилующих статическими переменными в функции. Есть какие то подводные камни?
  14. Оптимизация ломает проект.

    объявлял как угодно и volatile и static и вместе и раздельно, не помогло. из main() бутовой секции я иду в main() програмы.
  15. Оптимизация ломает проект.

    что вы называете внутрисхемной отладкой?