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

crazz

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

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

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

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

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

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

А я-то, мля и не заметил! Я всего добился, чего хотел и знаю, о чём пишу и что значит INTCON = 0, знаю тоже. Был вопрос про определению начала цикла ШИМ, я на него частично ответил и пояснил, что эксперимент ещё не закончен.

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

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

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

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

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

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

А как Вы на него ответили ? Даже частично...

Вы просто "завели" аппаратно ШИМ, не более того. Причём тут прерывания и почему они должны сами добавляться, непонятно...

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

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

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

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

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

Вот Вы уверены, что если написать:

...
INTCON = 0b11000000 ;
...
void interrupt isr( void )
{
if( TMR2IF )
{
TMR2IF = 0 ;
// обработчик прерывания TMR2
}
}

Программный поток пойдёт через ISR? По крайней мере в симуляторе, управление в обработчик по TMR2IF при такой настройке TMR2 не передаётся, хотя в даташите написано:

"TMR2IF: TMR2 to PR2 Match Interrupt Flag bit

1 = TMR2 to PR2 match occurred (must be cleared in software)

0 = No TMR2 to PR2 match occurred"

".

Я так никогда не делал в железе, поэтому ничего не заявляю. А компилятор добавляет много чего, о чём его никто не просит, типа init0, сохранение контекста, переключение банков. Вы точно знаете, что он ещё делает втихаря?

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

Что за программный поток ? Вы о чём ?

Если разрешить прерывание от таймера TMR2, то оно по-любому будет срабатывать при совпадении его текущего значении со значением в PR2, с последующим сбросом.

И не важно, подключен ли модуль PWM'а к таймеру или нет.

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

Ну, собственно согласен с двумя предыдущими авторами, почитал внимательнее, всё встало на свои места, проглядел флаг TMR2IE. На будущее запомню, как можно начало периода ШИМ ловить программно.

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

Вот тоже начал интересоваться PIC контроллерами. Немного почитал про ассемблер, перешел к C. Начинают естественно с простого, вот хотелось бы понять как включать и выключать светодиод кнопкой. Помигать,бегущий огонь - это понятно =) , а вот как управляться с кнопкой??? Ну собственно опрос кнопки на СИ для PIC .

У меня получилось как то коряво, вот код. Ткните носом, что не так, выслушаю все замечания, и новичкам потом читая, будет полезно ! Спасибо!

void main (void)  
{
	  PORTA = 0b00000010;
	  PORTB = 0b00000000;
	  TRISB = 0b00000000;
	  TRISA = 0b01010010;
	  CMCON = 7;

	while (1)
{


	  if (RA1_bit = 1)
	  {
		RB1_bit = 1;
		Delay_ms(500);
		RB1_bit = 0;
	  }
	  else
	  {
		RB1_bit = 0;
	  }
  }

}

в общем не работает .... при запуске, в протеусе:

- запускаем,ничего не горит.

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

f5cc59d33cc9.jpg

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

Вот тоже начал интересоваться PIC контроллерами. Немного почитал про ассемблер, перешел к C. Начинают естественно с простого, вот хотелось бы понять как включать и выключать светодиод кнопкой. Помигать,бегущий огонь - это понятно =) , а вот как управляться с кнопкой??? Ну собственно опрос кнопки на СИ для PIC .

вы серьезно полагаете что вы здесь первый с этим вопросом???? каким новичкам это будет полезно? тем которым влом читать? так вы один из них.... этот вопрос уже жевался на форуме и не раз , в этой теме тоже.... :diablo::rtfm:

ЗЫ выкладываете код пользуйтесь тегами [CODE][/CODE] или кнопкой <> панели инструментов сообщения

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

Да еще и разницу между оператором присвоения и сравнения не уловил... досихпор.

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

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

ну спасибо за то, что отозвались.ваши ответы очень полезны!

можно просто объяснить.Форумы для чего существуют??? Что бы люди спрашивали.А вы сразу закидали какашками... Как то не по людски это.

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

обычно уверенный шаг вперед это хороший пинок сзади....

ну ладно с программированием проблемы , но включать думалку на элементарных вещах хоть когда-то надо...

кнопки подключены к питанию через резисторы 100кОм ????

когда кнопка не нажата какой лог.уровень подан на вывод МК????

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

Ну, такие простые вещи.... как через кнопки ток пойдет? идеальный вход контроллера - гигаомы.... протеус чудит кстати, надо понимать что это всего лишь МОДЕЛЬ. То что он в таких случаях будет показывать - это никогда не сойдется с реальностью.

В реальности... такое подключение кнопок будет все равно что без кнопок.

Вход контроллера НЕ ДОЛЖЕН ВИСЕТЬ В ВОЗДУХЕ.

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

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

