Например TDA7294

Форум РадиоКот :: Просмотр темы - Не работает простейший код. Прошу помощи.
Форум РадиоКот
https://radiokot.ru/forum/

Не работает простейший код. Прошу помощи.
https://radiokot.ru/forum/viewtopic.php?f=58&t=194996
Страница 1 из 1

Автор:  Ariadna-on-Line [ Сб сен 28, 2024 20:24:32 ]
Заголовок сообщения:  Не работает простейший код. Прошу помощи.

Простейший код не работает. Как заклинило. Вместо переключения по кнопкам имеем генерацию.
Спойлер' Show button press on LED

Device = 12F683

Declare Xtal = 4
Declare All_Digital = True ' все линии - цифровые
PortB_Pullups = On ' включить подтяжки
TRISB = %11111100 ' биты 0,1 -выходы, остальные - входы
Loop:

If PORTB.5 = 0 Then ' если кнопка ON прижата к земле
High PORTB.0 ' зажжем Зеленый
Low PORTB.1 ' погасим Rрасный
EndIf
DelayMS 100

If PORTB.4 = 0 Then ' если кнопка OFF прижата к земле
Low PORTB.0 ' зажжем Красный
High PORTB.1 ' погасим Зеленый
EndIf
DelayMS 100

GoTo Loop ' Do it forever


Вложения:
Безымянный.png [12.96 KiB]
Скачиваний: 84

Автор:  Martian [ Сб сен 28, 2024 20:34:03 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

если и PORTB.5 = 0 и PORTB.4 = 0, то конечно будет генерация, так как отработают обе ветки и выходы 0 и 1 оба раза переключатся.
А в этом языке сравнение одним знаком равно? И без скобок в условии?
А то смотрю, как-то странно: вверху присваивание такое же...

Автор:  Ariadna-on-Line [ Сб сен 28, 2024 21:12:21 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

если и PORTB.5 = 0 и PORTB.4 = 0, то конечно будет генерация, так как отработают обе ветки и выходы 0 и 1 оба раза переключатся.
А в этом языке сравнение одним знаком равно? И без скобок в условии?
А то смотрю, как-то странно: вверху присваивание такое же...

Вы же на картинке видите что на обоих входах высокий уровень, и переключаться вообще ничего не должно. Должно просто сохраняться предыдущее состояние.

Автор:  Martian [ Сб сен 28, 2024 21:53:04 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

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

Автор:  koms48 [ Вс сен 29, 2024 11:35:53 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

Биты конфигурации криво стоят.

Device = 12F683
@ CONFIG_REQ = 0 ; Override Compiler's configuration settings
Asm
__Config 0x31C4
EndAsm
Declare Xtal = 4
Declare All_Digital = On ' ??? ????? - ????????
Declare PortB_Pullups = On ' ???????? ????????
TRISIO = %11111100 ' ???? 0,1 -??????, ????????? - ?????
Loop:
If PORTB.5 = 0 Then ' ???? ?????? ON ??????? ? ?????
GPIO.0 =1' ?????? ???????
GPIO.1 =0' ??????? R??????
EndIf
DelayMS 100

If GPIO.4 = 0 Then ' ???? ?????? OFF ??????? ? ?????
GPIO.0=0 ' ?????? ???????
GPIO.1=1 ' ??????? ???????
EndIf
DelayMS 100

GoTo Loop

Автор:  Martian [ Вс сен 29, 2024 13:39:41 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

А как TRISIO и GPIO видят, какой именно порт из А B C D и т.д.?

Автор:  Ariadna-on-Line [ Вс сен 29, 2024 16:05:02 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

Биты конфигурации криво стоят...
Верно. Заработало. Спасибо, дорогой !!!. В жизни бы не догадался в чем собака зарыта. Буду разбираться в чем тут логика. С уважением.
ПС. Попытка выставить в Протеусе слово конфигурации 0x31C4, если оно не выставлено в самом хекс-файле - к успеху симуляции не приводит.

Автор:  Martian [ Вс сен 29, 2024 16:14:35 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

В жизни бы не догадался
Вот поэтому нужно параллельно пользоваться (учиться пользоваться) отладчиком. Тогда не надо догадываться: раз Вы подали какой-то уровень на вход, а он не отрабатывается, то смотрите в отладчике состояние регистров портов и тут же понимаете, что они не такие, как должны. Более того: вручную выставив в отладчике правильное состояние регистров, Вы получаете приемлемую работу программы и сразу понимаете, что необходимо внести в код.
В общем, отладчик - это невероятно удобный инструмент.

Добавлено after 1 minute 29 seconds:
P.S. И всё-таки разумнее использовать более популярные языки программирования - сообщество больше, книжек и примеров больше, инструментов больше...

Автор:  Ariadna-on-Line [ Вс сен 29, 2024 16:49:36 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

А как TRISIO и GPIO видят, какой именно порт из А B C D и т.д.?
TRISIO и GPIO - только у PIC12Fxxx. Он единственный. И может быть без проблем обозван как PORTB, TRISB и тд.

Автор:  Martian [ Вс сен 29, 2024 16:55:38 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

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

Автор:  24Natan [ Вс сен 29, 2024 17:14:53 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

koms48 указал на config bits
Изображение
(получил подбором 31С4, по умолчанию - 3FFF)

Автор:  Martian [ Вс сен 29, 2024 17:20:22 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

А, точно...
Asm
__Config 0x31C4
EndAsm

Автор:  Ariadna-on-Line [ Вс сен 29, 2024 19:16:52 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

По умолчанию - 0x3FF4. То бишь внутренний такт 4 МГц.
ПС. В моем случае лучше - 0x31E4 - имеем рабочий пин Reset.

Автор:  Базилюк [ Вс сен 29, 2024 20:29:39 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

Интересно, это на каком языке? Чето типо Паскаля или Бейсика?

Автор:  Martian [ Вс сен 29, 2024 20:35:38 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

Proton PicBasic

Автор:  Ariadna-on-Line [ Пн сен 30, 2024 11:17:43 ]
Заголовок сообщения:  Re: Не работает простейший код. Прошу помощи.

Всё оказалось намного веселее :
Почему-то штатная Бейсиковская конструкция (используется во всех штатных примерах компилятора) -

Device = 12F683 ' PIC12F675 и тд.
Declare Xtal = 4 ' варианты - Declare Xtal 4; Xtal = 4

не срабатывает, а -

@ CONFIG_REQ = 0 ; Override Compiler's configuration settings
Asm
__Config 0x3FF4 ' Что то же самое !!!
EndAsm

срабатывает, и работает как требуется.

ПС. Пользовался раньше каким-то Proton-ом на другом компе - и горя не знал. Потому и версии не запомнил. А тут пришлось устанавливать - и такой заморок. Короче - проблема решена. Всем спасибо.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/