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

Язык СИ для микроконтроллеров


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

Для этого и придумали uint8_t и подобные.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

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

Ура! Все заработало, как надо. Правда, пришлось еще, действительно, прописать while(1) перед циклами, чтобы все повторялось, а то сначала 1раз сработало :). Да, я ведь частоту ШИМ не с потолка брал, смотрел даташит, и при моем кварце 8 МГц частоту вроде можно установить 488 Гц, но компилятор выдает ошибку, типа "частота out of range", минимум где-то 490 можно поставить... А вручную управлять этими регистрами - ох, запарка какая:)

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

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

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

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

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

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

как раз вы ее взяли с потолка и используя первый костыль инициализации в итоге получили не полное разрешение ШИМ

основным для периода ШИМ есть регистр PR2

Fosc = 8000000
Fpwm = 500
k=16
PR2= Fosc/(4*k*Fpwm) - 1 = 249

те при zap от 249 до 255 на выходе ШИМ вы имеете скважность 100%, те тупо высокий уровень

далее используя второй костыль установки скважности вместо разрядности ШИМ 9.7 вы имеете разрядность 7.8 , потому как  костыль  два младших разряда тупо не использует.

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

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

И, кстати, for может перебирать не только вверх, но и вниз.

Соответственно второй цикл можно записать как for(zap = 255; zap > 0; zap--) и тогда zap2 уже не нужна будет.

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

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

Подскажите, пожалуйста, почему в mikroC не работает простейшая программа мигания светодиодом на МК PIC12F675

void main() {
  CMCON=0x7;
  WPU=0x00;
  TRISIO=0;
  GPIO=0;
  while(1){
    GPIO.B1=~GPIO.B1;
    Delay_ms(125);
   }
}

МК сконфигурирован на работу от внутреннего осциллятора.

Если написать

GP1=~GP1;

вместо GPIO.B1, выдает ошибку assigning to non-lvalue GP :(

Более сложный код с использованием библиотеки Манчестерского кода на этом же МК в Протеусе и тот работает.

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

Поставил !GPIO.B1 , все равно не работает. Текст сейчас такой:

void main() {
  CMCON=0x7;
  WPU=0x00;
  TRISIO.B1=0;
  GPIO.B1=0;
  while(1){
    GPIO.B1= !GPIO.B1;
    Delay_ms(300);
   }
}

Не пойму, в чем дело, как говорится, тут и упасть негде. :) Виртуальный осциллограф тоже ничего не показывает. Гляньте, пожалуйста, проект в Протеусе (не знаю точно, как правильно прикреплять протеусные проекты). Слово конфигурации тоже вписал в проект.

PIC12F675 primer.DSN

PIC12F675 primer.PWI

MyProject.cof

MyProject.hex

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

Лучше запакуйте папку с проектом в архив и выложите целиком.

С хексом симуляция запускается, но посмотреть по шагам я ничего не могу, а с cof файлом выдается ошибка, причем там даже про PIC18 написано.

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

Заработало, спасибо! Прописал ADCON0=0x0; ANSEL=0; и резистор на Mclr. Но не понятно: я выбрал внутренний осциллятор и выход тактового сигнала на выводе GP4/OSC2, но в Протеусе осциллограф на нем почему-то ничего не показывает. И еще: в даташите есть примечание, что, когда MCLR подключен к + внутри МК в режиме INTOSC или RC , то, якобы, внутренний тактовый осциллятор отключен. Это действительно так? В протеусе схема работала в такой конфигурации без внешнего кварца (похоже, в протеусе многое возможно:) ).

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

3 минуты назад, Aleksandr1111 сказал:

MCLR подключен к + внутри МК в режиме INTOSC или RC , то, якобы, внутренний тактовый осциллятор отключен. Это действительно так?

это чушь, где вы это вычитали?

3 минуты назад, Aleksandr1111 сказал:

В протеусе схема работала в такой конфигурации без внешнего кварца (похоже, в протеусе многое возможно:) ).

это нормальная практика любого симулятора, в модели любого МК внешние кварцы не используются, если бы было на оборот ты бы симуляцию не увидел, быстродействия твоего ПК просто бы не хватило на это.

