Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Зависание

Сообщений 61 страница 90 из 159

61

Mrshilov написал(а):

Еще вариант.

А ссылочку?
Чего там за LCD стоит?

0

62

Как можно решить следующий вопрос:
...
GOSUB 1
...
1:
if a=0 then goto 2
return
...
Как сделать так, чтобы вернуть стек после goto?

0

63

sasha_1973 написал(а):

Это в каком смысле?

После инструкции GOSUB в стеке остаётся адрес. Так? Но по условию мы уходим. Как вернуть правду для МК?

0

64

sasha_1973 написал(а):

Это в каком смысле?

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

Такое лучше не делать. Обычно есть другие варианты.

0

65

Пётр написал(а):

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

Это ясно. Как средствами bascoma можно это решить?

0

66

sasha_1973 написал(а):

Вместо Goto метка, вставьте это:

    !ldi ZL , low(метка)
    !ldi ZH , high(метка)
    !ijmp

В стеке останется мусор.

0

67

Разве это решит проблему стека? Адрес возврата от туда никуда не денется.
Нужно попробовать дважды вызвать команду POP перед Goto или же вместо текущего адреса возврата в стеке пометить тот куда нужно перейти и выполнить Return.

0

68

Пётр написал(а):

Разве это решит проблему стека? Адрес возврата от туда никуда не денется.

Вот я и спрашиваю, как решить пробему.

0

69

Я написал варианты решения.

0

70

Пётр написал(а):

Я написал варианты решения.

Не понял Вас.

0

71

sasha_1973 написал(а):

Читаем документацию!

http://www.atmel.com/images/Atmel-8271- … mplete.pdf

стр. 616

IJMP      Indirect Jump to      (Z)   PC = Z

IJMP Косвенный переход на (Z) PC = Z = адрес возврата (подмена адреса возврата из регистровой пары R30:R31)

Отредактировано sasha_1973 (Сегодня 21:42:09)

Не понимаю, можно по-русски?

0

72

sasha_1973 написал(а):

а это что, по китайски?
текущий адрес возврата по return, заменяется адресом возврата на новую метку, без последствий для стека!

Не знаю я китайский, хамство не есть помощь.

0

73

Tankor написал(а):

Не понял Вас.

Пётр написал(а):

Нужно попробовать дважды вызвать команду POP перед Goto или же вместо текущего адреса возврата в стеке пометить тот куда нужно перейти и выполнить Return.

Я написал как можно сделать. Сам этого не делал, т. к. пишу структурированный код, без необходимости Goto.

+1

74

Пётр написал(а):

Я написал как можно сделать. Сам этого не делал, т. к. пишу структурированный код, без необходимости Goto.

Из всего сказанного делаю вывод, что нужно делать
!pop
!pop
А какие регистры?

0

75

необходимо вот это перевести на асм.:
If Alarm_weekday.tempvar2 = 1 Then Goto Repeat_alarm

Делаю с проверкой бита в регистре, не выходит.
!LDS r16,{Alarm_weekday}
!SBRC r16,tempvar2
!JMP Repeat_alarm
1:

Ругается на строку проверки бита в регистре (оно и понятно, компилятор не понимает этого). Каким макаром это проделать? %-)
Может сдвигать R16 влево Tempvar2 раз и проверять флаг переполнения C?

Отредактировано Tankor (2016-02-04 05:31:56)

0

76

http://s6.uploads.ru/t/4buBv.png
Итак, схема с прошивкой готова. (упрощённый макет работает). В меге есть ещё место для реализации общения с большим братом (пока не реализовано, но FT зарезервировал на схеме). Плавно переходим к разводке.
Проект: Ссылка

Отредактировано Tankor (2016-02-09 00:15:41)

0

77

Mrshilov написал(а):

Не замеряли утечку с аккумуляторов в АЦП при отключенном "Voltage enable"?

Замеры токов не производил, работаю с PINBOARD II. Отдельно не запитывал. Могут быть проблемы? У меня АЦП работает только в определённом "экране", т.е я его активирую, замеряю и выключаю. Понимаю, что АЦП кушать любит.

Отредактировано Tankor (2016-02-09 07:15:48)

0

78

Tankor написал(а):

Могут быть проблемы?


Здесь описание

+1

79

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

Отредактировано Tankor (2016-02-09 07:33:12)

0

80

Tankor написал(а):

то индикатором, что батарей дохнет, будет сброс даты

Не будет, просто Ds-ка остановится.

Надо проверять работу генератора.

+1

81

Это можно. У неё есть выход 1Гц.

0

82

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

0

83

Батарейки или аккумулятора?

0

84

Tankor написал(а):

Это можно. У неё есть выход 1Гц.


Если планируете использовать прерывание, для 1 Гц, то оно довольно много потребляет!

Отредактировано sasha_1973 (2016-02-09 07:42:41)

0

85

sasha_1973 написал(а):

Батарейки или аккумулятора?

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

0

86

sasha_1973 написал(а):

Если планируете использовать прерывание, для 1 Гц, то оно довольно много потребляет!

У меня все прерывания уже заняты на кнопках. Тоды как?

Отредактировано Tankor (2016-02-09 07:45:53)

0

87

Всё зависит от тока нагрузки, чем больше ток, тем чаще измерять, что-бы вовремя сигнализировать о разряде + к этому, контоллер разряда Li-ion

0

88

А вариант с использованием выхода ds на 32768 и подать на вход 0 или 1 таймера? О потом сравнивать с предыдущим состоянием. Прокатит?

0

89

sasha_1973 написал(а):

Всё зависит от тока нагрузки, чем больше ток, тем чаще измерять, что-бы вовремя сигнализировать о разряде + к этому, контоллер разряда Li-ion

Это не настолько серьёзное устройство. Интервал 30 сек. хватит?

Отредактировано Tankor (2016-02-09 07:49:34)

0

90

Tankor написал(а):

У меня все прерывания уже заняты на кнопках. Тоды как?


Почитайте

0