-
- Не
Заработало!Разбираюсь.Разобрался. Выше. Mazur(3769 знак., 18.09.2013 09:13 - 21.09.2013 22:08)- А зачем много раз повторять Bill(163 знак., 20.09.2013 09:37)
- Такие вещи не нужны. Абстракцию делать нужно на более высоком уровне. Завтра led может не через порт, а через i2c включаться, например. - fk0(20.09.2013 10:44)
- Это я быстренько настрочил функций для проверки. Поправил. - Mazur(20.09.2013 10:21 - 10:26)
- В рабочей программе количество ошибок четное(С) Vit(479 знак., 20.09.2013 07:43)
- фтопку компилятор, требующий помнить размер переменной при ее использовании (prb/prw). - Vladimir Ljaschko(20.09.2013 06:50)
- В смысле? Какую переменную проверять? - Mazur(20.09.2013 10:23 - 10:38)
- Может я неправильно вас понял. Таблица в памяти программ. Mazur(102 знак., 20.09.2013 11:32)
- Нормальный компилятор знает, где расположена переменная, и программист не должен указывать, откуда ее брать. Vladimir Ljaschko(332 знак., 20.09.2013 11:46)
- У вас какой компилятор? - Mazur(20.09.2013 20:52)
- IAR - Vladimir Ljaschko(20.09.2013 20:55)
- Ха! А нормальный программист должен ещё написать const, и желательно static :-) SciFi(82 знак., 20.09.2013 11:47)
- Здесь все зависит от компилятора. - Bill(20.09.2013 12:07)
- а зачем static ? Я часто таблицы в отдельный файл кладу, удобно. И если во флеше должна лежать , то _FLASH перед ней, а уж в зависимости от проца и компилятора подставляется нужное. Да и самому понятнее. - Andreas(20.09.2013 12:02)
- Отдельный лучше файл или нет - в каждом случае разбираться надо. Но в общем случае засирание глобального пространства имён без необходимости - это зло. А по поводу _FLASH - см. сцылко -> - SciFi(20.09.2013 12:07, ссылка)
- Обычно два подчеркивания идет во всяких стандартных именах, одно не встречал, хотя и не присматривался. - Andreas(20.09.2013 12:14)
- _Bool - SciFi(20.09.2013 12:18)
- Не пользовал, учту.. Но я всегда использую _ВСЕЗАГЛАВНЫЕ - удобно оказалось, когда проект сразу для для двух разных процов делался, да и потом яснее, что где лежит. - Andreas(20.09.2013 12:25)
- Мопед не мой: SciFi(330 знак., 20.09.2013 12:29 - 12:32)
- Бюрократы! - Andreas(20.09.2013 12:38)
- Мопед не мой: SciFi(330 знак., 20.09.2013 12:29 - 12:32)
- Не пользовал, учту.. Но я всегда использую _ВСЕЗАГЛАВНЫЕ - удобно оказалось, когда проект сразу для для двух разных процов делался, да и потом яснее, что где лежит. - Andreas(20.09.2013 12:25)
- _Bool - SciFi(20.09.2013 12:18)
- Обычно два подчеркивания идет во всяких стандартных именах, одно не встречал, хотя и не присматривался. - Andreas(20.09.2013 12:14)
- Без статика MISRA ругаецца ;) - Vladimir Ljaschko(20.09.2013 12:08)
- Отдельный лучше файл или нет - в каждом случае разбираться надо. Но в общем случае засирание глобального пространства имён без необходимости - это зло. А по поводу _FLASH - см. сцылко -> - SciFi(20.09.2013 12:07, ссылка)
- Посыпаю голову пеплом! Кстати, я точно не программист, а "радиоинженер" по диплому :) - Vladimir Ljaschko(20.09.2013 11:57 - 12:01)
- Дык у нас почти никто не работает по специальности :-) - SciFi(20.09.2013 12:25)
- У вас какой компилятор? - Mazur(20.09.2013 20:52)
- Такие вещи компилятор разруливает автоматически: если есть ключевое слово __flash, то данные в памяти программ, иначе - в ОЗУ. SciFi(130 знак., 20.09.2013 11:36)
- финский не умеет - Vit(20.09.2013 11:39)
- Мануал пишет, что умеет: "The__flash qualifier will locate data in the .progmem.data section. Data will be read using the LPM instruction." - SciFi(20.09.2013 11:43)
- раньше он нихрена не умел без pgmspace.h, и думаю, что сейчас тоже не умеет. - Vit(20.09.2013 12:14)
- Какой компилятор? - Mazur(20.09.2013 11:53)
- Сказано же, финский. Он же гну, он же гэцэцэ, он же gcc, он же WinAVR. - SciFi(20.09.2013 11:56)
- Мануал пишет, что умеет: "The__flash qualifier will locate data in the .progmem.data section. Data will be read using the LPM instruction." - SciFi(20.09.2013 11:43)
- это только для AVR - koyodza(20.09.2013 11:38)
- Ну да, я уже не раз писал о кривости авра в этом плане. - SciFi(20.09.2013 11:39)
- Это не кривость, а естественные последствия гарвардской архитектуры. - Vladimir Ljaschko(20.09.2013 11:50)
- Ха! Почему-то гарвардская архитектура не помешала иметь единое адресное пространство в тех же Cortex-M и STM8. Это всё вялые отмазки. SciFi(54 знак., 20.09.2013 11:59)
- Модифицированная гарвардская архитектура. - Bill(20.09.2013 12:10, ссылка)
- А что мы считаем гарвардской архитектурой ? Наличие физических отдельных шин, или универсальность адресации? Я с википедией не согласен! - Vladimir Ljaschko(20.09.2013 12:09)
- Да не важно что. Единое адресное пространство есть гут, поэтому аффтары авра накосячили. Точка. - SciFi(20.09.2013 12:12)
- В keil на x51 и в hitech с pic18 их нет... - fk0(20.09.2013 11:53)
- В свое время почему-то пришел к выводу, что при этом что-то теряется. "Полный контроль"? :) - Vladimir Ljaschko(20.09.2013 11:59)
- Ха! Почему-то гарвардская архитектура не помешала иметь единое адресное пространство в тех же Cortex-M и STM8. Это всё вялые отмазки. SciFi(54 знак., 20.09.2013 11:59)
- Это не кривость, а естественные последствия гарвардской архитектуры. - Vladimir Ljaschko(20.09.2013 11:50)
- Ну да, я уже не раз писал о кривости авра в этом плане. - SciFi(20.09.2013 11:39)
- финский не умеет - Vit(20.09.2013 11:39)
- Нормальный компилятор знает, где расположена переменная, и программист не должен указывать, откуда ее брать. Vladimir Ljaschko(332 знак., 20.09.2013 11:46)
- Почему нужно писать my_word=prw(word) вместо my_word=word? Vladimir Ljaschko(161 знак., 20.09.2013 11:08)
- Может я неправильно вас понял. Таблица в памяти программ. Mazur(102 знак., 20.09.2013 11:32)
- В смысле? Какую переменную проверять? - Mazur(20.09.2013 10:23 - 10:38)
- По оператору if у вас что делается? - Bill(18.09.2013 11:49)
- Внес комментарии в пример. - Mazur(18.09.2013 13:35)
- Да не в комментариях дело. Повторяю вопрос: у вас по оператору if какой оператор выполняется? - Bill(18.09.2013 13:54)
- В каком месте примера? - Mazur(18.09.2013 13:56)
- Неужели непонятно? Bill(322 знак., 18.09.2013 13:58)
- Блин. Следил же за всеми скобками. До break. - Mazur(18.09.2013 14:03)
- Дык эта... А по шагам в отладчике пройти? Там это сразу видно. - SciFi(18.09.2013 14:05)
- Там и без отладчика все видно. Нужно только писать правильно - Bill(18.09.2013 14:08, ссылка)
- Здрассте... Мазуру было не видно, есличо. Отладчик - вполне себе эмпирической источник информации о свойствах языка Си, раз уж с чтением книг напряжёнка. - SciFi(18.09.2013 14:12)
- Я как-то пропустил скобки. Операторов было несколько. Компилятор ругнулся. Я сделал опыт. Убирал скобки, ставил при нескольких операторах. В тех случаях когда операторов было несколько, компилер матерился. Так что излишне на него понадеялся. :) - Mazur(18.09.2013 14:19)
- Вообще-то компилятор практически всегда матерится по делу. Так что надобно читать этот мат и понимать, о чём он. Вот это случайное накидывание скобок - это как те мартышки, которые строчат на печатающих машинках в надежде выдать "Войну и мир". SciFi(181 знак., 18.09.2013 14:22 - 14:38)
- Нужно не на компилятор надеяться, а на свою логику. В крайнем случае картинки можно сначала рисовать. - Bill(18.09.2013 14:22)
- Но я-то без отладчика увидел. Может быть не то увидел, поэтому и вопрос задал. - Bill(18.09.2013 14:14 - 14:18)
- Дык и я увидел: хорошо, что мы до этого его отступам научили. Какой-никакой, а прогресс есть :-) - SciFi(18.09.2013 14:18)
- Нужно было его еще и скобкам научить. Хорошо хоть отступы делал, тогда кое-что понятнее стало. - Bill(18.09.2013 14:20)
- Дык и я увидел: хорошо, что мы до этого его отступам научили. Какой-никакой, а прогресс есть :-) - SciFi(18.09.2013 14:18)
- Я как-то пропустил скобки. Операторов было несколько. Компилятор ругнулся. Я сделал опыт. Убирал скобки, ставил при нескольких операторах. В тех случаях когда операторов было несколько, компилер матерился. Так что излишне на него понадеялся. :) - Mazur(18.09.2013 14:19)
- Здрассте... Мазуру было не видно, есличо. Отладчик - вполне себе эмпирической источник информации о свойствах языка Си, раз уж с чтением книг напряжёнка. - SciFi(18.09.2013 14:12)
- Там и без отладчика все видно. Нужно только писать правильно - Bill(18.09.2013 14:08, ссылка)
- Видно плохо следил. Или нет? - Bill(18.09.2013 14:05)
- Дык эта... А по шагам в отладчике пройти? Там это сразу видно. - SciFi(18.09.2013 14:05)
- Блин. Следил же за всеми скобками. До break. - Mazur(18.09.2013 14:03)
- Неужели непонятно? Bill(322 знак., 18.09.2013 13:58)
- В каком месте примера? - Mazur(18.09.2013 13:56)
- Да не в комментариях дело. Повторяю вопрос: у вас по оператору if какой оператор выполняется? - Bill(18.09.2013 13:54)
- Внес комментарии в пример. - Mazur(18.09.2013 13:35)
- Это все нахрен не нужно.Если только подключено сто разных клавиатур. plainuser(218 знак., 18.09.2013 10:06)
- +1. Более того, обработку клавиатуры так делают только ассемблерщики. На сях всё это делается гораздо симпатичнее. - SciFi(18.09.2013 10:27)
- Пример тогда, пожалуйста. Как это все симпатичнее делается. Раз уж пытаетесь выбить из меня ассемблерное мышление, тогда ткните пальцем, где как надо и симпатично по вашему мнению. - Mazur(18.09.2013 13:39)
- или так. мультикнопочная, нажатие , отжатие, автоповтор - ведет себя как комповая клава. abivan(3194 знак., 18.09.2013 14:04 - 14:08)
- Вот так: SciFi(669 знак., 18.09.2013 13:50)
- Вот более полный пример: SciFi(1166 знак., 18.09.2013 14:00)
- Меня пока это устраивает: Mazur(6858 знак., 19.09.2013 12:21)
- Оформлено уже достаточно симпатично. SciFi(1286 знак., 19.09.2013 12:45 - 12:55)
- Оппа, а как вы сделали обращение к портам по указателю? Если я правильно понял, конечно. - Mazur(19.09.2013 13:25)
- Почему бы и нет? IO-порты находятся в общем адресном пространстве. Можете почитать Apтём(161 знак., 19.09.2013 16:02)
- Я с этими вашими аврами дела не имел, но интернеты подсказывают, что и там можно -> - SciFi(19.09.2013 14:44, ссылка)
- можно. только у IAR и WinAVR выглядит по-разному. - Vit(19.09.2013 16:48)
- В чём разница? Apтём(132 знак., 19.09.2013 17:05)
- Скомпилировать может и получится. У IAR там struct/union @address, а у AVR_GCC смещение 0x20 макросом _SFR_IO8() запихивается Vit(100 знак., 19.09.2013 17:42)
- В чём разница? Apтём(132 знак., 19.09.2013 17:05)
- Можно. Мне приходилось так делать. - Bill(19.09.2013 15:58)
- можно. только у IAR и WinAVR выглядит по-разному. - Vit(19.09.2013 16:48)
- Оппа, а как вы сделали обращение к портам по указателю? Если я правильно понял, конечно. - Mazur(19.09.2013 13:25)
- Оформлено уже достаточно симпатично. SciFi(1286 знак., 19.09.2013 12:45 - 12:55)
- А можно и попроще, в прерывании каждые N мс: Andreas(787 знак., 19.09.2013 11:17 - 11:25)
- кроме кодов еще нужен счетчик с инкрементом когда код current==previous - для антидребезга и организации коротких/длинных нажатий и автоповтора. - zeleny(19.09.2013 00:02)
- Не мешай. Тебе нужен, а мне - нет. Пусть азы хотя бы освоит для начала. - SciFi(19.09.2013 10:57)
- Меня пока это устраивает: Mazur(6858 знак., 19.09.2013 12:21)
- Вот более полный пример: SciFi(1166 знак., 18.09.2013 14:00)
- Пример тогда, пожалуйста. Как это все симпатичнее делается. Раз уж пытаетесь выбить из меня ассемблерное мышление, тогда ткните пальцем, где как надо и симпатично по вашему мнению. - Mazur(18.09.2013 13:39)
- В зависимости от того, что использую, кнопки, матрицу, подсовываю нужную таблицу. - Mazur(18.09.2013 10:14)
- Есть понятие архитектуры ПО... но я это объяснить уже не в силах. - fk0(18.09.2013 10:32)
- Чтоб получить гибрид ужа и ежа? plainuser(314 знак., 18.09.2013 10:31)
- Я каждый раз говорю ему, чтобы выкинул уже свои ассемблерные велосипеды на свалку истории и попробовал научиться программировать на языке высокого уровня. Тщетно. Всякий раз тупо игнорирует. - SciFi(18.09.2013 10:39)
- Объясню одни из своих мотивов. Реализовывать на асме некоторые свои идеи уже очень трудно. Очень много писать и очень трудно отлаживать. Поэтому я попутно с изучением си пробую некоторые свои идеи. - Mazur(18.09.2013 10:47)
- Ещё раз повторяю: ассемблерное мышление - главный враг обучения программированию. Надо забыть про ассемблер (хотя бы попытаться), иначе на си ничего путного не выйдет. "Free your mind" © Morpheus. - SciFi(18.09.2013 10:49)
- KISS (Keep It Simple, Stupid! Делай это проще, дурачок!) - =AlexD=(18.09.2013 13:57)
- Ещё раз повторяю: ассемблерное мышление - главный враг обучения программированию. Надо забыть про ассемблер (хотя бы попытаться), иначе на си ничего путного не выйдет. "Free your mind" © Morpheus. - SciFi(18.09.2013 10:49)
- Объясню одни из своих мотивов. Реализовывать на асме некоторые свои идеи уже очень трудно. Очень много писать и очень трудно отлаживать. Поэтому я попутно с изучением си пробую некоторые свои идеи. - Mazur(18.09.2013 10:47)
- Я каждый раз говорю ему, чтобы выкинул уже свои ассемблерные велосипеды на свалку истории и попробовал научиться программировать на языке высокого уровня. Тщетно. Всякий раз тупо игнорирует. - SciFi(18.09.2013 10:39)
- +1. Более того, обработку клавиатуры так делают только ассемблерщики. На сях всё это делается гораздо симпатичнее. - SciFi(18.09.2013 10:27)
- Для начала разберитесь что должно быть в программной памяти, а что - в ОЗУ. - Bill(18.09.2013 09:45)
- А зачем много раз повторять Bill(163 знак., 20.09.2013 09:37)
- Установил IAR. Первое впечатление положительное. Но на флеше опять затык. В чем сейчас моя ошибка? Mazur(21.09.2013 12:25)
- Так. С IAR вроде подружился. С flash наконец-то получилось работать. Притом, почти так, как мне и нужно было. AVR Toolchain с памятью программ не умеет как надо работать. Может я не до конца разобрался, но мои попытки заставить читать flash как Mazur(1624 знак., 21.09.2013 21:50)
- А что же вы хотели. Вы объявили тип функции void и при этом хотите, чтобы она вам что-то возвращала. Bill(28 знак., 21.09.2013 22:29)
- Странно, в AVR Toolchain проскочило. - Mazur(21.09.2013 22:35)
- А что же вы хотели. Вы объявили тип функции void и при этом хотите, чтобы она вам что-то возвращала. Bill(28 знак., 21.09.2013 22:29)
- В 41-й строки вы говорите компилятору, что переменная у вас должна размешаться в программной памяти. На самом деле, вам нужно объявить указатель на переменную в программной памяти. Поэтому нужно изменить код: Bill(59 знак., 21.09.2013 14:22)
- описание типа это описание типа, а экземпляр переменной описанного типа может быть где угодно в том числе во флэш, тогда и применяем модификатор PROGMEM или чего там у иара за него. - RED_DRAGON(21.09.2013 14:03)
- +1. Нужно убрать __flash из описания типа. - Bill(21.09.2013 14:13)
- Если везде пишем struct, то typedef не нужен: SciFi(223 знак., 21.09.2013 12:47)
- ИАР делает файл *.dbg. С этим файлом уже AVR-Studio работает. Как будто в ней проект делали. - Mazur(21.09.2013 15:29)
- это смотря чего он он там наворачивает, а если до такого дойдет (не авр правда) RED_DRAGON(452 знак., 21.09.2013 14:05)
- C Eclipse компайлер от IAR приятненько работать - все фичи IDE и компилятор неплохой. - Make_Pic(21.09.2013 13:01)
- Так. С IAR вроде подружился. С flash наконец-то получилось работать. Притом, почти так, как мне и нужно было. AVR Toolchain с памятью программ не умеет как надо работать. Может я не до конца разобрался, но мои попытки заставить читать flash как Mazur(1624 знак., 21.09.2013 21:50)
- Пример ** Скрипач(18.09.2013 09:40 - 20.09.2013 22:42)
- Увидел #include "OS_base.h" и сразу возник вопрос: А почему Вы не применяете критические секции кода при доступе к EEPROM? - Юра(20.09.2013 09:10,
)
- У меня обычный биг-луп. OS_base - мой. Совпало с чем-то распространенным? - Скрипач(20.09.2013 09:13)
- Да просто подумалось что если уж реализована OS, то точно надо бы защитить регистры EEAR/EEDR от порчи в прерываниях. Кстати, почему-то встроенная функция __eeprom этого не делает( - Юра(20.09.2013 09:32,
)
- И что делать В ПРЕРЫВАНИИ,если EEPROM занята? - Скрипач(20.09.2013 09:34)
- Ну как что? Если занята - будет просто ждать. Прямо в прерывании. У Вас же стоит while(EECR & _BV(EEWE)); Подождёт освобождения, дождётся - и испортит EEAR/EEDR - Юра(20.09.2013 09:42,
)
- Только я не об занятости. Я о простейшей ситуации когде ничего не занято. Вот Вы хотите в фоновой программе прочитать EEPROM. Только установили значение EEAR - и произошло прерывание, где тоже читается EEPROM. А результате EEAR испортится. - Юра(20.09.2013 09:59,
)
- Можете запретить прерывания до установки EEAR. Но лучше не читать eeprom в прерывании вообще. - Apтём(20.09.2013 14:32)
- Я понимаю, Вы обалденно умные ребята. Но объясните мне, почему невинную трехтактовую операцию чтения EEPROM нельзя в прерывании выполнять? Это откуда такие новости-то?)) Если речь про запись не идёт а только про чтение - то почему нет? Смешно, но Юра(506 знак., 20.09.2013 18:54,
)
- Как-то неправильно так делать: Apтём(583 знак., 20.09.2013 22:52)
- 1 "А если запись уже запущена?Дожидаться окончания её в прерывании?" - Речь про запись не идет, специально сказал. Но если все же - это как Вам в данный момент удобнее где глухо ждать 4 мс. Можно ждать в фоне, можно и в прерывании. Когда пошла Юра(784 знак., 20.09.2013 23:35,
)
- Зачем переключателю контекстов EEPROM? Трудно такое прадставить...мне во всяком случае. Apтём(225 знак., 20.09.2013 23:48)
- 1 "А если запись уже запущена?Дожидаться окончания её в прерывании?" - Речь про запись не идет, специально сказал. Но если все же - это как Вам в данный момент удобнее где глухо ждать 4 мс. Можно ждать в фоне, можно и в прерывании. Когда пошла Юра(784 знак., 20.09.2013 23:35,
- Как-то неправильно так делать: Apтём(583 знак., 20.09.2013 22:52)
- Я понимаю, Вы обалденно умные ребята. Но объясните мне, почему невинную трехтактовую операцию чтения EEPROM нельзя в прерывании выполнять? Это откуда такие новости-то?)) Если речь про запись не идёт а только про чтение - то почему нет? Смешно, но Юра(506 знак., 20.09.2013 18:54,
- А не надо в прерывании читать еепром и делать другие странные вещи. - fk0(20.09.2013 10:43)
- Угу. А если в прерывании находится диспетчер задач, то получается, что читать EEPROM вообще ни в какой задаче нельзя?)) - Юра(20.09.2013 19:02,
)
- Там где есть диспетчер задач -- там есть критические секции, мьютексы и всё такое. А в прерывании не нужно, ни к чему оно. Почему бы в прерывании ещё HTTP GET-запрос не сделать куда-то в облачный сервер? - fk0(20.09.2013 19:12)
- Почитайте мой начальный пост. У него include OS.h вставлен - там может всё что угодно быть. Отсюда всё и родилось. - Юра(20.09.2013 19:18,
)
- Паранойя у вас. Отнеситесь к этому серьезно. Запускать не стоит. - Скрипач(20.09.2013 21:33)
- Угу. Контроллер дает выбор: паранойя vs пофигизм. Когда ЛЮБОЕ прерывание вклинится между установками _BV(EEMWE); и _BV(EEWE); - сразу станете параноиком :) - Юра(20.09.2013 22:03,
)
- Спасибо, поправил. - Скрипач(20.09.2013 22:14)
- Опять скажете параноик, но я скорее перфекционист, что не лучше параноика:) Говорю Вам прямо: с помощью такой критической секции Булава знаете куда улетит? Вы же в конце директивно разрешаете прерывания! А если эта функция вызвана ВО ВРЕМЯ Юра(213 знак., 20.09.2013 23:57,
)
- вообщем неправильно, но видимо предполагается что запись в прерывании не запускается. А Значит исполняется основная программа и прерывания должны быть рзрешены за пределами критической секции. - Apтём(21.09.2013 00:29)
- Че-та не пойму... Уже исправлено или я не увидел что все в норме? Прошу прощения, глаза подвели. - Юра(21.09.2013 00:08,
)
- Вы проскочили в четыре такта ;) Пока вы писали комментарий, я уже сам исправил. - Скрипач(21.09.2013 10:26 - 10:34)
- Опять скажете параноик, но я скорее перфекционист, что не лучше параноика:) Говорю Вам прямо: с помощью такой критической секции Булава знаете куда улетит? Вы же в конце директивно разрешаете прерывания! А если эта функция вызвана ВО ВРЕМЯ Юра(213 знак., 20.09.2013 23:57,
- Спасибо, поправил. - Скрипач(20.09.2013 22:14)
- Угу. Контроллер дает выбор: паранойя vs пофигизм. Когда ЛЮБОЕ прерывание вклинится между установками _BV(EEMWE); и _BV(EEWE); - сразу станете параноиком :) - Юра(20.09.2013 22:03,
- Паранойя у вас. Отнеситесь к этому серьезно. Запускать не стоит. - Скрипач(20.09.2013 21:33)
- Почитайте мой начальный пост. У него include OS.h вставлен - там может всё что угодно быть. Отсюда всё и родилось. - Юра(20.09.2013 19:18,
- Там где есть диспетчер задач -- там есть критические секции, мьютексы и всё такое. А в прерывании не нужно, ни к чему оно. Почему бы в прерывании ещё HTTP GET-запрос не сделать куда-то в облачный сервер? - fk0(20.09.2013 19:12)
- +1. Скрипач(27 знак., 20.09.2013 12:34)
- ??? mr-x(24 знак., 20.09.2013 14:36)
- В начале раз пять, а потом сжечь. - fk0(20.09.2013 14:42)
- ??? mr-x(24 знак., 20.09.2013 14:36)
- Угу. А если в прерывании находится диспетчер задач, то получается, что читать EEPROM вообще ни в какой задаче нельзя?)) - Юра(20.09.2013 19:02,
- Можете запретить прерывания до установки EEAR. Но лучше не читать eeprom в прерывании вообще. - Apтём(20.09.2013 14:32)
- Только я не об занятости. Я о простейшей ситуации когде ничего не занято. Вот Вы хотите в фоновой программе прочитать EEPROM. Только установили значение EEAR - и произошло прерывание, где тоже читается EEPROM. А результате EEAR испортится. - Юра(20.09.2013 09:59,
- Ну как что? Если занята - будет просто ждать. Прямо в прерывании. У Вас же стоит while(EECR & _BV(EEWE)); Подождёт освобождения, дождётся - и испортит EEAR/EEDR - Юра(20.09.2013 09:42,
- И что делать В ПРЕРЫВАНИИ,если EEPROM занята? - Скрипач(20.09.2013 09:34)
- Да просто подумалось что если уж реализована OS, то точно надо бы защитить регистры EEAR/EEDR от порчи в прерываниях. Кстати, почему-то встроенная функция __eeprom этого не делает( - Юра(20.09.2013 09:32,
- У меня обычный биг-луп. OS_base - мой. Совпало с чем-то распространенным? - Скрипач(20.09.2013 09:13)
- А зачем столько букв? Объявляю переменную как __eeprom и обращаюсь как к обычной памяти. По крайней мере в иаре так. - Andreas(18.09.2013 09:49)
- В АВР Студио не так. (да, я сегодня замещаю телепата ;) - Скрипач(18.09.2013 09:51)
- Это ЕЕПРОМ. Хотя пригодится, потом гляну. Мне нужно работать со структурами во Flash. pgmspase.h - Mazur(18.09.2013 09:43)
- В комплекте WinAVR есть дока и примеры (ссылка) Писать-читать нужно процедурами из модуля. - Скрипач(18.09.2013 09:44 - 09:53, ссылка)
- Увидел #include "OS_base.h" и сразу возник вопрос: А почему Вы не применяете критические секции кода при доступе к EEPROM? - Юра(20.09.2013 09:10,
- Эта писец!!! Ну, накуя тебе оно надо ??? Я уже лет 25 херачу на Си, но такой фигней никогда не занимался. tesla(516 знак., 20.09.2013 20:02)
- Ну и херачь себе дальше - попутный ветер в жопу... Только не забывай, что "альтернативные" (гарвард) области памяти в GCC - костыль еще тот... (это я тебе как непрограммист - программисту) - Гyдвин(20.09.2013 23:20)
- Я пробую в GCC работать со структурами в памяти программ. Пока результат хреновый. Со структурами в ОЗУ пока нормально. - Mazur(20.09.2013 20:06)
- ps: компилятор еще неплохо озвучивать, к примеру iar или gcc :) - RED_DRAGON(18.09.2013 13:53)
- посмотрите исходники чужие... много интересного можно почерпнуть из того же Chan'а FAT FS к примеру или других его исходников. В том числе и работа с памятью и структурами и массивами и т.д. и т.п. - RED_DRAGON(18.09.2013 12:35)
- Похоже, тут дело не в этом. Сдается мне, что Bill(44 знак., 18.09.2013 12:50)
- проблема тут в трех пунктах: 1. хороший учебник по си 2. текстуха по хорошему приближению си к МК + примеры. 3. даташиты и аппноты. - RED_DRAGON(18.09.2013 13:50)
- Да! Да! - Mazur(18.09.2013 13:55)
- Ошибка не в логике программы, а то, что до сих пор трудности в том, что есть что в этих указателях, массивах, структурах. А тут еще доступ к памяти программ через жопу. Короче, сейчас нужно добиться, чтобы это все от зубов отскакивало. Но для Mazur(146 знак., 18.09.2013 13:22)
- проблема тут в трех пунктах: 1. хороший учебник по си 2. текстуха по хорошему приближению си к МК + примеры. 3. даташиты и аппноты. - RED_DRAGON(18.09.2013 13:50)
- Похоже, тут дело не в этом. Сдается мне, что Bill(44 знак., 18.09.2013 12:50)
- добавлю - рекомендовал бы заменить запись вызова функции по указателю на (*pStateFunc)(); Vit(182 знак., 18.09.2013 10:08, ссылка)
- Массив создается. Чтение одно байта, слова нормально. Но с чтением массивов у меня пока никак. Хоть функцию на асме пиши. - Mazur(18.09.2013 08:11 - 08:23)
- Что именно нужно? - Bill(18.09.2013 09:00)
- Разобраться, как правильно сделать -> - Mazur(18.09.2013 09:25, ссылка)
- Что такое prb()? - Ксения(18.09.2013 10:05)
- Поправил пример. - Mazur(18.09.2013 10:15)
- там ещё какие-то prw, clrb - Vit(18.09.2013 10:10)
- clrb - наверное, байт стереть :) - Ксения(18.09.2013 10:12)
- Что такое prb()? - Ксения(18.09.2013 10:05)
- Разобраться, как правильно сделать -> - Mazur(18.09.2013 09:25, ссылка)
- Что именно нужно? - Bill(18.09.2013 09:00)
- У вас же уже был успешный опыт работы со структурой таймера? И вроде бы все получилось удачно, лыжи поехали. Ксения(598 знак., 18.09.2013 02:58)
- Равенство, это конечно правильно...но. Apтём(749 знак., 18.09.2013 03:24)
- Не