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

crazz

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

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

while(1)
  {
	   temp = ADC_Read (0);	    //чтения АЦП из AN0 ,
	   u = (temp*11/450)  ;	  
	   WordToStr(u,txt1)  ;	 
	   Lcd_Out(2,1,txt1)  ;	    //вывод на LCD начение напряжения
	    Lcd_Out(2,6,txt3)  ;	    //вывод на LCD "v"
	   }

Подскажите как на дисплее получить "правильное" значение.Да,хотелось бы видеть с точкой например так - 12,5v

что на что нужно умножить\разделить , что б правильно показывало?

PS прошу сильно не пинать =)

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

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

...Подскажите как на дисплее получить "правильное" значение.Да,хотелось бы видеть с точкой например так - 12,5v

что на что нужно умножить\разделить , что б правильно показывало?

Что есть "правильное" значение, а что "неправильное"? Как описана функция WordToStr? Или здесь ещё один конкурс назревает?

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

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

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

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

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

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

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

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

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

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

Значит ему нужно бросать программирование, ну или хотябы отложить до "лучших времён" :)

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

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

кстати Alex есть вопрос какой самый быстрый способ установки битов 5:4 в регистр CCP1CON без изменения других битов

короче нужно как можно короче/быстрее перенести биты 1:0 регистра РОН в биты 5:4 в регистр CCP1CON соответственно... есть идеи?

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

Я делаю так

//******************************************************************
void Set_Pwm(int var){
if ((var & 1)!=0) CCP1CON |=(1<<4);
else			 CCP1CON &=~(1<<4);
if ((var & 2)!=0) CCP1CON |=(1<<5);
else			 CCP1CON &=~(1<<5);
var>>=2;
CCPR1L=(char)var;
}
//******************************************************************

Думаю, тупо в лоб проверка с установкой/сбросом - будет самым быстрым способом.

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

пробовал... долго...

 bcf CCP1CON,CCP1X
 bcf CCP1CON,CCP1Y

 movf count_tact,w
 call Mass_sinus
 sublw 0x97
 movwf temp_CCPR1L
 bcf STATUS,C
	 rrf temp_CCPR1L,f
	 btfsc STATUS,C
	 bsf CCP1CON,CCP1Y
 bcf STATUS,C
	 rrf temp_CCPR1L,f
	 btfsc STATUS,C
	 bsf CCP1CON,CCP1X

 movf temp_CCPR1L,w
 movwf CCPR1L

нужно еще короче....

таймер2 всего 38 маш.циклов

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

Не вижу в твоём коде ничего с работой битов <4,5>CCPCON1. Что это за код ?

Ты из таблицы 8-ми битные значения вытягиваешь ? Может тогда не заморачиваться 10-ти битами, а использовать 8 (один только CCPR1L) ?

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

биты 1:0 регистра temp_CCPR1L копируем в 5:4 CCPCON1 , попутно сдвигаем temp_CCPR1L два раза и результат заносим в CCPR1L , проблема в том что переполнение TMR2 через две команды и в CCPR1H попадает неверное значение :wall:

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

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

Спасибо конечно за поддержку =) нет, не на грани суицида, просто думал что тут на форуме есть разумные люди,которые могут дать ответ.А оказывается что есть упЁртые товарисчи ,которые тыкают куда то далеко,пытаясь что то объяснить начинающим.

Форум то нахрена существует?????

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

пробовал... долго...

 bcf CCP1CON,CCP1X
 bcf CCP1CON,CCP1Y

 movf count_tact,w
 call Mass_sinus
 sublw 0x97
 movwf temp_CCPR1L
 bcf STATUS,C
	 rrf temp_CCPR1L,f
	 btfsc STATUS,C
	 bsf CCP1CON,CCP1Y
 bcf STATUS,C
	 rrf temp_CCPR1L,f
	 btfsc STATUS,C
	 bsf CCP1CON,CCP1X

 movf temp_CCPR1L,w
 movwf CCPR1L

нужно еще короче....

Доброй ночи. Думаю так будет немного короче

 bcf CCP1CON,CCP1X
 bcf CCP1CON,CCP1Y

 movf count_tact,w
 call Mass_sinus
 sublw 0x97
 movwf temp_CCPR1L
 bcf STATUS,C
	 rrf temp_CCPR1L,f
	 btfsc STATUS,C
	 bsf CCP1CON,CCP1Y
	 btfsc  temp_CCPR1L,0
	 bsf CCP1CON,CCP1X
 bcf STATUS,C
	 rrf temp_CCPR1L,w
        movwf CCPR1L

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

