Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

Mr.47

Ребят предлагаю САБЖ!

Рекомендуемые сообщения

Друзья, у кого есть какие-либо предложения по плоттеру сообщайте!

Существует нужда в технолоиях.

 

Плоттер решено было перевести полностью на шаговые двигатели.

 

С усовершенствованием башки пока туго!

 

 

Ждём предложений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Шаговые двигатели с контроллерами, датчик МЫШЬ, и модуль I SEE

дали плоттеру непревзойдённую точность. 10ю долю мм

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фотка печати плоттера на t47t.narod.ru/foto123.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Inel

Всё хорошо! Запустился!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Молодцы мужики! Всем кто идеи двигает - РЕСПЕКТИЩЕ!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работа над другими проектами!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осваиваются контроллеры AVR!!!

 

У кого какие вопросы, милости просим!

Делитесь опытом!

 

Собирается также второй плоттер miniL47.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здаров!

 

Вышел новый Протеус - 7.2 с USB.Смотри на форуме Казуса.

Лекарство в комплекте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо ИНЕЛ!!!!

Припаял к МЕГА 16 экран промышленный 128х64 WG. Победил прогу--работает!!! ЗУпа!!!

Щас приобрёл DS18b20 датчик температуры. С ним борюсь!!!

 

Тока приехал с Турции. Тока сегодня!

 

Планы:

1. ШИМ на шаговый движок. (так как на заводе сделал поворотку для камеры а она дрыгается при повороте, без ШИМа не обойтись. сроки)

2. Датчик и регулятор температуры.

3. GSM канал.

 

Все модели будут собираться на ATmega128.

 

Инел!!!!

От тебя нада помощь по GSM.

Какие ко мне вопросы пиши!!!

Респект ещё раз! Спасибо что раскрыл глаза брат!

 

Чуваки Инел----рулёз!!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё вплотную ведётся разработка miniL47.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой GSM модуль?

В любом случае ,на него,надо изучать AT команды(или свои ,специфичные).

 

Прикручивается к контроллеру через UART.

Для ,начала ,удобно поэксперементировать с компьютера(через COM порт + преобразователь уровня).

В HYPER TERMINAL - е пишеш команду,и ждеш ответа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!!!!

 

Поглядел! Постараюсь победить!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ведется работы по ШИМу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Инел!!!!

 

Плиз выложи листинг, записи данных в EEPROM ATmega16 .

Например во время выполнения программы, переменной i присваивается 130 , как записать в еепром и при перезагрузке МК считал с еепром и присвоил i=130.

 

Помоги плииииз.

 

И ещё как в Имэджин крафт поставить 16МГц. Я кварц подцепил а контроллер всё равно на 4 Мгц работает!!

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читай datasheet там все написано.

 

Например на ATMega128:

Адресные регистры ЭСППЗУ – EEARH и EEARL

Разряды 15..12 – Резерв

 

Разряды 11..0 – EEAR11..0: Адрес ячейки ЭСППЗУ

Регистры адреса ЭСППЗУ – EEARH и EEARL – определяют адрес ячейки ЭСППЗУ в 4 кбайтном пространстве. Байтные ячейки ЭСППЗУ адресуются линейно в диапазоне адресов 0…4096. Начальное значение EEAR неопределенное. Необходимое значение адреса должно быть записано до начала доступа к ЭСППЗУ.

 

Регистр данных ЭСППЗУ –EEDR

Разряды 7…0 – EEDR7.0: Данные ЭСППЗУ

Для выполнения записи в ЭСППЗУ в регистр EEDR необходимо указать записываемые данные, которые будут записаны по адресу, указанному в регистре EEAR. После выполнения чтения из ЭСППЗУ в регистре EEDR содержатся считанные данные из ячейки по адресу указанному в EEAR.

 

Регистр управления ЭСППЗУ – EECR

азряды 7…4 – Резерв

 

Разряд 3 – EERIE: Разрешение прерывания по готовности ЭСППЗУ

Запись в EERIE 1 разрешает прерывание по готовности ЭСППЗУ, если кроме того установлен бит I в регистре SREG. Запись в EERIE нуля отключает это прерывание. Прерывание по готовности ЭСППЗУ генерируется, если бит EEWE сброшен.

 

Разряд 2 – EEMWE: Главное разрешение записи в ЭСППЗУ

