С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141

Начал изучать ассемблер

21.05.2022, 17:35. Показов 1054. Ответов 14

Студворк — интернет-сервис помощи студентам
Я только начал изучать ассемблер и дошел до датчика DS18b20.
Хочу получить ответ датчика.

Datesheet:
Во время последовательности инициализации ведущее устройство передает импульс сброса (Tx), формируя на шине сигнал низкого уровня в течение времени не менее 480 мкс. Далее, ведущее устройство освобождает шину и переходит в режим приема (Rx). Когда шина освобождается, она подтягивается к высокому логическому уровню резистором 5 кОм. Датчик выделяет положительный фронт, ждет 15-60 мкс и передает импульс присутствия, удерживая низкий уровень линии на время 60-240 мкс.
Участок кода:

Assembler
1
2
3
4
5
6
7
8
9
10
bsf         PORTD, 7
bcf         PORTD, 7
rcall       ms_500    ; задержка
 
bsf         TRISD, 7
nop
 
No_0     btfsc      PORTD,7
            goto       No_0
            goto       Yes_0
Но ответа на шине 0 я не получаю.
Что не так с моим кодом?

Добавлено через 3 часа 38 минут
Может я не понятно написал?
Контроллер pic18F*
Хочу получить ответ присутствия датчика.
Часть кода:
Assembler
1
2
3
4
5
6
7
8
9
10
bsf PORTD, 7
bcf PORTD, 7
rcall ms_500 ; задержка
 
bsf TRISD, 7
nop
 
No_0 btfsc PORTD,7
goto No_0
goto Yes_0
Ответ - 0 не получаю, только 1 от подтягивающего резистора
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2022, 17:35
Ответы с готовыми решениями:

Начал изучать STM32, я в лёгком недоумении )
Здравствуйте уважаемые форумчане! Долгое время сидел на 51м ядре, включая его продвинутые версии и вот решил с нуля изучить кортекс. Пишу...

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

Начал изучать JS
прочитал в книге спецификации CSS и вспомнил молодость, скроллер в стиле Amiga: <!DOCTYPE html> <html> <head>...

14
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8647 / 4482 / 1669
Регистрация: 01.02.2015
Сообщений: 13,889
Записей в блоге: 12
21.05.2022, 21:20
Уже забыл протокол I2C, поэтому не уверен в совете.
Сигнал "сброс" формируется обеими линиями - и SDA и SDL.
Когда-то на AVR читал содержимое EEPROM 24c04, использовал следующие последовательности действий - без проверки корректности и времени задержки реакции.
Т.е. сброс сложнее, чем показанный у Вас.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//-----------------------------------------------------------------
// Условие СТАРТ (SCL=1, SDA=1->0)
//-----------------------------------------------------------------
// На входе  SDA=1, SCL=1
// На выходе SDA=0, SCL=0
#define i2c_START     i2c_RstSDA; \
                      i2c_pause;  \
                      i2c_RstSCL; \
                      i2c_pause
//-----------------------------------------------------------------
// Условие СТОП (SCL=1, SDA=0->1)
//-----------------------------------------------------------------
// На входе  SDA=0, SCL=0
// На выходе SDA=1, SCL=1
#define i2c_STOP      i2c_SetSCL; \
                      i2c_pause;  \
                      i2c_SetSDA; \
                      i2c_pause
 