ЗЫ как всегда в кривых руках виноват симулятор:)

6 минут назад, Aleksandr1111 сказал:

я выбрал внутренний осциллятор и выход тактового сигнала на выводе GP4/OSC2, но в Протеусе осциллограф на нем почему-то ничего не показывает.

а включить его в опциях МК религия не позволяет?

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

3 часа назад, IMXO сказал:

где вы это вычитали?

Даташит на PIC12F675, раздел 9.1 Configuration bits. Регистр CONFIG.  bit 5 MCLRE: GP3/MCLR Pin Function Select bit (note.5)
1 = GP3/MCLR pin function is MCLR
0 = GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD

Ниже Note 5: When MCLR is asserted in INTOSC or RC mode, the internal clock oscillator is disabled.

3 часа назад, IMXO сказал:

а включить его в опциях МК

в mikroC или в Протеусе? В mikroC то конечно включил. Я новичок в МК, прошу сильно не пинать :)

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

Оказывается, примечание "When MCLR is asserted in INTOSC or RC mode" в русском даташите переводится "Когда MCLR удерживается в активном уровне, внутренний тактовый генератор отключен", т.е. только на время сброса.

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

Здравствуйте! Подскажите, пожалуйста: если у меня в коде сначала идет описание одной переменной, затем вспомогательная функция, затем главная функция main, то во вспомогательной функции уже можно не описывать эту переменную?

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

Только что, Aleksandr1111 сказал:

то во вспомогательной функции уже можно не описывать эту переменную?

Правило видимости элементов программы по умолчанию: каждый описанный элемент видим (доступен) только в пределах того блока кода, где он описан, всюду ниже по коду от места описания.

Для вашей переменной блоком кода является файл, т.к. переменная глобальная. То есть ваша переменная видима (читай - доступна) внутри всех нижеследующих по исходнику функций. Если вы опишите "эту же переменную" внутри функции - это будет уже совсем другая переменная, не "наружняя".

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

@ARV , благодарю. Подскажите еще, пожалуйста: мне надо настроить в МК PIC16F628A таймер TMR0 как счетчик на работу от внутреннего генератора; на счетчик должны поступать импульсы 500 кГц (используется кварц на 8 МГц, частота генератора внутренне делится на 4, получается 2 МГц, чтобы получить 0,5 МГц, коэфф. предделителя должен быть 1:4 ), в коде (в mikroC) я пишу:

OPTION_REG.PS0 = 1;//PS2, PS1, PS0 = 001 

Остальные биты регистра OPTION остаются "0". Правильно ли я делаю? В какой момент счетчик начинает считать, после сброса МК по выводу MCLR? И чтобы прочитать содержимое счетчика, можно просто использовать регистр TMR0 ?

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

Только что, Aleksandr1111 сказал:

Подскажите еще, пожалуйста: мне надо настроить в МК PIC16F628A

К сожалению, я не специализируюсь на PIC-ах и в данном вопросе помочь не могу.

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

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

2 часа назад, Aleksandr1111 сказал:

Остальные биты регистра OPTION остаются "0". Правильно ли

Изначально при старте все биты регистра как раз в 1. Надо установить нужные биты в 0 вручную.

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

2 часа назад, Aleksandr1111 сказал:

пишу:


OPTION_REG.PS0 = 1;//PS2, PS1, PS0 = 001 

Остальные биты регистра OPTION остаются "0". Правильно ли я делаю?

нет не правильно

нужно

OPTION_REG=1;
а еще лучше
OPTION_REG=0b00000001;

 

2 часа назад, Aleksandr1111 сказал:

В какой момент счетчик начинает считать, после сброса МК по выводу MCLR? И чтобы прочитать содержимое счетчика, можно просто использовать регистр TMR0 ?

чтоб было понятней с момента начала выполнения первой команды.

да регистр TMR0 доступен на чтение и на запись, вопрос зачем? что именно вы хотите сделать?

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

3 часа назад, Aleksandr1111 сказал:

В какой момент счетчик начинает считать, после сброса МК

В момент установки бита T0CS в 0. Если нужно остановить счётчик, то установите бит обратно в 1.

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

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

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

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

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

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

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

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

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

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

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

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