Бит EEMWE разрешает установку бита EEWE, инициирующего запись в ЭСППЗУ. Данные будут записаны в ЭСППЗУ по указанному адресу, если в EEMWE записать 1, а затем в течение 4 машинных циклов записать 1 в EEWE. Если EEMWE=0, то запись в EEWE лог. 1 не вызовет никаких действий. После программной установки бита EEMWE он автоматически сбрасывается аппаратно по истечении четырех машинных циклов.

 

Разряд 1 – EEWE: Разрешение записи в ЭСППЗУ

Сигнал разрешения записи EEWE является стробирующим сигналом записи для ЭСППЗУ. Для записи в ЭСППЗУ после корректной установки адреса и данных необходимо установить бит EEWE. Перед установкой бита EEWE должен быть установлен бит EEWE, иначе запись в ЭСППЗУ не произойдет. При выполнении операции записи в ЭСППЗУ необходимо руководствоваться следующей последовательностью (порядок шагов 3 и 4 не важен):

 

1.Ожидание пока EEWE станет равным нулю.

2.Ожидание равенства нулю бита SPMEN в регистре SPMCSR.

3.Запись нового адреса ЭСППЗУ в EEAR (опционально).

4.Запись новых данных в регистр EEDR для записи в ЭСППЗУ (опционально).

5.Запись лог. 1 в EEMWE, когда в EEWE регистра EECR записан ноль.

6.Запись лог. 1 в EEWE в течение четырех машинных циклов после установки EEMWE.

 

ЭСППЗУ нельзя программировать во время записи флэш-памяти из ЦПУ. С учетом этого, перед началом новой записи в ЭСППЗУ необходимо проверить завершение программирования флэш-памяти. Шаг 2 необходимо выполнять, если в приложении используется программирование из загрузочного сектора. Если программирование флэш-памяти под управлением ЦПУ не предусмотрено, то шаг 2 может быть исключен. См. “Самопрограммирование из сектора начальной загрузки с поддержкой чтения во время записи” для детального изучения программирования из загрузочного сектора.

 

Предостережения: Прерывание между шагами 5 и 6 может нарушить цикл записи из-за превышения установленного предела времени на выполнение этих шагов. Если процедура обработки прерывания, осуществляющая доступ к ЭСППЗУ, прерывается другим доступом к ЭСППЗУ, то EEAR или EEDR будут изменены, вызывая сбой прерванного цикла доступа. Во избежание этих проблем рекомендуется сбрасывать флаг общего разрешения прерываний при выполнении последних четырех шагов.

 

По окончании записи бит EEWE сбрасывается аппаратно. Данный бит может опрашиваться программно для определения возможности записи следующего байта (нулевое значение). После установки EEWE ЦПУ останавливается на два машинных цикла перед выполнением следующей инструкции.

 

Разряд 0 – EERE: Разрешение чтения из ЭСППЗУ

Сигнал разрешения чтения из ЭСППЗУ EERE является стробом чтения ЭСППЗУ. После записи корректного адреса в регистр адреса EEAR бит EERE должен быть установлен к лог.1 для запуска механизма чтения ЭСППЗУ. Чтение из ЭСППЗУ выполняется одновременно с инструкцией, поэтому, запрашиваемые данные готовы для считывания сразу по ее завершении. После чтения из ЭСППЗУ ЦПУ задерживается на четыре машинных цикла, а только затем выполняет следующую инструкцию.

 

Пользователь должен опросить флаг EEWE до начала операции чтения. Если осуществляется операция записи, то невозможно не только считать ЭСППЗУ, но и изменить регистр адреса EEAR. Во время доступа к ЭСППЗУ используется калиброванный генератор. В таблице 2 приведено типичное время программирования ЭСППЗУ через ЦПУ.

 

А вот пример функции записи:

void EEPROM_write(unsigned int uiAddress, unsigned char ucData)

{

/* Ожидаем окончание предыдущей записи */

while(EECR & (1<<EEWE));

/* Указание адреса и данных */

EEAR = uiAddress;

EEDR = ucData;

/* Запись лог. 1 в EEMWE */

EECR |= (1<<EEMWE);

/* Запуск записи в ЭСППЗУ путем установки EEWE */

EECR |= (1<<EEWE);

}

 

А это пример функции чтения:

unsigned char EEPROM_read(unsigned int uiAddress)