IMXO, нельзя биты 5,4 регистра CCPCON сбрасывать, потом по условию устанавливать. Иначе, если следующий период ШИМа начнётся между сбросом и установкой, можно получить неверное значение скважности.

Ты работаешь с 8-ми битной переменной temp_CCPR1L, зачем тебе эти младшие биты ? Обнули их и из temp_CCPR1L тупо переписывай в CCPR1L.

просто думал что тут на форуме есть разумные люди,которые могут дать ответ
А Вам его не дали ? Или слово "пропорция" Вам ни о чём не говорит ? Тогда читайте буквари, что тут скажешь...
Ссылка на комментарий
Поделиться на другие сайты

те посчитать сколько вольт будет на 1 дискрету 10-разрядного АЦП при опорном напряжении 5в вы не можете????

даю подсказку 10разрядов = 1024 дискрет...

IMXO, нельзя биты 5,4 регистра CCPCON сбрасывать, потом по условию устанавливать. Иначе, если следующий период ШИМа начнётся между сбросом и установкой, можно получить неверное значение скважности.

Ты работаешь с 8-ми битной переменной temp_CCPR1L, зачем тебе эти младшие биты ? Обнули их и из temp_CCPR1L тупо переписывай в CCPR1L.

срадостью только у мну

; инициализация модуля ССР в режиме ШИМ

; PR2=0x26, разрядность ШИМ = 7,25

; дискретность ШИМ = 152

; коэф.предделителя TMR2 = 1:1

; коэф.выходного делителя TMR2 = 1:2

поэтому и танцы с бубном....

Доброй ночи. Думаю так будет немного короче

спасибо... идею понял... но так вроде на одну команду меньше:

    bcf CCP1CON,CCP1X
    bcf CCP1CON,CCP1Y

    movf  count_tact,w  
    call  Mass_sinus
    sublw 0x97
    movwf temp_CCPR1L
    swapf temp_CCPR1L,w
    andlw (1<<CCP1X)|(1<<CCP1Y)
    iorwf CCP1CON,f
    bcf   STATUS,C
    rrf temp_CCPR1L,f
    bcf   STATUS,C
    rrf temp_CCPR1L,w
    movwf  CCPR1L

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

Как вариант со свапом :

swapf temp_CCPR1L, w
andlw (1<<4)|(1<<5)
iorwf CCP1CON, f
iorlw ~((1<<4)|(1<<5))
andwf CCP1CON, f
rrf temp_CCPR1L
bcf STATUS,C
rrf temp_CCPR1L, w
movwf CCPR1L

Но покомандам, вроде нифига не выигрываем...

ЗЫ: Опередил с вариантом :)

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

спасибо... идею понял... но так вроде на одну команду меньше:

 bcf CCP1CON,CCP1X
 bcf CCP1CON,CCP1Y

 movf count_tact,w
 call Mass_sinus
 sublw 0x97
 movwf temp_CCPR1L
 swapf temp_CCPR1L,w
 andlw (1<<CCP1X)|(1<<CCP1Y)
 iorwf CCP1CON,f
 bcf STATUS,C
 rrf temp_CCPR1L,f
 bcf STATUS,C
 rrf temp_CCPR1L,w
 movwf CCPR1L

Вот еще на одну команду меньше

 bcf CCP1CON,CCP1X
 bcf CCP1CON,CCP1Y

 movf count_tact,w
 call Mass_sinus
 sublw 0x97
 movwf temp_CCPR1L
 swapf temp_CCPR1L,w
 andlw (1<<CCP1X)|(1<<CCP1Y)
 iorwf CCP1CON,f
 rrf temp_CCPR1L,f
 rrf temp_CCPR1L,w
 andlw  b'00111111'
 movwf CCPR1L

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

Добрый день! Осваиваю интерфейс I2C и у меня возникли непонятки с адресацией. Говорим про 7-битную адресацию... Вопрос, откуда можно достать первых четыре бита адреса? Ведь они задаются неким комитетом I2C для каждого семейства устройств... И как при обращении к ведомому(slave) последний знает, что у него последних три бита, например, 010, т.е. как назначаются последние три бита? Спасибо.

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

Всем день добрый! У меня вопрос: прога winPic800 нормально ли работает с windows 8? Дома ХР, но ноут и нет сом порта, буду шить у брата, а у него восьмерка. Программатор простой ExtraCheap

Процессор PIC16F876A. Это мой первый опыт, тапками не бросайте. Неохота испортить недешевую микросхему.

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

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

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

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

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

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

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

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

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

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

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

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