Уважаемый , сразу прошу прощения за оффтоп,но все таки...

IMXO

У вас есть автомобиль? Или может быть он у вас появится.Ну допустим, что возникнут проблемы с коробкой,а вы не понимаете нихрена в этом, а на форуме вам напишут "ты че не знаешь как поменять подшипник на вторичном валу? Ну ты лошара!,кури мат часть! " неприятно согласитесь? Форумы ведь и существуют для этого.Я так считаю ИМХО. =) , что бы помогать людям ,а не посылать и глумиться.

пока писал пост, уже ответили.То что в протеусе, это так, скажем боловство.Сопротивление должно быть полагаю 4.7 не более. Конкретно мне не понятно, как обозначить условие, ну то, что if...

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

Аналогия не катит. Посмотри внимательно, в теме 90 страниц... и раз 20 на них наверно решали проблему "опроса кнопки". Кстати, если мне не изменяет память тут даже тема есть чисто по работе с кнопкой... неуж-то поиск сплоховал?

В конце-концов... есть такие шилды к ардуино - чисто платка с кнопкой. Никакого секрета в ней нет, подсмотреть схему - вопрос лишь желания. Уж шилды эти, точно работают и проверены миллионами хомячковпользователей, сомнительные вещи там не применяют. Не оптимально, зато 100% рабочее - для этого их и разрабатывают.

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

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

Не соглашусь с тем, что аналогия не катит.Уж извольте.Я зарегистрирован на форуме <автомобильный,не буду говорить,что бы не делать рекламу> уже прилично долгое время.Таких вопросов,скажем "новичков" постоянно очень много и большинство отправляет читать 200 страниц без всяких комментариев.Я считаю что не правильно это(по возможности стараюсь помочь). Должно быть какое то понимание проблемы новичка,ну хотя бы ссылку для начала.Просто в сети очень много информации...,но не все сразц возможно понять без мнения спеца. Поэтому те, кто понимают действительно могут " дать пинок в правильном направлении " , в хорошем понимании этой фразы

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

Сопротивление должно быть полагаю 4.7 не более.

дело не в номинале сопротивления , а в том как подключена кнопка... правильно кнопку подключить между выводом МК и общим, а сопротивление между выводом и +пит, при этом нажатой кнопке будет соответствовать лог.0....

Таких вопросов,скажем "новичков" постоянно очень много и большинство отправляет читать 200 страниц без всяких комментариев.
и правильно делают если челу лень искать самому ответы, всегда можно их купить... а вообще лениво помогать ленивым....
Ссылка на комментарий
Поделиться на другие сайты

f (RA1_bit = 1)
	  {
	    RB1_bit = 1;
	    Delay_ms(500);
	    RB1_bit = 0;
	  }
	  else
	  {
	    RB1_bit = 0; 

моя ошибка == ?? двойное" =" ?

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

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

моя ошибка == ?? двойное" =" ?

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

1.да

2.ну тогда вы вообще не вту степь....

перво-на-перво навсегда забудьте применять в коде функции типа Delay_ms(500)

изучите работу прерываний по таймеру, в прерывании устанавливайте флаг(и) каждую 1мс

у вас две задачи опрос кнопки и мигание СД те два флага...флаг_таймера_кнопка и флаг_таймер_мигалка

для опроса кнопки проверяем флаг_таймера_кнопка=1 и флаг_кнопка_ON=0 , определяем нажатие, если нажата инкриминируем счетчик до 20-50 для устранения дребезга контактов, опять проверяем нажатие, если нажата выставляем флаг_кнопка_ON=1 и инвертируем флаг_мигалка_ВКЛ , ожидаем отключение кнопки проводим такую же процедуру по завершению сбрасываем флаг_кнопка_ON=0

для мигалки проверяем флаг_таймер_мигалка=1 и флаг_мигалка_ВКЛ=1 инкриминируем счетчик до 500 (500мс) и инвертируем пин_СД

при флаг_мигалка_ВКЛ=0, пин_СД=0

по окончании задачи сбрасываем соответстуюший флаг таймера...

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

на 200 страниц есть поиск.

Тогда абсолютно непонятно что вы хотели сделать тем самым кодом. Просто как-то "от фонаря" написано.

Во первых, вам надо отловить событие изменения состояния кнопки - это можно сделать ТОЛЬКО сравнивая предыдущее и текущее состояние кнопки. Потом по событию "нажатие"(домашнее задание - подумать как нажатие отличить от отпускания имея два состояния кнопок) инвертировать какую-то переменную или бит. Потом уже в зависимости от состояния этой переменной включать или гасить светик.

Пока сделай это, с дребезгом потом.

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

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

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

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

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

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

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

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

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

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

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

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

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