void e24c_software_reset(void)
{
  unsigned char i;
 
  i2c_START;
  i2c_SetSDA;
  _delay_ms(1);
  for(i=9; i>0; i--)
  {
     i2c_SCLToggle;
  }
  i2c_SetSCL;
  _delay_ms(1);
  i2c_START;
  i2c_STOP;
}
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
21.05.2022, 22:39
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Уже забыл протокол I2C,
Цитата Сообщение от cosmos44 Посмотреть сообщение
датчика DS18b20.
там не I2C, там 1-Wire, причем может работать с "паразитным питанием"
http://mypractic.ru/ds18b20-da... azyke.html
1
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
22.05.2022, 14:10  [ТС]
Нашел пример (там от начала и до конца, но приведу часть):
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
// Инициализация DS18B20
unsigned char DS18B20_init(void)
{
DDRC |= (1 << PC0); // PC0 - выход
PORTC &= ~(1 << PC0); // Устанавливаем низкий уровень
_delay_us(490);
DDRC &= ~(1 << PC0); // PC0 - вход
_delay_us(68);
OK_Flag = (PINC & (1 << PC0)); // Ловим импульс присутствия датчика
// если OK_Flag = 0 датчик подключен, OK_Flag = 1 датчик не подключен
_delay_us(422);
return OK_Flag;
}
Я уже повторил точь в точь интервалы и все одно не получаю импульс присутствия датчика
мой участок кода:
Assembler
1
2
3
4
5
6
7
8
9
10
11
bcf           TRISB, 7 ;  // PORTB, 7 работает на выход
bsf           PORTB, 7 ; // Логическая 1
bcf           PORTB, 7 ; // Логический 0
rcall         ms_480  ;  // задержка 480млс
 
bsf         TRISB, 7  ;   // PORTB, 7 работает на вход
rcall       ms_68   ;  // задержка 68млс
 
no_0        btfsc      PORTB,7 ;проверяю ноль или единица?  Но там всегда 1 от подтягивающего резистора
               goto       no_0
               goto        Yes_0
0
Эксперт по электронике
6531 / 3160 / 333
Регистрация: 28.10.2011
Сообщений: 12,406
Записей в блоге: 7
22.05.2022, 15:21
Цитата Сообщение от cosmos44 Посмотреть сообщение
Assembler
1
2
rcall       ms_480  ;  // задержка 480млс
rcall       ms_68   ;  // задержка 68млс
Миллисекунд или микросекунд? Это не одно и тоже.
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
22.05.2022, 20:10  [ТС]
У меня "Миллисекунд" расчет.
И подскажите по возможности! Ту часть кода которую я представил - какой это язык используется?
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
22.05.2022, 20:16
Цитата Сообщение от cosmos44 Посмотреть сообщение
У меня "Миллисекунд" расчет.
10-3
а в приведенном коде
Цитата Сообщение от cosmos44 Посмотреть сообщение
_delay_us(490);
микросекунд! 10-6
Цитата Сообщение от cosmos44 Посмотреть сообщение
Ту часть кода которую я представил - какой это язык используется?
это язык С, судя по именам регистров это камень AVR
1
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
22.05.2022, 20:40  [ТС]
Datesheet: инициализация датчика
Во время последовательности инициализации ведущее устройство передает импульс сброса (Tx), формируя на шине сигнал низкого уровня в течение времени не менее 480 мкс. Далее, ведущее устройство освобождает шину и переходит в режим приема (Rx). Когда шина освобождается, она подтягивается к высокому логическому уровню резистором 5 кОм. Датчик выделяет положительный фронт, ждет 15-60 мкс и передает импульс присутствия, удерживая низкий уровень линии на время 60-240 мкс.

Приношу извинения за не правильный ответ. У меня временные данные и приведенного выше.
А конкретно по моему коду ошибку не подскажите? Почему датчик не отвечает?
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
23.05.2022, 11:22  [ТС]
Datesheet: инициализация датчика
Во время последовательности инициализации ведущее устройство передает импульс сброса (Tx), формируя на шине сигнал низкого уровня в течение времени не менее 480 мкс. Далее, ведущее устройство освобождает шину и переходит в режим приема (Rx). Когда шина освобождается, она подтягивается к высокому логическому уровню резистором 5 кОм. Датчик выделяет положительный фронт, ждет 15-60 мкс и передает импульс присутствия, удерживая низкий уровень линии на время 60-240 мкс.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Прошу помощи в объяснении???
Исходя из Datesheet: инициализация датчика (контроллер у меня pic18f452)