{

/* Ожидание завершения предыдущей записи*/

while(EECR & (1<<EEWE));

/* Установка адресного регистра */

EEAR = uiAddress;

/* Разрешение чтения из ЭППЗУ путем установки EERE */

EECR |= (1<<EERE);

/* Возврат данных из регистра данных ЭСППЗУ*/

return EEDR;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
И ещё как в Имэджин крафт поставить 16МГц. Я кварц подцепил а контроллер всё равно на 4 Мгц работает!!

 

В Image Craft ничего ставить ненадо.

Любые Меги с завода запрограммированы так,что работают от внутреннего RC генератора (как раз ,помоему,4Мгц).Это тебе не AT2313 у которого его нет.

Здесь надо играться с FUSE-ами.

Почитай про это в интернете,или даташите.

ВНИМАНИЕ!

Неправильно установленным фьюзом можно убить контроллер.

ВНИМАНИЕ!

Установленный бит = 0.

Не установленный = 1.

Короче через жопу.

Я на этом уже обжегся.

 

Так-же в некоторых мегах есть FUSE бит который делит частоту на 2.

По умолчанию он установлен.Например в ATMega48.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо брат! ИНЕЛ!

 

Вот что я нарыл по ЕЕПРОМ (этим и пользуюсь, пока на ура):

 

Запись:

 

while(EECR & (1<<EEWE));

EEAR=1;//АДРЕС

EEDR=digit1;//ДАННЫЕ

EECR|= (1<<EEMWE);

EECR|= (1<<EEWE);

 

 

Чтение:

 

while(EECR & (1<<EEWE));

EEAR=1;//АДРЕС

EECR|= (1<<EERE);

digit1=EEDR; //ДАННЫЕ

 

Вот только вопрос Адрес максимальный какой???

Если знаешь скажи! Тока в десятичном виде скажи!

 

И ещё подтяжка сколько Ом должна быть??

 

 

Делаю прибор один!

Партию на 70000р. закажут у меня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вот только вопрос Адрес максимальный какой???

Если знаешь скажи! Тока в десятичном виде скажи!

 

У 16-й меги всего 512 байт EEPROM.Соответсвенно максимальный адрес 511.

 

0-м адресом пользоваться нерекомендуют.

 

И ещё подтяжка сколько Ом должна быть??

Какая подтяжка,где подтяжка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Инел!

 

Подтяжка 470 ОМ! Для того чтоб кнопку сделать.

Например проверяешь портб = 11111110 а на входе не 1 а 0 и условие не соблюдаются!

 

Скажи как например проверить только первый бит портб не обращая внимания на остальные!

Например PORTB = 10101110 все биты меняются а мне надо например условие поставить только по первому биту.

 

 

Спасибо за своевременную помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Скажи как например проверить только первый бит портб не обращая внимания на остальные!

Например PORTB = 10101110 все биты меняются а мне надо например условие поставить только по первому биту.

Спасибо за своевременную помощь!

 

if (PORTB & 0x01) // для проверки бита(-ов) используем логическое умножение (операция И) с маской нужных битов.

{

//делаем что нужно

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да но если на нескольких битах еденица?

 

единица . сори за опечатку

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую разжевать.

if (PINB & 0x01)

{

 

}

Допустим PINB = 0b11001001;

Значение с которым происходит операция И = 0b00000001 или в hex 0x01.

Значит получается 0b11001001 & 0b00000001 = 0b00000001,что больше 0-ля и условие выполняется.

 

Здесь операция И выполняется над каждым битом.

0b11001001

0b00000001

--------------

0b00000001

 

Допустим PINB = 0b11001000; тогда

0b11001000

0b00000001

--------------

0b00000000

 

Допустим значение = 0b00000010 тогда

0b11001000

0b00000010

--------------

0b00000000

 

 

Если хочеш установить конкретный бит, то надо произвести операцию ИЛИ.

PORTB = 0b11000000;

PORTB = PORTB | 0b00000001;

тогда PORTB будет равен 0b11000001.

 

Если хочеш снять бит ,И.

PORTB = 0b11000001;

PORTB = PORTB & 0b11111110;

тогда PORTB будет равен 0b11000000.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Инел , Респектищееееееее!!!

Спасибо брат!

 

Всё Вкурил!

 

 

И тому челу спасибо! АЛ-гали.

 

Спасибо ребят! Для замудренный этот С.

Ошибки в проге по часу ищу!

 

 

Например :

 

Выполняю код а он сука присваивает без условия gi0=1 и всё!!! Для пока дошёл!

Оказывается if (PINB==128) {gi=0;gi0=1;} надо было!!!

 

Ну начинающий я что терь!

 

:)

 

 

Там опечатка. Вот код первый : if (PINB==128) gi=0;gi0=1;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты