Перейти к содержанию
    

afad

Свой
  • Постов

    212
  • Зарегистрирован

  • Посещение

Весь контент afad


  1. Т.е. Вы предполагаете, что разработчик за свои деньги разработает и изготовит 300 комплектов устройств?
  2. Atmega как супервизор?

    Я врать не хочу, но запустите конфигурилку кернела. Там что-то было про WDT.Да, можно Linux-ом запустить внутренний WDT, проблема в том, что программа должна дойти до завершения загрузки Linux и всех прикладных программ и не повиснуть, и не застрять по пути в U-boot-e или еще где-то. Давайте это не обсуждать, к данной теме это не относится.
  3. Atmega как супервизор?

    Делал WotchDog на 8-ногом PIC для контроллера с Linux. Там было 2 проблемы: 1. Импульс сброса должен быть не менее 2 сек. 2. Программа, которая начинает выдавать импульсы на сброс WDT включается только после загрузки Linux, а это 20-30 сек после включения. Мы сделали WDT, который после включения ждет минуту появления импульсов (не контролирует импульсы сброса WDT), потом начинает работать как обычно. Программу WDT специально сделали "тупой", без прерываний. P.S. На входе PIC все же поставили простейший трехногий супервизор.
  4. Да, встречаются такие заказчики, хотя не буду зря утверждать, что это именно тот случай. Делал одну разработку: схема, плата и программа. Аванс был символический. Предполагалась первая оплата после представления работающей аппаратной части (с тестовой программой), и окончательный расчет после написания рабочей программы. Ну думал, без программы то им моя плата не понадобится, не смогут они ее тиражировать. Сделал плату, написал черновой вариант программы. Насторожило то, что к самой программе они отнеслись с прохладцей, т.е. остались довольны сырой предварительной версией - и пропали. Потом оказалось, что для написания рабочей программы они наняли другого программиста, а я почти за так (т.е. за символический аванс) сделал всю аппаратную часть и тестовую программу.
  5. AT91RM9200 + W5100

    Журнал «Радио» >> 2008 >> Октябрь >> стр. 22 >> "К. Снегов, Р. Шишко. Реализация на базе микросхемы W5100 устройства для работы в сетях Ethernet."
  6. Аналогично. Думал, что проверяя статус, я контролирую соединение. Нет, соединение может прерваться, а ответ на этот запрос будет все ОК. Потом пытаюсь передать данные, а они, естественно не передаются. Т.е. отсутствие соединения обнаруживается только при попытке передать данные. Как-то нехорошо. А кроме как командой at+cipstatus и не передавая данные можно проверить наличие соединения?
  7. Напряжение с карточки действительно снимается, но только в случае - если модем не обнаружил или не распознал карточку. Значит что-то с подключением, может длинные провода, нет контакта и т.д.
  8. Зато теперь, длагодаря Вашей подсказке умею! Да, проблема была в этом или почти в этом. В начале ассемблерной подпрограммы я написал: clr r16 sts RAMPZ,r16 Транслятор, естественно, все это проглотил, но результат оказался непредсказуемый (т.е. зависел от непонятных мне факторов). А причина в том, что RAMPZ находится в области IO, следовательно команда: sts RAMPZ,r16 портила ячейку RAM. После того, как исправил коменду на: out RAMPZ,r16 все заработало предсказуемо и нужная мне страница стирается. Также ошибся в выборе размера bootloadera: BOOTSZ=0 - это не 4Кбайт, а 4К слов. Вопросы еще остались, но об этом позже.
  9. Что-то я совсем ничего не понимаю (т.е. уже вообще ничего) :07: Вот так программа очищает нулевую страницу (переменная XX-локальная): extern void CLR_STR(void); void main(void) {unsigned char XX; CLR_STR(); //Стирание нулевой страницы while(1){_WDR(); XX++;} } А вот так нулевую страница не очищается (переменная XX-глобальная): unsigned char XX; extern void CLR_STR(void); void main(void) {CLR_STR(); //Стирание нулевой страницы while(1){_WDR();XX++;} } Т.е. если есть обращение к глобальной переменной, то программа почему-то не хочет стирать страницу памяти.
  10. Хм... Написал чисто ассемблерную программу из приведенных выше строк, страница стирается. Пишу программу на С с ассемблерной подпрограммой стирания страницы, вызываю эту ассемблерную подпрограмму из С - результат нулевой. Что-то я совсем ничего не понимаю. Видимо мозг чувствует приближение Нового года и отказывается думать. :santa2: Может препроцессор что-то такое делает, что блокирует модификацию памяти???
  11. Приведенный ассемблерный код присутствует во всех загрузчиках (со своими нюансами). Ну пробовал поставить перед стиранием: ldi r16, (1<<RWWSRE) | (1<<SPMEN) sts SPMCSR,r16 spm и потом окончание ожидания сброса SPMEN, результат тот же. Но ведь установка BOOTSZ = 0 означает, что размер загрузчика равен 4К. Значит старт будет с адреса 1FFFF-4K=1F000. В HEX файле именно с этого адреса и начинается программа.
  12. Пытаюсь написать загрузчик (bootloader) для ATMEGA128 и не получается. Программа должна постранично модифицировать память программ. Посмотрел много примеров, вроде делаю все как у всех, но не работает. Не работает самое элементарное - стирание страницы, запись пока не пробовал, т.к. перед записью нужно стереть страницу. Вот кусок программы, должна стираться нулевая (для примера) страница: ;Задаем нулевую страницу для стирания clr ZL clr ZH ;Проверяем, что не идет запись, ждем когда кончится, если идет M1: lds r16,SPMCSR sbrc r16,SPMEN rjmp M1 ;>Проверяем, что не идет запись в EE, ждем когда кончится, если идет M2: sbic EECR,EEWE rjmp M2 ;>Запускаем стирание ldi r16, (1<<PGERS) | (1<<SPMEN) sts SPMCSR,r16 spm ;Ждем, когда окончится стирание M3: lds r16,SPMCSR sbrc r16,SPMEN rjmp M3 Программа виснет на команде spm, дальше не идет. Если закомментировать команду spm, то все проскакивает (но стирания, естественно тоже не происходит). Данная программа стартует с адреса 0x1F000 и расположена в области 0x1F000...0x1FFFF. Может не так устанавливаю FUSES??? Установлено вот так: BODLEVEL = 1 BODEN = 0 SUT = 2 CKSEL = F BLB1 = 3 <-полный доступ к памяти зпгрузчика BLB0 = 3 <-полный доступ к памяти программ OCDEN = 1 JTAGEN = 1 CKOPT = 1 EESAVE = 0 BOOTSZ = 0 <- 4K область загрузчика (адреса 1F000-1FFFF) BOOTRST = 0 <- Стартовать с загрузчика (c адреса 1F000) M103C = 1 WDTON = 1 Где я ошибся, не понимаю?
  13. Еще один бесплатный совет, страна у нас такая, страна советов :) (проверил бы сам, но в настоящее время нет под рукой модема). Для SIM300 IP можно узнать, например, такой командой: at+cdnsgip="www.ya.ru" OK 213.180.204.8 Потом соединяемся как обычно, используя этот IP.
  14. А может в команде at+cdnscfg=... нужно задать реальный адрес DNS сервера оператора сотовой связи???
  15. Ну примерно это я и хотел выяснить. Спасибо за информацию :beer:
  16. Микроконтроллер с SIM-картой работает на подвижном объекте. Возникла идея заменить SIM микроконтроллером (например, PIC), иммитирующим работу SIM (или нескольких SIM). Для чего это нужно: 1. Чтобы избавиться от разъемных соединений держателя SIM и тем самым повысить надежность прибора. 2. Чтобы расширить температурный диапазон работы прибора (не прибегая к использованию нагревателей SIM). Из функций SIM не нужна память телефонных номеров, память SMS и прочее, только регистрация в сети (и передача данных, разумеется, но это к SIM не имеет отношение, я так понимаю). Вопрос следующий. Допустим я отслежу все сигналы, которые выдает GSM-модуль при включении и ответы на них со стороны SIM (не особо углубляясь в содержимое). И допустим сделаю устройство (клон-SIM) которое при всех последующих включениях будет выдавать ответы, аналогичные ответам SIM. Будет ли это работать? Или все сложнее. SIM опрашивается только при включении или в процессе работы тоже (если не используются функции SIM типа памяти SMS и др.)? Где можно почитать про протоколы обмена с SIM? Я понимаю, что китайцы это уже сделали, ведь продаются же мульти-SIM на 6 номеров, но на то они и китайцы, их же много...
  17. Ну, например, если нужно экономить электроэнергию. Основное время модем отключен. Потом проснулся, зарегистрировался, обменялся информацией с сервером и опять уснул :wassat:
  18. Не-е-е, не 3 года. Если регистрироваться каждую минуту, то 60000/60=1000 часов, или 41,7суток. А если раз в час, то 60000/24=2500 суток или 6,8 лет.
  19. А вместо "SM" можно "ME"? Тогда сообщения будут идти не через SIM, а через модем. Или так нельзя?
  20. Поясните пожалуйста, ничего про это не слышал.
  21. Силён! Почти как у китайцев: http://media.mabila.ua/ru/news/new_devices...07/10/7570.html
  22. Ну если на время отключать, то можно отключать не только GSM-блоки, но и весь модем, естественно этим воспользуюсь, насколько это возможно. Вопрос в том, какой модем в работе наименее потребляющий. Горяче любимый (за низкую стоимость) SIM300 для этих целей явно не подходит.
  23. Ищу малопотребляющий встраиваемый GSM-модуль для разрабатываемого прибора с автономным питанием. Кто изучал этот вопрос? Поделитесь информацией рlease.
  24. По приведенной ссылке только описания прошивок, или я чего-то не понимаю? :05: Для SIM300D(SST), судя по описанию, последняя прошивка 16, так? Но сама прошивка-то где?
  25. Для модулей XBEE удалось значительно сократить время передачи, а следовательно и потребляемую мощность. Дело было в неоптимальных задержках в программе. Для передачи одного пакета микроконтроллер должен сделать следующее: 1. Разбудить ZigBEE модуль. 2. Подождать некоторое время (сразу после пробуждения модуль не воспринимает информацию). 3. Передать пакет в модуль. 4. Убедиться, что пакет передался координатору. 5. Усыпить ZigBEE модуль. Время 2 находится экспериментально и для XBEE модулей равно несколько милисекунд. Время 3 удалось сократить, увеличив скорость передачи по UART. К счастью, в модулях XBEE можно не контролировать процесс передачи данных координатору. Через небольшую задержку (тоже несколько милисекунд) после окончания передачи пакета в модуль можно смело усыплять его, но он при этом не уснет, а останется работать, пока данные не будут переданы координатору. Как только данные переданы, модуль засыпает. Весь процесс передачи одного пакета занимает 80 мс (+-20мс). На осциллограмме видно несколько пиков общей длительность примерно 25 мс, когда потребляемый ток составляет 40 мА, а остальные 55 мс - 10 мA. Посмотрел на осциллограммы, которые приводит TI для своих СС2480 - у них на картинках потребление в несколько раз лучше. Я так понимаю, для создания действительно малопотребляющего ZigBee устройства (если потребление является одной из ключевых характеристик устройства), необходимо использовать микросхемы транссиверов (без микроконтроллера) и устанавливать ZigBee-стек на свой микроконтроллер.
×
×
  • Создать...