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

crazz

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

Описываю ситуацию. Например, у меня МК 16f628A с подключенными к нему двумя DS3231. Вопрос, где мне взять первых 4 бита, идентифицирующих DS3231. Затем мне надо обратиться к конкретному DS3231, т.е. задать последних 3 бита. Как обратиться, например, к DS3231 №1 через три последних бита? Если последних три бита будет 001, то какой DS3231 откликнется?

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

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

Непонятно, с какого потолка Вы взяли информацию о каких-то там битах, но по даташиту(стр. 16) адрес чипа единственный - 1101000.

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

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

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

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

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

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

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

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

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

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

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

Подскажите где ошибка,значение АЦП на дисплей выводит,значение температуры нет.Контроллер PIC16F819. Может в коде чего лишнее присутствует.Нашел на mirkoe,код под другой контроллер был.И можно ли его оптимизировать.

sbit LCD_RS at RB1_bit;			 //
.......
sbit LCD_D7_Direction at TRISB7_bit;

const unsigned short TEMP_RES_B = 12;
unsigned short TEMP_RESOLUTION;
unsigned temp;
char family_code;
char *text = "000.00";
int		 i;
unsigned	 temp_main ;
char txt2[6];
char txt4[6];

void Resolution()
{
 Ow_Reset(&PORTA, 1);						 // Onewire reset signal
 Ow_Write(&PORTA, 1, 0x33);				 //
 Delay_us(120);
 family_code = Ow_Read(&PORTA, 1);
 switch( family_code )
 {
 case 0x28:
 TEMP_RESOLUTION = TEMP_RES_B;
 break;
 case 0x01:
 TEMP_RESOLUTION = 0;
 break;
 case 0xFF:
 TEMP_RESOLUTION = 0;
 break;
 default:
 TEMP_RESOLUTION = 0;
 break;
 }
// Unique Part Serial Number
 Ow_Reset(&PORTA, 1);						 // Onewire reset signal
 Ow_Write(&PORTA, 1, 0x33);				 // Issue command Read_ROM
 Delay_us(120);
}
void Read_Temperature()
{
// Perform temperature reading
Ow_Reset(&PORTA, 1);						 // Onewire reset signal
Ow_Write(&PORTA, 1, 0xCC);				 // Issue command SKIP_ROM
Ow_Write(&PORTA, 1, 0x44);				 // Issue command CONVERT_T
Delay_us(120);
Ow_Reset(&PORTA, 1);
Ow_Write(&PORTA, 1, 0xCC);				 // Issue command SKIP_ROM
Ow_Write(&PORTA, 1, 0xBE);				 // Issue command READ_SCRATCHPAD
temp_main = temp ;
temp = Ow_Read(&PORTA, 1);
temp = (Ow_Read(&PORTA, 1) << 8) + temp;
}
void Display_Temperature()
{
 unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
 char temp_whole;
 unsigned int temp2write;
 unsigned int temp_fraction;
 temp2write = temp;
 if (temp2write & 0x8000)		 // Check if temperature is negative
 {
 text[0] = '-';
 temp2write = ~temp2write + 1;
 }

 temp_whole = temp2write >> RES_SHIFT ; // Extract temp_whole
 if (temp_whole/100)				 // Convert temp_whole to characters
 text[0] = temp_whole/100 + 48;
 text[1] = (temp_whole/10)%10 + 48;			 // Extract tens digit
 text[2] = temp_whole%10	 + 48;			 // Extract ones digit
 text[3] = '.';
 // Extract temp_fraction and convert it to unsigned int
 temp_fraction = temp2write << (4-RES_SHIFT);
 temp_fraction &= 0x000F;
 temp_fraction *= 625;
 // Convert temp_fraction to characters
 text[4] = temp_fraction/1000 + 48;		 // Extract thousands digit
 text[5] = (temp_fraction/100)%10 + 48;		 // Extract hundreds digit
 Lcd_Out(2, 7, text);						 // Print temperature on LCD
 // Print degree character, 'C' for Centigrades
 Lcd_Chr_CP('\'');							 // 176 ASCII for degree symbol
 Lcd_Chr_CP('C');
}
void adcRead ()
{
	 temp_main = ADC_Read (0) ;
	 WordToStr(temp_main, txt4);
	 Lcd_Out(1, 3, txt4);
}
void main()
{
TRISA = 0b0000011 ;
PORTA = 0 ;

Lcd_Init();								 // Initialize LCD
Lcd_Cmd(_LCD_CLEAR);						 // Clear LCD
Lcd_Cmd(_LCD_CURSOR_OFF);					 // Turn cursor off
do
{
adcread () ;
Resolution();
switch( family_code )
{
 case 0x28: // DS18B20
 Read_Temperature();
 Display_Temperature();
 break;
 default:
 break;
}
Delay_ms(100);
} while (1);
}

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

я же написал, "Подскажите где ошибка,значение АЦП на дисплей выводит,значение температуры нет.Контроллер PIC16F819. Может в коде чего лишнее присутствует."

и никто не спрашивал, что мне нужно

вы внимательно посмотрите, над кодом есть текст ...

А вообще мне кажется, тут не только пра правнукам пофиг на проблемы , но и всем остальным

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

и никто не спрашивал, что мне нужно
А почему из Вас должны всё вытягивать ?
А вообще мне кажется, тут не только пра правнукам пофиг на проблемы , но и всем остальным
А мне кажется, что многие просто обнаглели. Думают - дай ка я скажу что у меня не работает, а на форуме обязаны быть экстрасенсами, задавать наводящие вопросы, вытягивать всю информацию и т.д.. , как няньки с детьми. А я, типа, если что, "хлопну дверью".

Давайте я Вам назову проблему, а Вы мне назовёте причину ? Например - у меня не показывает телевизор, в чём проблема ? Давайте, ответьте мне на этот вопрос :)

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

Уважаемый Аlex ,я повторю еще раз.Я написал,что не выводит значение температуры на дисплей ,Значение АЦП выводит, а температуры нет,что тут непонятного??? Выложил код.Хорошо,что я должен был спросить так,что бы понятно было? А если у вас не работает телевизор, для начала проверьте, включен ли он в сеть =)

А по поводу "что все обнаглели" ,смысл форума вообще теряется... Закрыть тогда ветку "для начинающих" и регистрировать на форуме только опытных.

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

А если у вас не работает телевизор, для начала проверьте, включен ли он в сеть =)
Нет, не угадали, ещё есть варианты ? :)

У Вас, кстати, был такой-же вопрос - не показывает температуру на экране.

Во первых. Вопрос двоякий. Не показывает совсем или показывает неправильно ?

Дальше. Если совсем не показывает. Значит проблема с дисплеем. А это ещё куча вариантов. Тут нужно знать, показывает ли он вообще чего на этой строке, либо из массива. Все функции вывода на дисплей спрятаны, ничего не понятно, куда смотреть, что искать, ...

Если показывает неправильно. Значит проблема с измерением. Тут ещё больше вариантов. От Вашего, сказавшего мне (нет питания на датчике), до проблем с интерфейсом 1-Wire, которого, кстати, тоже не видно в Вашем коде.

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

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

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

Ага, теперь понял откуда растут все эти ноги :)

Вы собрали устройство, а оно не зафурычило. И Вы решили сами написать программу.

Ну что ж, похвально, путь правильный...

Удачи...

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

Alex, нет вы не правы.Это устройство ,которое не хочет показывать температуру собрано на макетке. То про которое Вы говорите-это вольтметр с термометром,оно заработало. Контролер оказался глючным,его замена все решила.

Вот захотелось, так сказать с ноля и понять как это работает.

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

