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

Вопросы от начинающих по МК


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Вопрос любителям Stm32. Пишу в эклипсе, так как привык к нему. Плагин для работы с STM называется system workbench for stm32. И всё вроде бы хорошо... Но вот отладка работает криво, а именно функция step over. Вместо того чтобы быстро перепрыгнуть к следующей функции, отладчик начинает перебирать все строки в ней, очень медленно, при этом в консоле появляется что то типа:

Info : halted: PC: 0x08000e0c

Info : halted: PC: 0x08000eb0

Info : halted: PC: 0x08000eb2

Info : halted: PC: 0x08000eb4

Info : halted: PC: 0x08000eb8

Info : halted: PC: 0x08000ebc

Info : halted: PC: 0x08000ebe

Info : halted: PC: 0x08000ec0

Info : halted: PC: 0x08000ec4

Info : halted: PC: 0x08000ec6

Можно и пару минут ждать пока прошагает( Конечно можно наставить миллион брейкпоинтов, но это не совсем выход. Никто с таким не сталкивался?

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

IMXO, благодарю, все получилось.

Правда, вопрос с подсчетом времени через jtag так и остался не решенным. вот, допустим, сделал я такой if, что пока преобразование не закончено, в переменную добавляется единичка, и она выводится на экран, а когда преобразование закончено, то в другом месте экрана выводится температура. так вот, переменная до 24 доходит. а сколько это времени?... как узнать? есть какой то простой способ?

Ссылка на комментарий
Поделиться на другие сайты

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Тренды и лучшие решения для разработки зарядных станций в России

К 2029 году в России прогнозируется увеличение числа зарядных станций до 40 000. При этом отечественный рынок электротранспорта имеет климатические, потребительские и географические особенности. Для успешной разработки и построения инфраструктуры станций заряда в России идеальным вариантом является использование решений и электронных компонентов китайских производителей – лидеров индустрии электротранспорта и возобновляемой энергетики, которые уже представлены в КОМПЭЛ. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

В целом - никак, контроллер не имеет в своём составе счетчика тактов, поэтому вытянуть эту информацию по JTAG нельзя никак. Но можно запустить таймер работающий на полной скорости в момент когда надо замерить временный интервал, а в конце остановить его. Потом по JTAG прочитать его содержимое.

Второй способ - установить в "1" внешний порт на интервал который надо измерить и измерить время внешним прибором. Но при условии что 1) контроллер в это время не спал, 2) не было отладки.

Вообще в таких контроллерах время исполнения участка кода это второстепенная величина.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Хорошие идеи, спасибо, попробую:)

Я просто хотел измерить время преобразования температуры... Оно, конечно, регламентировано в даташите, но мне хотелось, так сказать, воочию..)

Ссылка на комментарий
Поделиться на другие сайты

Порекомендую Ревича почитать.Не вызывались прерывания в отладчике в 6 и 7 студиях.

Ни установкой флага прерывания ни исполнением до курсора.

В 7й помогло установить в настройках debug-options-tools-mask interrupts while stepping: false, после этого хоть по флагам можно зайти в обработчик прерывания.

Изменено пользователем MillyVolt2
Ссылка на комментарий
Поделиться на другие сайты

А вот при помощи run to cursor в прерывание все также не зайти. В настройках ошибок не должно быть, так как в собранной схеме прерывания срабатывают.

Изменено пользователем MillyVolt2
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Может кто-нибудь сталкивался с такой проблемой, в 4й студии (4.19 - последняя версия перед 5й) при попытке откомпилировать проект (F7) выдаёт ошибку:

"FATAL ERROR: Cannot open output file C:\Users\пользователь\Project\Project.hex"

Если поменять в настройках, поставить галку AVR Assembler на Version 1 (по умолчанию 2 версия), тогда после нажатия F7 ошибка, что не может открыть файл Project.asm.

Вообще при компиляции не создаётся файл .hex. Пробовал откомпилировать .asm файл с таким же содержанием в 7й студии и закинуть .hex что получился в папку проекта для 4й студии, все равно та же ошибка, 4я как будто не видит этот hex-файл.

Возможно проблема из-за 7й винды, хотя на форуме читал, что у кого-то работает 4.19 студия на 7 винде.

Вся эта тряхомудия нужна для использования клона JTAG ICE, оригинал которого работает только из под 4й студии. Причём клон собран, работает, прошил успешно флеш и фьюзы на меге 16А по JTAG.

Но чтобы отлаживать по JTAG (для чего клон и собирался), нужно написать и откомпилировать программу с 4й студии, в чём и затык...

Ссылка на комментарий
Поделиться на другие сайты

Здравствуйте!

К прошивке контроллера attiny13a приложен файл с текстом

RSTDISBL=WDTON=BODLEVEL1=SUT1=CKSEL0=0

Значит в калькуляторе нужно все перечисленные флажки установить?

Изменено пользователем tesu
Ссылка на комментарий
Поделиться на другие сайты

В подсказке к калькулятору всё чётко написано чёрным по английскому. 0 - стоит галочка, 1 - без галочки.

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Добрый день.

Использую AVR_GCC. Мне необходимо создать константу в EEPROM и прочитать ее. Сделал так:

...

#include <avr/eeprom.h>

...

unsigned char eeVar EEMEM = 135;

int main(void)

{

unsigned char SRAMchar;

SRAMchar = eeprom_read_byte(&eeVar);

...

Всегда считывается значение 255. Что я делаю неправильно?

Ссылка на комментарий
Поделиться на другие сайты

Что я делаю неправильно?
Наверное, не записываете в еепром значение, перед чтением.

Т.к. число 255 само по себе об этом говорит.

Спасибо, eeprom_write_byte (&eeVar, 135); исправило ситуацию. Но разве никак нельзя присвоить переменной значение при ее объявлении, без использования eeprom_write_byte?

Ссылка на комментарий
Поделиться на другие сайты

А каким образом Вы это представляете, если для записи нужно вызывать функцию eeprom_write_byte ?

Скорее всего, в этой переменной хранится адрес ячейки еепром. Но могу ошибаться.

Ссылка на комментарий
Поделиться на другие сайты

Или, при старте, проверять содержимое ячеек ЕЕПРОМ. При "чистых" ячейках (первый старт) инициировать заполнение ЕЕПРОМ требуемыми константами.

Ссылка на комментарий
Поделиться на другие сайты

Помогите разобраться в коде. Всё написал как в видеоуроке №2 для мигающих светодиодов, скомпелировал ошибок не показала.

запустил в Протеусе, от микроконтроллера до резисторов показывает что сигнал идёт, а светодиоды не мигают!

//Atmega8A

#define F_CPU 8000000

#include <avr/io.h>

#include <util/delay.h>

void preset(){

DDRB = 0xFF; //0xFF = 0b11111111; PORTB - Out

PORTB = 0x00; //0x00 = 0b000000000; Default PORTB - OFF

}

int main(void)

{

preset();

while(1)

{

//Подать сигнал

PORTB = 0xFF;

//Выдержать паузу - 1 секунду

_delay_ms(1000);

//Убрать сигнал

PORTB = 0x00;

//Выдержать паузу

_delay_ms(1000);

}

}

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

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