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

crazz

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

wi3ik вы запустили первый раз таймер на формирование импульса 10мкс + 8мс задержки после его выключили, далее ожидаете ЭХО , эхо вы измеряете , но таймер не включили.... а в расчетах расстояния вы используете данные таймера ....

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

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

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

ребята подскажите , кто нибудь сталкивался с такой проблемой - контролер ведет опрос 3 х кнопок, при нажатии, на соответсвующем выходном пине должен появляться 5в, два пина срабатывают адекватно(porta,2 и porta6), а вот трети вместо 5в выдает 1в (porta,0). Контролер использую pic16f628a. portb,4 portb,5 и portb,6 использую для кнопок, защелки подключены .

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

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

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

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

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

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

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

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

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

vitrix1983, неправильно бутерброд ешь. Ты уж, мил человек, возьми файлы Протеуса, hex, исходник, упакуй в кучку, и выложи. Может кто и поможет. У меня например от Сишного исходника жуткая рвота начинается, а кому-то приятно. А hex он и в Африке hex. Прими во внимание предпост. Не все пины всё прощают.

Так ку или не ку ?!

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

  • 1 месяц спустя...

добрый день, хочу попробовать программировать МК, можно начать на PIC24HJ128GP? Просто несколько штук есть в наличии и какой программатор ее возьмет, даташит пока только читаю, найти другие пики проблематично (только почтой)

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

PICkit3 минимум.

Зачем же так категорично. MPlab icd2 или даже самому сделать PICkit2_lite. Двадцатьчетверку шьют на ура. Только не забывать вместо 5 В питания использовать 3.3 В

В поисках работы..

Looking for job

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

И нажить себе гемору до самой старости :)

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

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

Это ваши ля-ля тополя ...

Несколько лет юзаю MPlab icd и проблем не испытывал. Недавно собрал PICkit2_lite, потестил на нем 16,18,24 серии: и без танцев пашет на ура. Вопрос цены продуктов icd\ice\kit .. или самоделок это уже другое дело

В поисках работы..

Looking for job

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

Довольно старенький чип, выполнен по технологии 1.2 микрона. Всего 2К под программу, можно делать несложные вещи вроде часов, термостат, таймер или другую подобную электронику. Но совать туда чип с УФ стиранием... вообще это специальная отладочная версия чипа, чтобы отладить программу а потом массово её растиражировать на ROM-чипы с маркировкой PIC16CR57.

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

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

Добрый день. Я новичок в программировании микроконтроллеров, но я хочу, чтобы запрограммировать тахометр на pic16f886 с соблюдением следующих условий: скорость вращения шпинделя: 300-600 время измерения оборотов в минуту. время: 0,2 секунды, . Диапазон скоростей задается микроконтроллером импульсы,затем преобразуется в rpm.

Я пытался использовать два таймера: TMR0 и TMR1. TMR0 генерирует импульсы. TMR1 внешних прерываний для 0,2 секунды,а затем отображает на экране.

Моя проблема в том, что я не могу планировать таймеры.

#include "Includes.h"

unsigned char T = 0;

// Main Function

void main(void)

{

TRISB = 0b11111100;

PORTB = 0b00000000;

//INTCON = 0b10101000;

OPTION_REG = 0b00000001;

//InitTimer0(); // Initialize timer0

// T0CS=0;

// T0SE=0;

// PSA=0;

// PS2=0;

// PS1=0;

// PS0=0;

// T0IF=0; // Fosc = 1MHz, Ftmr = 250KHz

T0IE = 1; // Enable Timer0 interrupt

GIE = 1;

while(1)

{

if(T0IF) //If Timer0 Interrupt

{

++T;

TMR0 = 255-165;

T0IF = 0; // Clear the interrupt

}

if( T == 200)

{

RB1 = ~RB1;

T = 0;

}

}

}

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

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

Ну я что-то подобное на русском нашел, ну и хотел подкорректировать вопрос.... ну и как-то вот остановился на точке :)

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

Не могу понять как это:

в течении выполнения инструкции SLEEP

или

Если прерывание произошло в течении или после выполнения инструкции SLEEP, устройство немедленно пробудится из спящего

режима. Инструкция SLEEP будет полностью выполнена перед пробуждением.

Не совсем понимаю что значит "выполнение инструкции SLEEP"? Она выполняется "долго"?

И не совсем понял, про GIE перед СЛИП.