Ну так, при помощи отладчика... берешь и понимаешь. Начинаешь с заглушек. Вместо того чтобы общаться с реальным железом, для начала возьми просто константу и попытайся вывести на экран. Да и вообще попытайся туда вывести просто символы. Может ты просто НЕ ТУДА выводишь. Адресация у экранов бывает довольно странной, и библиотека может быть не в курсе что вы используете другой дисплей с совершенно другим адресом начала второй строки.

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

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

Alexeyslav, на дисплей выводит.Там все понятно.И свои пробовал рисовать и текст выводит.Пока еще не занимался, некогда.На данный момент проблема частично решилась.Теперь задача что бы при отрицательной температуре были минус на дисплее и значение было с запятой.Буду курить даташит.

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

Не особо рассчитывая на ответ, все-же спрошу снова: какая из программ позволит прошить Extra -Picom микроконтроллер в операционке windows 8. Picpgm, winpic800?

Стоит вообще пытаться? У меня замкнутый круг: дома ноут без сом порта. На работе win 7 и стоят запреты на запуск установочных файлов без прав администратора, у брата win 8. Icprog не требует установки, посему единственная, прога которой можно пользоваться, но там нет возможности прошить PIC16F886. Встречал информацию, что можно установить конфигурацию софта самостоятельно, но даже не представляю, как это сделать.

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

Стоит вообще пытаться? У меня замкнутый круг: дома ноут без сом порта.
пытайтесь кто запрещает? и что мешает приобрести пиккит2 или 3, да бы не проводить танцы с бубном....
Ссылка на комментарий
Поделиться на другие сайты

Экстрапик работает через адаптер ЮСБ-СОМ. Правда очень медленно, но пойдет! Picpgm работает на восьмерке. Только номер порта надо задать в диспетчере устройств от 1 до 3.

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

Стоит вообще пытаться? У меня замкнутый круг: дома ноут без сом порта.
пытайтесь кто запрещает? и что мешает приобрести пиккит2 или 3, да бы не проводить танцы с бубном....

Вы не задавались вопросом, что при необходимости прошить 1-2 чипа, нецелесообразно покупать PicKit2? Я, собственно и Экстра Пик собрал, ради 1 контроллера.

Экстрапик работает через адаптер ЮСБ-СОМ. Правда очень медленно, но пойдет! Picpgm работает на восьмерке. Только номер порта надо задать в диспетчере устройств от 1 до 3.

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

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

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

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

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

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

Можно подробнее?

Купил переходник, не выходит, к сожалению, не обнаруживается программатор. Один раз каким-то чудом обнаружился,долго возился, но верификацию не прошел. При использовании переходника. Какие настройки ставить, порт и вид программатора? Да еще один нюанс, шью внутрисхемно.

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

Посмотрел, все-таки там AVR прошивали, а PIC не получится - ему надо как минимум +13В для программирования, которые с клавиатуры не взять. А контролер какой? у 628 кажется, есть аткой прикол - у него есть дополнительный вывод запрета программирования про который обычно забывают и он болтается в воздухе и поэтому его то видно то не видно - потенциал вывода очень легко меняется окружающими наводками.

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

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

Экстрапик на МАХ232? Дополнительное питание имеется?

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

Экстрапик на МАХ232? Дополнительное питание имеется?

Да, питание 2 Кроны. Но VPP не включатся программным способом, слегка горит светодиод красный и напряжение 3,6 В на VPP сразу при подключении питания программатора, по даташиту должно хватать для начала программирования, но пишут, что разное бывает. 2 кроны 20В выходит, до этого шил 16f876a от БП с напряжением 18В. Видно 20 многовато.

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

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

Вы не задавались вопросом, что при необходимости прошить 1-2 чипа, нецелесообразно покупать PicKit2? Я, собственно и Экстра Пик собрал, ради 1 контроллера.

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

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

ЗЫ. и да 3,6в на ноге программирования это много...

и для нормально собранного экстрапика и 25в по питанию нормально....

ЗЗЫ. пики в отличии от авиров через переходники юсби-ком не шьются....

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

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

Шьются, только медленно и нормальным Экстрапиком

