Страница 9 из 160

Добавлено: Сб май 16, 2009 20:16:17
Pooher
2 MeL$
Без схемы и прошивки Вам никто ничего конкретного не скажет.
В общем "Классика": "Схему и прошивку-в студию".

Добавлено: Вс май 17, 2009 15:34:30
MeL$
схема и прошивка ...

Добавлено: Вс май 17, 2009 17:59:05
Pooher
В PROTEUS элементы надо соединять ОБЯЗАТЕЛЬНО ПРОВОДНИКАМИ, НЕ ДОПУСТИМО соединять элементы между собой на прямую.

Рабочая схема в PROTEUS и исходник (поправленный) в приложении.

Добавлено: Вс май 17, 2009 18:36:31
MeL$
мегаспасибо!
только непонятно почему схема без ожидания нажатия/отпускания не работает :o

Добавлено: Вс май 17, 2009 18:57:24
Pooher
Без ожидания отпускания она работает. Но посчитайте, сколько раз светодиод моргнёт при нажатии на кнопку продолжительностью, ну например 1 секунду, при частоте работы контроллера скажем 1MHz.
Если собрать в железе, то светодиод для нашего глаза будет просто более тускло гореть. Ну и в PROTEUS в принципе тоже самое, просто светодиод там имеет только два состояния. На слабом компьютере он будет моргать.

Добавлено: Вс май 17, 2009 19:13:45
edm2007
Да-да, я про это выше и писал. Светодиод состояние сменил, кнопку опросили, снова состояние сменили... И так по кругу, пока кнопку не отпустим... Можно ставки делать, ибо непонятно в каком состоянии мы остановимся, когда кнопку отпустим. :)

Добавлено: Вс май 17, 2009 20:50:51
MeL$
это понятно всё
но момент отпускания каждый раз разный - величина случайная
по теории вероятности 50 на 50
когда то из PIND должна быть считана единица , а когда то - ноль
не так ???
а у меня всегда светодиод горит !
значет где то я ошибаюсь ...
а в исправленном исходнике только проверка отпускания кнопки добавлена
я уже всё проверил и побаловался ...
если б мой исходник работал, как я говорю ...
а оно ... :)))
господа гуру - разьясните plz
а то не усну :)))

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

Добавлено: Вс май 17, 2009 21:01:56
edm2007
MeL$ писал(а):это понятно всё
но момент отпускания каждый раз разный - величина случайная
по теории вероятности 50 на 50
когда то из PIND должна быть считана единица , а когда то - ноль
не так ???
а у меня всегда светодиод горит !
значет где то я ошибаюсь ...
а в исправленном исходнике только проверка отпускания кнопки добавлена
я уже всё проверил и побаловался ...
если б мой исходник работал, как я говорю ...
а оно ... :)))
господа гуру - разьясните plz
а то не усну :)))

пс а может и не я ошибаюсь, а есть какая то особенность или настройка в протеус ...
я уж и временем срабатывания кнопки баловался - ставил на порядок выше частоты
чтоб во время срабатывания кнопки не укладывалось целое число тактов МК
а то походу он действительно всегда одно и тоже считывать из PIND будет
Что-то я не понимаю совсем... Что тебя смущает-то? Кнопку нажали (ноль с PD0 считали), перешли к проверке отпускания. Пока кнопку удерживаешь (ноль на порте) так на месте и будем крутиться (ждать когда отпустишь). Только отпустил, строчку перепрыгнули, состояние порта поменяли и в начало. Если цикл ожидания после смены состояния поставить то светодиод зажигаться / гаснуть будет при нажатии а не при отпускании.

Тебя смущает что без проверки не получается "генератор случайного светодиода"? :)

Добавлено: Вс май 17, 2009 21:21:00
MeL$
тут ничего не смущает и всё понятно ...
мне непонятно почему не работает в протеус мой упрощенный исходник
помоему он должен работать с той лиишь разницей, что факт зажигания диода - величина случайная
зависит не только от факта нажатия кнопки но и от времени ее отпускания (на момент отпускания установлен или сброшен бит порта Б )

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

Добавлено: Вс май 17, 2009 21:27:21
edm2007
MeL$ писал(а):тут ничего не смущает и всё понятно ...
мне непонятно почему не работает в протеус мой упрощенный исходник
помоему он должен работать с той лиишь разницей, что факт зажигания диода - величина случайная
зависит не только от факта нажатия кнопки но и от времени ее отпускания (на момент отпускания установлен или сброшен бит порта Б )

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

Добавлено: Вс май 17, 2009 21:30:16
MeL$
аха
вот и я про то
тока он всеравно горит постоянно :cry:

Добавлено: Вс май 17, 2009 21:36:26
edm2007
MeL$ писал(а):аха
вот и я про то
тока он всеравно горит постоянно :cry:
Хм, а у меня без проверки меняется состояние по кругу на выходе. Все как и должно быть.

Добавлено: Вс май 17, 2009 21:38:03
MeL$
это с моим исходником ?

Добавлено: Вс май 17, 2009 21:41:29
Pooher
В PROTEUS всё работает в обоих случаях. Пощёлкайте кнопкой по дольше.
ЗЫ: Крайне не рекомендую разбираться в багах PROTEUS (А это именно БАГ). Дело не благодарное и бессмысленное. Хотите получить РАЛЬНЫЙ результат, соберите в РЕАЛЬНОМ железе.

Добавлено: Вс май 17, 2009 21:42:40
edm2007
MeL$ писал(а):это с моим исходником ?
Да, конечно. Пока кнопку держишь - наяривает. Только светодиод горит. Как уже говорили сегодня, не способен он в полнакала гореть. А вот когда отпускаешь - угадывать можно, ибо хрен знает что там будет. Там же видно как уровень меняется (красный / синий).

Добавлено: Вс май 17, 2009 21:45:37
MeL$
ага
всем большущее спасибо

Ошибка AVR

Добавлено: Ср май 20, 2009 06:24:42
nppElM
Здраствуйте! Подскажите пожалуйсто, компилятор после через некоторое время с момнта запуска выдает ошибку AVR Simulator: Stack pointer below start of RAM, понимаю что ошибка глобальная, но не могу понять что приводит к ее появлению :(

Re: Ошибка AVR

Добавлено: Ср май 20, 2009 11:40:38
edm2007
nppElM писал(а):Здраствуйте! Подскажите пожалуйсто, компилятор после через некоторое время с момнта запуска выдает ошибку AVR Simulator: Stack pointer below start of RAM, понимаю что ошибка глобальная, но не могу понять что приводит к ее появлению :(
День добрый. Исходник можно? Насколько я понимаю он говорит что указатель стека ниже начала ОЗУ.

Спасибо!

Добавлено: Ср май 20, 2009 11:49:33
nppElM
Большое спасибо за участие :) Ошибка нашлась - некорректый возврат из п/п по ret привел к такому вот вываливанию из стека.

Re: Спасибо!

Добавлено: Ср май 20, 2009 12:49:38
edm2007
nppElM писал(а):Большое спасибо за участие :) Ошибка нашлась - некорректый возврат из п/п по ret привел к такому вот вываливанию из стека.
Вот и замечательно. :)