Т.е. если он =0 то просто начнет выполнятся программа дальше по коду после СЛИП, а если =1 то после СЛИПа выполнится строчка кода, а затем уйдет в прерывание?

например

GIE=1
SLEEP
PortA1=1
PortA2=1

После пробуждения выполнится команда PortA1=1, а затем выполнится обработчик прерываний и потом PortA2=1?

И все таки. Используя несколько прерываний, которые могут разбудить МК(например TMR1, INT, прерывание по изменению состояния порта) Как сделать грамотно-правильно так, что бы усыпить МК командой SLEEP, но перед этим указать ему, что бы просыпался только, например, от INT, а от остального нет.

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

Она выполняется "долго"?
Конечно :) Не забываем, что команда выполняется минимум 4 такта.

Т.е. если он =0 то просто начнет выполнятся программа дальше по коду после СЛИП, а если =1 то после СЛИПа выполнится строчка кода, а затем уйдет в прерывание?

например

GIE=1
SLEEP
PortA1=1
PortA2=1

После пробуждения выполнится команда PortA1=1, а затем выполнится обработчик прерываний и потом PortA2=1?

Ага.
Как сделать грамотно-правильно так, что бы усыпить МК командой SLEEP, но перед этим указать ему, что бы просыпался только, например, от INT, а от остального нет.
Думаю, проверкой соответствующего флага, с уходом обратно в слип, если событие не то.
Ссылка на комментарий
Поделиться на другие сайты

Думаю, проверкой соответствующего флага, с уходом обратно в слип, если событие не то.

Полагаю, что нет никакого смысла входить в слип с разрешенными "лишними" прерываниями. Сначала нужно все локальные (кроме единственного требуемого для wake-up) InterruptEnable запретить, а лишь затем уходить в слип. При выходе из слипа восстановить все необходимые разрешения прерываний.

Вопрос о том, куда выходить из слипа - в обработчик или в продолжение кода после инструкции sleep определяется, как уже верно было сказано, состояние глобального разрешения GIE в регистре INTCON

Таким образом, разрешения на wake-up из sleep дают локальные разрешения прерываний, а направление кода после выхода из слип - глобальное.

戦う前に相手のベルトの色に注目

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

А правильно ли я понял, что GIE=0 на самом деле "не выключает прерывания"? Т.е. при GIE = 0 и в Слипе случится прерывание, то МК все равно проснется, но в обработчик не зайдет.

У меня по прерыванию INT ничего в обработчике, кроме сброса флага, нет. Т.е. этот INT и нужен только для пробуждения.

Достаточно будет сделать примерно так:

RAIE = 0
TMR1IE = 0
<Еще какие-то xxxIE> = 0;
SLEEP;
RAIE = 1
TMR1IE = 1
<Еще какие-то xxxIE> = 1;

?

Или все таки так и придется просыпаться и снова в сон. Типа как-то так:


GIE = 0;
A:
SLEEP
if (<не тот ххIE>) goto A;
GIE = 1;

?

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

GIE=0; // Если не нужно входить в обработчик после слипа
PEIE=1; // Обязательно
INTF=0;
INTE=1; // Разрешаем прерывание от внешнего источника INT
SLEEP();

Думаю, проверкой соответствующего флага, с уходом обратно в слип, если событие не то.

C этим ответом я немного поторопился. Не вникал в работу слипа никогда, т.к. ниразу им не пользовался.

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

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

Так все таки при GIE = 0 МК просыпаться не будет от других включенных прерываниях? Что-то не понимаю.... зачем тогда оговорка про GIE = 0 МК ПРОСНЕТСЯ (от прерывания?) но в обработчик не войдет...

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

зачем тогда оговорка про GIE = 0 МК ПРОСНЕТСЯ (от прерывания?) но в обработчик не войдет...

Всё очень просто. Чтобы выйти из слипа по какому либо событию, нужно просто разрешить от этого события прерывание. Например, от таймера №1 это будет :

TMR1IF=0;
TMR1IE=1;
PEIE=1;

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

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

Спасибо. Т.е. тогда получается что нужно перед слипом выключать не нужные IE, а ГИЕ не трогать совсем...

В моем случае оставить INTIE = 1 и что для него нужно, а все остальное выкл. Дома вечером по даташиту гляну, что для чего нужно...

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

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

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

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

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

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

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

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

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

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

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

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