При выходе из функции я пишу в переменную адрес с которого вышел. При последующем входе начинаю не с начала, а с адреса который сохранён в переменной. Поэтому перемнная static, но при первом входе надо инициализировать переменную адресом первой комманды.
При выходе из функции я пишу в переменную адрес с которого вышел. При последующем входе начинаю не с начала, а с адреса который сохранён в переменной. Поэтому перемнная static, но при первом входе надо инициализировать переменную адресом первой комманды.
делаете что-то типа автомата состояний? ну так все гораздо проще делается:
Код:
voidmy_exotic_function(void){ staticunsignedint state = 0; switch(state){ case0: // первый вход state++; break; case1: // второй вход state++; break; } }
разумеется, изменить state можно любым способом - хоть с 0-го на 5-е сразу - это как вам по графу состояний нужно...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Что-то типа многозадачности. В программе работает паралельно несколько задач. Каждая задача это функция. В майне карусель вызывает их поочереди. Вошол в функцию, отработал, вышел. По карусели передалось управление следующей. При следущем входе управление передаётся в то место где закончил в прошлый раз. Общение между функциями через глобальные переменные и флаги.
З.Ы. Через switch case пробовал, но получается как-то кривовато, и не красиво.
Что-то типа многозадачности. ... З.Ы. Через switch case пробовал, но получается как-то кривовато, и не красиво.
Не надо изобретать велосипед , по крайней мере в этом направлении (взятие адреса метки или switсh-многозадачность) Его уже придумали и неплохо со всех сторон обсудили. Даже если что-то не нравится, лучше стартовать с достигнутого уровня и допиливать до своих требований. Начните с http://www.sics.se/~adam/pt/ - один из корней всего этого http://bsvi.pp.ua/protopotoki-protothreads/ - немного на русском и вообще гуглить protothreads
Базовая версия именно на switch/case, недостатом есть то, что нельзя в задачах использовать "системные" макросы внутри своих swicth, т.е. свои switch должны стоять только между "системными" вызовами. Достоинство - работает на любом компиляторе языка С. Говорят, в поледнее время компилятор CodeVision постепенно становится компилятором языка С, так что должно заработать.
Есть вариант на адресах меток и вычисляемом goto, достоинство - отстутстиве ограничений на применение swicth, особенность (а не недостаток ) - компилируется только GCC, в случае AVR это avr-gcc, WinAVR.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Всё это конечно хорошо, но мне-бы адрес метки в переменную записать. Переписывать всю программу нет желания. Она уже работает, но некоторые моменты хочу подправить.
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб окт 09, 2010 12:32:38
Потрогал лапой паяльник
Зарегистрирован: Сб сен 06, 2008 12:56:13 Сообщений: 326
Рейтинг сообщения:0
Сериг писал(а):
я вот тут схемку замутил дисплей 16х2 на аттини 2313 ,подскажите пожалуйста какие мне фьюзы поставить шчтобы он зароботал?
Вопрос сходен с тем, что задавал Швейк из книги Я. Гашека: Стоит четырехэтажный дом, в каждом этаже по восьми окон, на крыше -- два слуховых окна и две трубы, в каждом этаже по два квартиранта. А теперь скажите, господа, в каком году умерла у швейцара бабушка?
Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб окт 09, 2010 12:53:33
Потрогал лапой паяльник
Зарегистрирован: Сб сен 06, 2008 12:56:13 Сообщений: 326
Рейтинг сообщения:0
Morse писал(а):
Всё это конечно хорошо, но мне-бы адрес метки в переменную записать.
Насколько мне известно, в CVAVR нет средств адресации метки, кроме как "goto" и только в той функции, где находится метка. ...Попробуйте воспользоваться тем примером, что приводил выше ARV, с анализом и изменением статуса в функции.
То Сериг - ну реально же Вам ответили, и какая разница, в форуме или в личных сообщениях... Вопрос неправильный, говорю проще, если Вы Гашека не понимаете и ни читали - Ваш вопрос - Сколько нужно залить в КАМАЗ солярки, чтобы в него поместилась бабушкина кровать..... Какая разница, что Вы там мутите и что подключаете к AVR - Фьюзы отвечают за первичную установку процессора - в Вашем, случае - предполагаю - за тактовую частоту. Какая разница ЖК индикатору, какая частота у процессора, главное - протокол обмена написать написать правильно, с необходимыми частотами и задержками. ЖК индикатор будет работать при кварце и 4 МГц, и 20 МГц одинаково. У Вас в сообщении про это - ни слова.... Вы сами поймите, что хотите, затем поймите, что не получается, а затем спросите. В этом форуме не принято отвечать на вопросы людям, которые не соизволили прочитать описание микропроцессора....
То Сериг - ну реально же Вам ответили, и какая разница, в форуме или в личных сообщениях... Вопрос неправильный, говорю проще, если Вы Гашека не понимаете и ни читали - Ваш вопрос - Сколько нужно залить в КАМАЗ солярки, чтобы в него поместилась бабушкина кровать..... Какая разница, что Вы там мутите и что подключаете к AVR - Фьюзы отвечают за первичную установку процессора - в Вашем, случае - предполагаю - за тактовую частоту. Какая разница ЖК индикатору, какая частота у процессора, главное - протокол обмена написать написать правильно, с необходимыми частотами и задержками. ЖК индикатор будет работать при кварце и 4 МГц, и 20 МГц одинаково. У Вас в сообщении про это - ни слова.... Вы сами поймите, что хотите, затем поймите, что не получается, а затем спросите. В этом форуме не принято отвечать на вопросы людям, которые не соизволили прочитать описание микропроцессора....
ну ладно... значит так собрал я вот по этой статье http://my-avr.at.ua/publ/1-1-0-9 не знаю какие фьюзы поставить на сайте и кусок кода и схема только вместо микроконтролера атмега 8 аттини2313 хочу выводить знаки на экран.
Серёга, я тебе писал что не трогай фьюзы. А вообще - выучи ты их наконец. А то так и будешь до старости у всех фьюзы спрашивать. Лень учить фьюзы - пиши не на AVR а на PIC Как там дела со стробом ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения