V_G 8 12 декабря, 2009 Опубликовано 12 декабря, 2009 (изменено) · Жалоба да получается, что предварительно стереть нужно Стирать не нужно, NVM сам сотрет только обновляемые ячейки на странице (насколько помню). Вообще есть соотв AppNote, там все подробно объяснено, я сделал по нему, и все работает без проблем. На ассемблере, правда. Использовал заполнения страничного буфера как обычное копирование данных (с контролем перехода за границы страницы) и Atomic Write. А не в memory mapped - используйте старые алгоритмы и пишите по байту, изменений особых нет. Новый режим экономичней, если писать более одного байта. Изменено 12 декабря, 2009 пользователем V_G Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 12 декабря, 2009 Опубликовано 12 декабря, 2009 (изменено) · Жалоба используйте старые алгоритмы "Старые алгоритмы" недоступны, теперь в любом случае пишется только через буфер страницы. Только в первом случае (I/O-mapped) доступ к нему через NVM контроллер, во втором он мапится в память. Запутал Атмел невнятным описанием этого своего страничного доступа. Значит получается, что во время Atomic Write на странице трутся только "потревоженные" в буфере ячейки, а не тупо вся страница. Типа, хочешь - пиши одной командой один байт, хочешь сразу всю страницу. А ведь первое впечатление было такое - раз очистил перед записью буфер, значит будет чиститься и страница... Сейчас проверил через I/O-mapped доступ - действительно это так! Соседние, ранее записанные ячейки, не трет... Значит все совсем неплохо :) Изменено 12 декабря, 2009 пользователем MDD Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Склихасовский 0 12 декабря, 2009 Опубликовано 12 декабря, 2009 (изменено) · Жалоба Стирать не нужно, NVM сам сотрет только обновляемые ячейки на странице (насколько помню). Вообще есть соотв AppNote, там все подробно объяснено, я сделал по нему, и все работает без проблем. На ассемблере, правда. Использовал заполнения страничного буфера как обычное копирование данных (с контролем перехода за границы страницы) и Atomic Write. если не сложно можно взглянуть на исходники ASM? Сейчас проверил через I/O-mapped доступ - действительно это так! Соседние, ранее записанные ячейки, не трет... Значит не все совсем неплохо :) а если переписать ячейку тогда как? например было $00 нужно $FF --- И так я все таки не вкурил доконца... требуется записать область маппед с адреса $1020-103f 1. копирую из основной памяти эти 32 байта в маппед область с адреса $1020 2. выставляю команду NVM контроллеру (если не ошибаюсь $35) 3. регистр адреса NVM определяю как 1 страница 4. даю команду на выполнение. Правильно? (а то проверить смогу тока в понедельник) Изменено 12 декабря, 2009 пользователем Склихасовский Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 12 декабря, 2009 Опубликовано 12 декабря, 2009 · Жалоба а если переписать ячейку тогда как? например было $00 нужно $FF Сейчас специально проверил конкретно этот случай - все работает. Т.е. допустим в первой ячейке страницы был 0. Дальше очищаем буфер страницы. Казалось бы, что после этой команды во всем буфере должны сидеть $ff (или $00). В этом и было мое главное заблуждение. Надо считать, что это абстрактно пустой буфер. Дальше, в первую ячейку буфера пишем $ff(или любое другое число). Остальные ячейки не трогаем. И даем команду Atomic Write. После этого будет стерта и записана новым значением только первая ячейка страницы. Если бы загрузили сразу несколько любых ячеек буфера, они бы тоже были переписаны в соответствующее ячейки страницы во время действия этой команды. Т.е. резюме такое - "пустые ячейки" буфера никуда не пишутся (не портят содержимого страницы). PS.На счет memory-mapped режима не подскажу, еще не разбирался. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Склихасовский 0 24 декабря, 2009 Опубликовано 24 декабря, 2009 (изменено) · Жалоба ещё одна небольшая непонятка. Модуль TWI... режим ведущий приемник требуется при приеме последнего байта передать NASK. И как то он не хочет передаваться бит Bit 2 - ACKACT: Acknowledge Action установлен в 1, после чего подается команда xx10 (Execute Acknowledge Action succeeded by a byte receive) но ничего не передается - не принимается... Ещё прошу обяснить что за режим SMEN: Smart Mode Enable. может из за него NASK не работает? Изменено 24 декабря, 2009 пользователем Склихасовский Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BALDA 0 25 декабря, 2009 Опубликовано 25 декабря, 2009 · Жалоба бит Bit 2 - ACKACT: Acknowledge Action установлен в 1, после чего подается команда xx10 (Execute Acknowledge Action succeeded by a byte receive) но ничего не передается - не принимается... Юзайте команду 0bxxxxxx11. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 27 декабря, 2009 Опубликовано 27 декабря, 2009 · Жалоба 2. Проверены собственные шумы АЦП в таком режиме для двух вариантов: - выводы АЦП в диф. включении были замкнуты между собой резистором 2К и никуда не подключались, АЦП крутился в free run режиме и значения считывались асинхронно и передавались по RS485 в PC. Кроме этого в прерываниях от таймера формировалась пила на ЦАПе и моргал тестовый светодиод. Кроме собственно значений АЦП в RS485 передавались значения после фильтрации. Фильтр экспоненциальный(две строчки на С), я его обычно использую во всех задачах измерения постоянных сигналов. Результаты без коментариев даны на рис.1 Выводы, плохой камень или нет, делайте сами. Если вас не затруднит, испытайте пожалуйста, шумы ацп в не дифферециальном включении от хорошего опорника. с rc фильтром. Я думаю, общественности будет интересно. Я делал такие измерения для STM32F103R8 , для анализа линейности оверсемлинга, результатом остался доволен. Из массива полученных данных я строю диаграмму в экселе- распределение вероятности. По вертикальной оси сколько раз значение встречается в процентах от всей выборки, по горизонтальной оси- сами значения. При "правильной" работе АЦП должно получаться гауссовское распределение. Я строил такие диаграммы для разных настроек ацп- частоты и времени выборки. Как ни странно высокая(12Мгц) частота и малое время выборки (3мкс) ацп давала самые малошумящие значения, всего +-1 разряд на выборку из 3000 значений. Но для увеличения линейности оверсемплинга лучше было уменьшать частоту до 9 Мгц и немного поднимать время выборки- - тогда значения размазывались на +-3, и после фильтрации линейность возрастала. Шум (dithering) специально не подмешивал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vitek101 0 28 декабря, 2009 Опубликовано 28 декабря, 2009 · Жалоба Подскажите, пожалуйста... Область памяти, которая называется таблицей приложения. В даташите написано, что если не хранить в ней данные, то ее можно использовать под приложение. Так вот, как узнать, использую ли я ее для хранения данных? Другими словами, чтоб хранить в ней данные надо это каким-то особенным образом объявить? А если я этого не знаю, то я ее и не использую? И если я правильно понимаю все вышесказанное, то приложение можно расширить до 136КБ? А из бутлоадера эта область доступна? Или эта таблица входит в 128КБ памяти программ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Duhas 0 29 декабря, 2009 Опубликовано 29 декабря, 2009 · Жалоба по идее входит в 128 ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 2 января, 2010 Опубликовано 2 января, 2010 · Жалоба Почитал на досуге еррату на ATxmega32A4 и ужаснулся: использовать ревизию А с такими ошибками и недоработками просто стремно, плюс еще скока вылезет неожиданно... Вроде ревизий позднее А еще нет и не скоро будет... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 2 января, 2010 Опубликовано 2 января, 2010 · Жалоба Почитал на досуге еррату на ATxmega32A4 и ужаснулся: использовать ревизию А с такими ошибками и недоработками просто стремно, плюс еще скока вылезет неожиданно... Вроде ревизий позднее А еще нет и не скоро будет... ЧТо-же там такого страшного? Можно например? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 2 января, 2010 Опубликовано 2 января, 2010 · Жалоба ЧТо-же там такого страшного? Можно например? Так там же все написано. Просто вложили крутую периферию и тут же ее "ограничили". Особенно удручают ошибки в ADC, DAC и BOD. Ну как можно было выпускать кристалл, у которого ADC "не умеет" работать выше 2.4V, а дифф входы вообще имеют диапазон обратно пропорциональный усилению??? Это выглядит даже как-то несерьезно, что ли... Лучше бы задержали релиз на пару месяцев, не позорились... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 3 января, 2010 Опубликовано 3 января, 2010 · Жалоба ADC "не умеет" работать выше 2.4V, а дифф входы вообще имеют диапазон обратно пропорциональный усилению??? А как Вы хотели иначе с диапазоном диффвходов? Там имеется ввиду дифференциальное напряжение. Естественно чем больше усиление, тем меньше допустимый максимальный сигнал на входе. Кстати, здесь в теме кто-то проверял синфазное напряжение, вроде работает до тех же 2.4В. А вот померить Vсс напрямую похоже уже никогда не удастся. В последней версии даташита появилось максимальное значение для Vref=Vcc-0.6V. Это конечно неудобно. А вообще, даже с такой ерратой жить можно. Многие обещанные фичи там весьма приятны и сделаны изначально прямо :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MDD 0 28 января, 2010 Опубликовано 28 января, 2010 · Жалоба А не пробовал ли кто-нибудь встроенный температурный сенсор? Не скажу, что много от него хотел бы. Но в качестве показометра не помешал бы. В даташитах этот сенсор описан крайне скупо. В атмеловском сапорте на вопрос о типовых характеристиках молчат как партизаны. Попробовал включить "втемную" - намеряет напряжение около 0.6В. Можно было бы предположить, что это обычный диод. Но вот незадача - при изменении температуры с +20 до -10 показания практически не меняются. При этом в калибровочных байтах что-то записано, причем значения разные для разных чипов. Может я что-нибудь упустил... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Spider 0 28 января, 2010 Опубликовано 28 января, 2010 · Жалоба An internal temperature reference is available. Measuring the voltage on this will give an ADC result representing the current temperature in the microcontroller. The temperature, T, is given as: T = TBD ⋅ ADCRESULT + TBD А вот кто такой TBD я что-то не понял... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться