Автор Тема: Тонкости программирования и использования AVR  (Прочитано 34508 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Пока разводил плату в голову пришла мысля.
Первую печатку развожу одностороннюю - пока отделался тремя перемычками. А вот на MAX232 питалово провести было сложновато, зато рядом был свободный порт от меги. Возникла мысля - запитать MAX232 прямо от выхода меги. Он может 30 ма выдавать, а макс всего 8 ма потребляет. Со всех сторон идея вроде хорошая - тут и горячее подключение COM порта, и миллиамперы можно экономить, разводка опять же... Но может какие подводные камни есть?
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Я бы запитал как обычно либо от СОМ порта, а так чёт стрёмно. Часто они (МАХы) гибнут если подключать порт на горячую, при этом нагрузка явно увеличится, и выдержит  порт твоей меги или нет одному богу извесно.  А может и ничего не станет.  Если это не кардиостимулятор, то рискнуть можно... ;)
Не все йогурты одинаково полезны!

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Ты меняи неправильно понял. На горячую - всмысле само устройство выключать не надо, а когда надо работать с ком портом, что будет довольно редко, мы програмно перед отпракой или приемом данных подаем  команду подать на ножкувыход 5 вольт ,которые запитают макс,  а после завершения операций вводв вывода напругу с ноги убираем, и макс обесточивается. Таким образом макс будет подключатся не на горячую.
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Таким образом мы будем включать макс как обычный светодиодег....  :)
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Всё понятно. Но слабое звено-то остаётся! При проэктировании каких либо устройств (так-же как и при программировании) не нужно забывать о "защите от дурака",  кото-то так мне говорил... Кто даст гарантию что кто-либо не включит на горячую?  Подключи от СОМ порта,  лишний диод, стабилитрон и конденсаторчик. Только кажется придётся ещё кой-то управляющий сигнал на СОМ подавать. Ну или хоть ключик какой поставь.
Не все йогурты одинаково полезны!

Форум проекта "Минилаб-Мастер"


eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
А где данные будут храниться? Если отдельно в ЕЕПРОМ то хорошё, и не страшно подключать так как задумано, а если в памяти самого контроллера, то не ест гуд!
Не все йогурты одинаково полезны!

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Цитировать
А где данные будут храниться? Если отдельно в ЕЕПРОМ то хорошё, и не страшно подключать так как задумано, а если в памяти самого контроллера, то не ест гуд!

А какая разница? Поток данных во внешнюю ЕЕПРОМ всеравно через контроллер пойдет..
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
И еще я так и не понял - I2C можно подключать к любым ножкам контроллера или только к специальным аппаратным ногам? У меги 32 такие есть, спец заточеные порты. Или BASCOM-овской  библиотеке  I2C пофиг?
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Цитировать
Цитировать
А где данные будут храниться? Если отдельно в ЕЕПРОМ то хорошё, и не страшно подключать так как задумано, а если в памяти самого контроллера, то не ест гуд!

А какая разница? Поток данных во внешнюю ЕЕПРОМ всеравно через контроллер пойдет..

Восстановить легче. А ещё лучше, что-бы  данные дублировались и синхронизировались. Если правильно понимаю работа с кассовыми аппаратами? Я с этой сферой не знаком, какие проблемы могут быть при форс мажоре не знаю, но у меня есть оч хороший знакомый, который непосредственно их обслуживанием занимается... Человек простой - как валенок. Я на него смотрю, и всей своей интуицией чувствую, что никаких проблем там быть не может ни при каком форс мажоре...
« Последнее редактирование: 14 Сентября 2009, 17:15:36 от eriser »
Не все йогурты одинаково полезны!

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Цитировать
И еще я так и не понял - I2C можно подключать к любым ножкам контроллера или только к специальным аппаратным ногам? У меги 32 такие есть, спец заточеные порты. Или BASCOM-овской  библиотеке  I2C пофиг?
Уже в который раз отвечая на твои посты возникает желание вспомнить то что когда-то изучал и взяться за это основательно...Но бл..... столько водки не выпью... Это штука интересная и захватывающая- но. Я когда-то это дело забросил не найдя единомышленников... Ну да ладно..
Насколько я помню, те ноги что предлагаются- это уже организованный аппаратный интегрированный I2C (тоесть закинул адрес+смещение+байт куда нужно, и он оказывается там, там где нужно),  теоретически можно организовать на любом порту, но протокол нужно будет воссозвать самому. Признаюсь - могу соврать.  
« Последнее редактирование: 14 Сентября 2009, 18:31:02 от eriser »
Не все йогурты одинаково полезны!

Форум проекта "Минилаб-Мастер"


Yura

  • Профи
  • ****
  • Сообщений: 423
  • Карма: 2
  • Пол: Мужской
  • Это Я :-)
    • Просмотр профиля
можно в принципе и так и так,  все равно коряво выходит.... :), встроенный и2с это больше фикция чем реальный порт.... это скорее метаморфоза усб порта который адаптирован для и2с, возможно я что то путаю, но на атмеге 16 гемор ещё тот был....
что касается памяти лучше поставить внешнюю, причина простая, и2с память можно стереть только выполнив определённые условия по протоколу, а в авр-ке, в случае како го либо косяка память может элементарно стереться.
кстати, если интересно могу кусок проги дать с атмеги16, которая как раз на и2с работает....(управление аудио процесором тда7313)
лужу паяю, минилаб починяю...

eriser

  • Права бана
  • Профи
  • *
  • Сообщений: 202
  • Карма: 1
  • Пол: Мужской
  • Да чтоб вы все были здоровы...
    • Просмотр профиля
Цитировать
что касается памяти лучше поставить внешнюю, причина простая, и2с память можно стереть только выполнив определённые условия по протоколу, а в авр-ке, в случае како го либо косяка память может элементарно стереться.
 
Да так и есть, но о ненадёжности ЕЕПРОМов я промолчу... Это скорее всего связано с интенсивным использованием-багами по и сопутствуюжщими факторами. Ничто не совершенно :-/
« Последнее редактирование: 14 Сентября 2009, 19:52:13 от eriser »
Не все йогурты одинаково полезны!

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Вот кусочег кода работы с I2C памятью 24С256 - 24С512 - юзайте, кому надо. Сам нашел в инете. Работает как Калашников. С ком-порта можно писать в нее напрямую со скорстью 1200.


$lib "I2C_TWI.LBX"                                          \'Setting up i2c hardware bus
Config Twi = 400000                                         \'Hardware i2c bus speed
Config Scl = Portc.0                                        \'TWI (i2c) ports on the Mega128
Config Sda = Portc.1
Const 24c256w = &B10100000                                  \'slave write address eeprom
Const 24c256r = &B10100001




Writemem:
I2cstart
I2cwbyte 24c256w
Tempadress = High(adrs)
I2cwbyte Tempadress                                         \'highbyte adress of EEPROM
Tempadress = Low(adrs)
I2cwbyte Tempadress                                         \'slave address (read)                                       \'read byte
I2cwbyte Value                                              \'generate stop
I2cstop
Waitms 5
Return




Readmem:
I2cstart
I2cwbyte 24c256w
Tempadress = High(adrs)
I2cwbyte Tempadress                                         \'highbyte adress of EEPROM
Tempadress = Low(adrs)
I2cwbyte Tempadress                                         \'lowbyte adress of EEPROM
I2cstart                                                    \'repeated start
I2cwbyte 24c256r                                            \'slave address (read)                                        \'read byte
I2crbyte Value , Nack
I2cstop                                                     \'generate stop
Return

« Последнее редактирование: 11 Октября 2009, 15:40:21 от admin »
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Вообще, когда вживую потрогал I2C, я в нее почти влюбился  :)

А пока ворос таков - пока делаю проект - заглядываю вперед.

Атмеловские чипы... Не не так АТМЕЛОВСКИЕ ЧИПЫ подерживают самопрограммирование. То есть можно сделать boot програмку, которая может при опроеделенный условиях прошить чип новой прошивкой. Меня интересует загрузчик и шифратор, который позволяет обновить чип прошивкой, распростроняемой свободно мною, но чтобы прошивку невозможно было спреть. Ессесно, прошивка может обновлять чипы которые я заранее запрограммил и продал. Прошивка может заливатся в чип через ком порт или, лучче всего, через EPROM память с заранее запрограмированой микрухой.

Есть у кого такой опыт? 
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Andy

  • Администратор Форумa
  • Эксперт
  • *
  • Сообщений: 1803
  • Карма: 15
  • Пол: Мужской
  • Нельзя отремонтировать то, что не сломано...
    • minilabmaster
    • Просмотр профиля
    • Форум "Минилаб-Мастер"
Пробороздил я сдесь носом по инету и наткнулся на это:

http://ru.wikipedia.org/wiki/XTEA

Кто-нить разжует мне Алгоритм XTEA-3 на бейсике или подробно по шагам - он вроде короткий. Буду очень благодарен...
Заклинило деталь - надави на нее, если она сломалась - ничего, ее все равно надо было менять.

Форум проекта "Минилаб-Мастер"