icprog12.jpg

(без батареек и прочей лабуды). Специально проверял. А так есть Пиккит2 лайт.

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

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • Похоже вас угораздило на латералы попасть. Они сами себя стабилизируют и никакой дополнительной стабилизации им не нужно. У меня двухкиловаттные Крафты так на металлических Эксиконах работают даже без "эмиттерных" резисторов. Тупо впараллель.
    • @korsaj Попробовал записать код в разных вариантах предложенных тобой. Первый вариант вообще отказался работать. Заработал второй вариант на приём. Теперь уже хотя бы есть полноценный приём. char i = 0; if (rx_buf[i] == 'M'){ i++; if (rx_buf[i] == '1') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран номер текущего трека LED_1_ON(); LED_2_OFF(); send_UART('M'); send_UART('1'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == '2') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран количество треков LED_1_OFF(); LED_2_ON(); send_UART('M'); send_UART('2'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'T') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран общее время трека LED_1_ON(); LED_2_ON(); send_UART('M'); send_UART('T'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } else if (rx_buf[i] == 'K') { //unsigned int n = getDecFromHexStr(rx_buf, i+2); //Выводим на экран текущее время трека LED_1_OFF(); LED_2_OFF(); send_UART('M'); send_UART('K'); send_UART(0x0D); send_UART(0x0A); _delay_ms(10); flags = 0; } } Но однако есть ещё некоторые вещи которые нужно подкорректировать. Пока я просто разбираю UART поэтому на терминал вывожу так сказать ответ ну и просто видеть потому как индикатора к микре не подключено пока что. Однако такой вариант с ответкой нужен будет мне и для другого проекта где UART лучше всего подойдёт. Это я уже смотрю на будущее. Но тут тоже когда приходит комманда по  UART микроконтроллер отправляет ответ, но он начинает постоянно спамится. Нужно как то сделать чтоб этого не происходило. Я же в свою очередь пробовать сбросить flags = 0;, но это никак не помогло. Может чего подскажешь тут понятно что нужно как то будет обнулить данные чтобы выйти из этого условия программы. Есть вот такая проблемка. И ещё есть одна проблема с строкой  unsigned int n = getDecFromHexStr(rx_buf, i+2); Не спроста я её отключил в коде с помощью комментария. А тут проблема в том что студия не может опзнать этот код. Возможно нужно что подключить из встроенных библиотек самой студии.
    • Зачем закладываться на максимальный ток стабилитрона? Поставьте по два двухкилоомных последовательно или возможно 3-5 килоома что то есть.
    • Здравствуйте. В эту магнитолу захотелось установить модуль блютуз. Вроде бы проблем нет, да? Привод CD выкинут как рудимент,- на нём драйвер сгорел (не хорошие инженеры, на огромной линейке моделей подложили бяку-серво двигатель и на нём платка переходник для распайки на плату обработки, только вот двигатель болтается в пластике посадочном убивая пайку делая плохое самочувствие драйверу-привода-лазера))). Вот. Проблемы начинаются следующие. Тюнер имеет мозги аудиопроцессору по цифре,-отпадает. Разъёма чейнджера нет но есть вся разводка без обвязки,-восстановление мелочи (стаб-рез) и эмуляция подключенного чейнджера не помогает, странно Kasuga Radio Co. Ltd. (это ирония про 1946 год) сэкономила на программном обеспечении . Ага. Подключится на вход УМЗЧ-пошло и глупо. Вопрос. Есть варианты подключить? kenwood_kdc-4590.pdf
    • А здесь всё о том как и чем делать ...
    • "Приходит мужик в магазин одежды, чтоб подобрать себе шляпу. Надевает первую попавшуюся, а она ему - как раз." А вообще не понятно. Он ему дает говорить, даже матюкаться, а анекдот не дает рассказать. Почему? (сори, если вопрос тупой, я просто не в теме радиосвязи и радиохулиганства)
  • Похожий контент

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