POTD - устанавливаю ему 0 (работает на выход)
задержка не менее 480 мкс
POTD - перевожу его на прием
задержка не менее 60мкс
POTD - ожидаю 0 на шине от датчика пока там висит 1 от подтягивающего резистора

На сколько мне понятна логика?! Но в результате ответ 0 от датчика я не получаю.

Все ли верно я делаю? Если нет, то подскажите пожалуйста.
Моделирую MPLAB IDE v8.92 с PROTEUS 7 в паре.
0
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
23.05.2022, 12:35
cosmos44, выше же написали.
В даташите задержка 480 мкс, а в коде 480 мс.
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
23.05.2022, 13:11  [ТС]
Я ставил и микросекунды и миллисекунды - результат тот же
0
Эксперт по электронике
6531 / 3160 / 333
Регистрация: 28.10.2011
Сообщений: 12,406
Записей в блоге: 7
23.05.2022, 13:14
Цитата Сообщение от cosmos44 Посмотреть сообщение
Я ставил и микросекунды и миллисекунды - результат тот же
Как ставили?
Уверены что время выдержано правильно?
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
23.05.2022, 13:16  [ТС]
Пользуюсь калькулятором задержки для pic18
500 миллисекунд:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  movlw       .85
            movwf       Reg_1
            movlw       .138
            movwf       Reg_2
            movlw       .3
            movwf       Reg_3
            decfsz      Reg_1
            bra         $-2
            decfsz      Reg_2
            bra         $-6
            decfsz      Reg_3
            bra         $-.10
            nop
            nop
70 миллисекунд:
Assembler
1
2
3
4
5
6
7
8
9
10
      movlw       .231
            movwf       Reg_1
            movlw       .91
            movwf       Reg_2
            decfsz      Reg_1
            bra         $-2
            decfsz      Reg_2
            bra         $-6
            nop
            nop
Если у вас есть возможность, дайте задержки
0
Эксперт по электронике
6531 / 3160 / 333
Регистрация: 28.10.2011
Сообщений: 12,406
Записей в блоге: 7
23.05.2022, 13:23
Цитата Сообщение от cosmos44 Посмотреть сообщение
Почему датчик не отвечает?
Ошибка в схеме, во временных интервалах, в коде, может неисправный датчик. Причин может быть очень много.

Цитата Сообщение от cosmos44 Посмотреть сообщение
500 миллисекунд
Нужно 480 и 60 микросекунд, а не миллисекунд. Отличие в 1000 раз!
При расчете учитываете тактовую частоту МК? У некоторых PICF18 есть умножитель. Надеюсь учли его?

Цитата Сообщение от cosmos44 Посмотреть сообщение
Если у вас есть возможность, дайте задержки
Как, если вы не указали тактовую частоту? Временные интервалы напрямую от нее зависят.
2
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
23.05.2022, 19:29  [ТС]
ОК, понял, спасибо.
Я только как 3 недели начал изучать .asm

Буду пробовать, изучать

Добавлено через 5 часов 57 минут
Огромное спасибо! Решил вопрос, я не учел частоту.
Бился на форуме 3 дня с вопросом. Ваш ответ был, объемным и понятным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2022, 19:29
Помогаю со студенческими работами здесь

начал изучать с++
начал учить с++, мне порекомендовали купить &quot;Полный справочник по С++&quot; Герберта Шилдта , купил, но вот в чем проблема - примеры программ...

Начал изучать С++
Я решил изучить С++ для этого значит скачал VS2010. Но я не могу понять эта реда позволяет конструировать формы в визуальном стиле? Ну...

Начал изучать ООП
Условие задачи: 1 Заполнить массив нулями, кроме первого и последнего элементов, которые должны быть равны единице. После С++ какое-то...

Только начал изучать C++
Здравствуйте.Я только два дня назад начал изучать С++.И вот такой вопрос,я не пойму как узнать какую функцию необходимо подключить для того...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru