Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Программирование avr

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Программирование avr
Имя
Сообщение << Старые топики   Новые топики >>
Программирование avr - 2011-07-25 21:25:06.400000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Кто-нибудь развлекается этим? Поделитесь опытом, тогда.
если лень читать легенду, то вопрос в конце :)
У мну есть последовательный программатор, аналог Atmel Low Cost Serial Programmer, тот самый который avrdude понимает под псевдонимом avr910. У меня есть at90s2313 – я специально нашёл такой раритет, поскольку я не совсем уверен в возможностях своего программатора. Но, при попытке что-нибудь сделать с этой микросхемой avrdude ругается, мол сигнатура устройства левая. Вместо того, что должно быть микруха возвращает 0x102. Я перерыл весь гугол, такие проблемы не у меня единственного, и все такие проблемы я смог поделить на три класса:
1. вопросы без предложенного решения;
2. слишком длинный кабель использовался;
3. никто не знает почему, но параллельное программирование спасло ситуацию.
Я предпринял попытку осилить даташит к at90s2313, и небезуспешно, я вычитал, что если в микрухе запрограммированы lock биты, то она будет возвращать именно 0x102 вместо нормальной сигнатуры. И я думаю, что дело именно в этом.
А теперь вопрос на сто баксов: можно ли собрать какой-нибудь до ужаса простой программатор, который будет высоковольтно программировать at90s2313, снимая все локбиты, и чтоб при этом, программатор бы этот вешался на COM-порт? COM-порт – это обязательно, я и так уже потратился, купил себе переходник с usb на COM, покупать себе ещё и LPT порт – совсем не хочется. И без того обидно: за 600р я мог бы купить вместо переходника готовый программатор в usb порт.
Post #: 1
RE: Программирование avr - 2011-07-25 21:32:55.910000   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Я вообще ничего не понял, кроме программатора.
Программатор я делал, паял, чтоб повесить его на COM-порт, снимать и править, и обнулять к дефолту дампы микрух, которые стоят в АКБ ноутов, с целью их разблокировки при замене элементов АКБ.
Ещё есть софт для этого дела, который управляет схемой, которая висела на COM-порту.
Это может тебе как-то помочь?
Post #: 2
RE: Программирование avr - 2011-07-25 23:32:09.440000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
У меня есть программатор, но он слабоват для задачи разлочки микросхемы. Прошить он может, но незалоченную. Софт тоже есть: avrdude вполне, как мне кажется, справляется со своей задачей, и проблема не в нём.

Короче, я, будучи не в теме, купил за ~600р конструктор "сделай сам" от мастеркита – дурацкий программатор, спаял его. Пролетел по двум позициям – я не знаю с какими микросхемами этот программатор справится (там путаница какая-то в сопроводительных документах), и я забыл что у меня нет COM-порта. Я купил за ещё ~600р переходник USB->COM. Купил at90s2313, но микросхема оказалась залочена.
И теперь меня уже жаба душит что-то покупать, и микросхему выкидывать жалко. Вот и ищу грамотного совета. Ну или хотя бы сочувствия.

В принципе, я уже заказал радиодеталек на полтора косаря, среди которых есть три аврки и достаточно другого хлама, чтобы их запрограммировать через com-порт (если они тоже не залочены конечно). То есть at90s2313 уже почти не актуальна. Но мне обидно так обламываться. У меня тут уже всё на мази – я разобрал всю электронику в доме (кроме компьютера, вольтметра и осциллографа), буду везде соваться с avr'кой, чтобы вся эта электроника работала бы не так, как задумано тупым производителем. И тут на тебе, такой косяк – сиди и жди когда придёт посылка с детальками.
Post #: 3
RE: Программирование avr - 2011-07-26 08:08:10.360000   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Я не могу понять до конца твою идею, но прошить\разлочить можно далеко не всё.
Я делал программатор мозгов АКБ ноутов, часть производителей делает мозги аппаратуры неисправимыми. Например, если попытаться заменить один элемент в АКБ, то, при снятии напряжения с электроники, она лочится навсегда и летит в помойку.
Это им нужно для вздувания цен на АКБ, который стоит до 600 долларов, то есть, почти половину стоимости ноутбука.
Всё зависит от политики производителя, одни приманивают покупателя возможностью самостоятельной прошивки, другие делают расчёт на обратный момент, ничего не прошьёшь, но первичная начальная покупка дешевле.

Короче, всегда можешь рассчитывать на моё сочувствие при неудачах.


И ещё, пока не забыл, забань, пожалуйста, за мат, пост 893, этого l_n_o кретина http://forum.xakep.ru/fb.aspx?m=2480393.
Post #: 4
RE: Программирование avr - 2011-07-26 08:28:03.970000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
На этом микроконтроллере возможно снять локбиты. Но для этого нужен параллельный программатор. И судя по всему, он мне не светит, пока я не соберу соответствующую железяку-программатор.
Post #: 5
RE: Программирование avr - 2011-07-26 08:35:31.006666   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Ну делай, делай. Как понадобится моё сочувствие, всегда обращайся.
Post #: 6
RE: Программирование avr - 2011-08-20 21:08:37.670000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Мне удалось-таки запрограммировать attiny2313. Светодиодами я наморгался всласть, и теперь у меня следующая мысль, хочу подключить микроконтроллер к COM порту, чтобы потом через этот COM порт произвольно дёргать ножками микроконтроллера, выставляя на них логические нули и единицы, как мне приспичит, причём без перепрошивки микроконтроллера. Собственно я чётко понимаю что и как надо делать, за исключением одного момента. Как организовать преобразование логических уровней COM-порта (-12в 12в) в логические уровни мк (0в 5в)?

Я порыл гугл, там все предлагают использовать микруху MAX232. Идея замечательна, но меня она не устраивает тем, что я хочу понять, как преобразование уровней работает. В программаторе, который у меня (http://www.masterkit.ru/main/scheme.php?num=537) этот преобразователь собран на двух транзисторах VT1, VT2, двух диодах VD1, VD2 и резисторах R1..R4. Дык вот, со схемотехникой у меня туго, а очень хочется понять, как это дело всё работает.

Преобразование сигналов МК в сигналы COM-порта, с одной стороны понятно: там на резисторах R2, R3 собран делитель напряжения, и транзистором повышается уровень напряжения. С другой стороны непонятно нифига: всё равно на коллекторе ведь будут уровни 0..+5, так нахрена эта бодяга с делителем напряжения и транзистором? И ещё непонятно: ведь насколько я понимаю, на COM-порту логическая единица – это -12в, а в той схеме если на ноге микроконтроллера логическая единица, то есть +5в, то и в ком-порт тоже придёт +5 вольт. И совсем непонятно, нахрена там нужны C1 и R1.

С обратным преобразованием от уровней COM-порта к уровням МК та же история. Я, в общем, соображаю как там работают R4, R5 и VT2, как они из +12/-12в делают +5/0в. Но всё равно не понимаю к чему там два диода и конденсатор. И всё равно непонятно где там инвертирование сигнала.

В принципе, может UART в микроконтроллере сам инвертирует сигналы – это я даташит покурю ещё, выясню точно. Тогда вопрос об отсутствующем инвертировании сигнала будет снят. Но всё равно останутся такие вопросы:
1. На линии TX схема даст уровни 0/+5в, а надо бы, мне кажется, -5/+5в, иначе ком-порт не поймёт. Но схема ведь рабочая! Как такое может быть?
2. Зачем там нужны C1, R1, VD1 и VD2? Мне кажется, что всё дело в этих волшебных элементах, они делают всю эту загадочную магию преобразования уровней.
Post #: 7
RE: Программирование avr - 2011-08-20 21:16:27.183333   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Ни черта я не понял чего ты хочешь получить, ясно только одно, тебе надо преобразовать логические 12 вольт в логические 5 вольт?
Ну, делается это любым копеечным триггером, их сотни.
На вход подаёшь 12 вольт, и там будет два выхода один прямой, другой инвертированный.
Тебе, видимо, нужен прямой, насколько я понял.
Подбирать надо по даташитам, чтоб уточнить номинал выхода.
Сначала лекция http://www.chipdip.ru/video.aspx?vid=ID000273335
Потом сами детали
http://www.chipdip.ru/catalog/ic-triggers-rus.aspx

А может просто делитель напряжения поставить и получить из 12 вольт просто 5 вольт?



Post #: 8
RE: Программирование avr - 2011-08-20 21:57:02.680000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Mатцал Коушек
Ни черта я не понял чего ты хочешь получить,

Во-первых, я хочу сделать преобразователь, во-вторых, я хочу понять как работает преобразование в вышеприведённой схеме.
quote:

ORIGINAL: Mатцал Коушек
ясно только одно, тебе надо преобразовать логические 12 вольт в логические 5 вольт?
Ну, делается это любым копеечным триггером, их сотни.
[…]
А может просто делитель напряжения поставить и получить из 12 вольт просто 5 вольт?

Я позыркал про триггеры. Любопытно. Триггером, если я правильно понял, равно как и делителем напряжения можно легко преобразовать +12/-12 -> +5/0, а обратно как? Имея блок питания выдающий как +12в, так и -12в, можно собрать на транзисторах обратное преобразование, но там ведь питание схемы +12в, да и то, эти +12в стабилизатор превращает в +5. В принципе, как я понимаю, ком-порт достаточно либерален к уровню напряжения, и если в него пихать -5в/+5в, то он поймёт что мы хотим ему сказать. Но минус пяти вольт-то у нас нету. А ноль, я боюсь, не покатит как замена для -5в.

Я разглядываю схему, ссылку на которую давал, и в упор не понимаю, откуда она берёт -12 вольт. Есть у меня лёгкое подозрение, что там конденсатор играет такую хитрую роль: он заряжается от COM-порта, когда тот выдаёт сигнал в -12в, и потом используется в качестве источника напряжения -12в, когда надо в ком-порт запихать обратно -12в. Мысль любопытна в своей хитрости, но во-первых, мне никак не додумать эту мысль: идея-то есть, но реализация непонятна. А во-вторых, если даже мысль верна, что будет, если COM-порт выдаёт сигналы -12в реже, чем наш микроконтроллер. Это ведь никакого заряда конденсатора не хватит.
Post #: 9
RE: Программирование avr - 2011-08-20 22:22:12.796666   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
quote:

ORIGINAL: rgo
Триггером, если я правильно понял, равно как и делителем напряжения можно легко преобразовать +12/-12 -&gt; +5/0, а обратно как?

То есть, из логических 5 вольт получить 12 вольт?
Да любым копеечным транзистором, например КТ-315.
На базу подаёшь ему 5 вольт через ограничивающий резистор, он открывается, начинает течь ток эмиттер-коллектор, получаешь с этой цепи нужное напряжение. То есть, к эммитер-коллектору приложено напряжение 12 вольт, а ток начнёт течь, когда к базе приложены твои управляющие 5 вольт. Текущий ток проходит через резистор, с которого ты снимешь нужные тебе 12 вольт.


-Я разглядываю схему, ссылку на которую давал, и в упор не понимаю, откуда она берёт -12 вольт.
Это которая схема? Не могу понять?
Post #: 10
RE: Программирование avr - 2011-08-21 03:39:27.556666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Mатцал Коушек
Это которая схема? Не могу понять?


Меня интересует принцип фунциклирования той половинки схемы, которая слева от микроконтроллера.

quote:

ORIGINAL: Mатцал Коушек
То есть, из логических 5 вольт получить 12 вольт?
Да любым копеечным транзистором, например КТ-315.
На базу подаёшь ему 5 вольт через ограничивающий резистор, он открывается, начинает течь ток эмиттер-коллектор, получаешь с этой цепи нужное напряжение. То есть, к эммитер-коллектору приложено напряжение 12 вольт, а ток начнёт течь, когда к базе приложены твои управляющие 5 вольт. Текущий ток проходит через резистор, с которого ты снимешь нужные тебе 12 вольт.

Да, транзистором можно, но это если питание биполярное, и в схеме есть как +12, так и -12. Так влоб как ты описываешь, не получится, но если подумать, то я уверен это можно сделать и совсем несложно. Но это если на схеме есть -12 вольт, я не хочу заводить в схему ещё и -12в.

Там-то схема работает без -12в. И судя по всему она берёт -12в из ком-порта. Ну а если так, то может и +12в взять из ком-порта? И собрать преобразователь уровней com как отдельное устройство, которому вообще не нужно внешнего питания? То есть просто коробочка, с одной стороны втыкаем кабель из COM порта, с другой стороны кабель втыкаем в микроконтроллер. И ни в одном кабеле нет ни одной жилы с надписью Vcc.

Вообще, я вот думаю, можно повтыкать в цели и задачи других ног COM-порта, и может там есть какая-нибудь нога, которая стабильно держит -12в, в момент когда COM-порт принимает данные? Это мысль! Но я её назавтра оставлю. Кстати… А когда com-порт принимает данные, что какое напряжение он держит на TxD ноге? Может в этом-то вся и суть, что в моменты приёма там -12, и тогда… Но нахрена тогда конденсатор? Ладно, спать пора, завтра разберусь.
Post #: 11
RE: Программирование avr - 2011-08-21 08:25:08.810000   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Да чего тебя волнует конденсатор, он там просто стоит для сглаживания возможных бросков в цепях коммутации, например, при вынимании\втыкании разьёма.
Второе, питание брать с порта не надо, там не расчитано на потребление внешней нагрузкой, насколько я понял, там вообще не питание, а дата-шины, с возможным размахом напряжения по 25 вольт в обе стороны, надо ещё до конца вникать, что там куда.
Надо смотреть здесь http://rs232.net.ru/doc/computer/index.php

И здесь http://www.radiomaster.ru/spravka/papa_mama/com.php
И заодно здесь для полноты http://www.radioland.net.ua/sxemaid-38.html
И здесь подробности http://rs232.net.ru/doc/computer/COM9_rs232.php

Post #: 12
RE: Программирование avr - 2011-08-21 09:39:17.203333   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
quote:

Я разглядываю схему, ссылку на которую давал, и в упор не понимаю, откуда она берёт -12 вольт. Есть у меня лёгкое подозрение, что там конденсатор играет такую хитрую роль: он заряжается от COM-порта, когда тот выдаёт сигнал в -12в, и потом используется в качестве источника напряжения -12в, когда надо в ком-порт запихать обратно -12в.

Совершенно верно, -12 так и берется.
РГО, по моему ты усложняешь. Зачем тебе нужен преобразователь уровней? У тебя есть переходник USB-COM ведь, а они вссе поголовно выполнены на микросхеме FT232, которая выдает ТТЛ уровни 0\5. Дальше идет преобразователь уровней, тот же МАХ232 может быть. Если тебе нужен RS232 с уровнями 0\5, то просто расколупай свой переходник и возьми эти сигналы непосредственно с выхода FT232.
Post #: 13
RE: Программирование avr - 2011-08-21 20:41:56.426666   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Цепочка С1, R1 шунтирует TX на массу. А напруга с этого кондёра идёт через диод на RX.
Я пока не могу понять ход их мысли, чего они этим хотели.
Однако, видно, что если на кондёре есть напруга, то, на второй ноге ДД1 через VT2 будет подан ноль напряжения, масса.
А если на кондёре нет напруги, то на второй ноге ДД1 будет напряжение, получаемое с ДА1, несколько вольт.
Короче, получается, похоже, что этим отслеживается, есть ли наличие сигнала или его нету.
А зачем плюс конденсатора посадили на массу - это странно.
Или это у него не плюс, а какая-то помарка на рисунке.

Post #: 14
RE: Программирование avr - 2011-08-21 21:01:34.773333   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
Матцал, С1 как раз и дает отрицательное питание. Там выше РГО правильно разобрался. Отрицательные полуволны сигнала RX заряжают этот кап через диод, так что плюсик правильно стоит.
Post #: 15
RE: Программирование avr - 2011-08-21 21:10:51.990000   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Ну, может быть и так, относительно земли у него плюс.
Я об этом думал, что там типа средней точки, и к ней у кондёра плюс.
Я просто не сталкивался конкретно с этими программаторами, чего и куда у них идёт.
Post #: 16
RE: Программирование avr - 2011-08-21 22:20:37.040000   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
quote:

ORIGINAL: Родригес
Матцал, С1 как раз и дает отрицательное питание.

А какое же это питание? Это логическое напряжение.
Если бы это было питание, были бы его потребители.
Там питание это ДА1, с её второй ноги, а его величину напряжения устанавливает подстроечный R9


Post #: 17
RE: Программирование avr - 2011-08-21 22:36:25.003333   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
Не придирайся к словам. Это отрицательное питание для преобразователя уровня сигнала TX, собранного на транзисторе VT1. А ДА1 - положительное питание.
Кстати, нумерация ног ДА1 неправильная на схеме.
Post #: 18
RE: Программирование avr - 2011-08-22 00:05:54.556666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Родригес
Кстати, нумерация ног ДА1 неправильная на схеме.

Может быть. Я уже точно не помню почему, но прежде чем впаять его, мне пришлось искать даташиты, читать и втыкать в схему.
quote:

ORIGINAL: Родригес
РГО, по моему ты усложняешь. Зачем тебе нужен преобразователь уровней? У тебя есть переходник USB-COM ведь, а они вссе поголовно выполнены на микросхеме FT232, которая выдает ТТЛ уровни 0\5. Дальше идет преобразователь уровней, тот же МАХ232 может быть. Если тебе нужен RS232 с уровнями 0\5, то просто расколупай свой переходник и возьми эти сигналы непосредственно с выхода FT232.

Офигенная мысль! Не, я серьёзно. Если бы не одно "но". Я расколупал переходник, там стоят другие микросхемы, но суть та же. Но проблема в том, что микросхемы эти в SOIC корпусе, по две ноги на миллиметр (ну или где-то около того), и я боюсь что припаятся мне к ним не удастся. Щаз заточу паяльник, попробую. Но честно говоря не очень верю в результат.

А вообще, мне просто было интересно разобраться. Просто абстрактное любопытство на тему "как это работает", плюс желание получить доступ к остальным ногам COM, чтобы поиграться с легендарным rs232, который оставил неизгладимый отпечаток на всех *nix системах. =)

quote:

ORIGINAL: Mатцал Коушек
Второе, питание брать с порта не надо, там не расчитано на потребление внешней нагрузкой, насколько я понял, там вообще не питание, а дата-шины, с возможным размахом напряжения по 25 вольт в обе стороны, надо ещё до конца вникать, что там куда.
Надо смотреть здесь http://rs232.net.ru/doc/computer/index.php

И здесь http://www.radiomaster.ru/spravka/papa_mama/com.php
И заодно здесь для полноты http://www.radioland.net.ua/sxemaid-38.html
И здесь подробности http://rs232.net.ru/doc/computer/COM9_rs232.php

А я понял, что com-порт рассчитан на то, чтобы питать внешнее устройство, правда там допустимый ток, достаточно небольшой. То хуже чем с usb, и жёсткий диск он не запитает даже при пониженных оборотах. Но если по-мелочи, то можно.
И я нашёл ссылку круче: http://www.pcports.ru/articles/avr5.php :)
Post #: 19
RE: Программирование avr - 2011-08-22 00:51:25.426666   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
quote:

проблема в том, что микросхемы эти в SOIC корпусе, по две ноги на миллиметр (ну или где-то около того), и я боюсь что припаятся мне к ним не удастся. Щаз заточу паяльник, попробую. Но честно говоря не очень верю в результат.
Если так, то лучше не рисковать. К тому же при использовании такого способа придется разорвать линию, соединяющую вход RX микросхемы FT232 (или что там у тебя в переходнике) от преобразователя уровней.

Не врублюсь зачем ? У тебя же готовый программатор есть и судя по всему ты уже поморгал светодиодами.
Post #: 20
RE: Программирование avr - 2011-08-22 01:18:00   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Родригес
quote:

проблема в том, что микросхемы эти в SOIC корпусе, по две ноги на миллиметр (ну или где-то около того), и я боюсь что припаятся мне к ним не удастся. Щаз заточу паяльник, попробую. Но честно говоря не очень верю в результат.
Если так, то лучше не рисковать. К тому же при использовании такого способа придется разорвать линию, соединяющую вход RX микросхемы FT232 (или что там у тебя в переходнике) от преобразователя уровней.

Вовремя написал. =)
Паяльник я наточил, и пришёл к выводу, что пожалуй справлюсь. Но разрывать я ничего не хочу, этот переходник у меня пока единственный метод программирования микроконтроллеров.

quote:

ORIGINAL: Родригес
Не врублюсь зачем ? У тебя же готовый программатор есть и судя по всему ты уже поморгал светодиодами.

Что "зачем"? Как минимум, мне хочется связать контроллер с компом, чтобы с компа по-простому дёргать за ножки микроконтроллера. Во-первых, потому что просто хочется, во-вторых, у меня масса идей как это можно применить в быту. =)
Ну хотя бы, взять этот программатор, схема которого выше. Идиотская конструкция. Ну если так подумать: в нём главный элемент – attiny2313, возможности которого не используются и наполовину. Ну, скажем, список программируемых микросхем зависит от прошивки этого attiny2313. Но он ведь через com-порт связан с компом, и ПО на компе вполне может разрулить программирование целиком. То есть сам attiny2313 может вообще не знать как программировать что-либо, он может тупо следовать командам компьютера. А можно в этот attiny2313 затолкать интерпретатор байткода, чтобы для программирования микросхемы ПО с компьютера давало бы этому attiny программку в байткодах, attiny её бы интерпретировал, и таким образом шил бы программируемую микросхему. Правда пока это лишь мои абстрактные мысли и я с трудом представляю себе, как всё это реализовать, но если я организую канал связи между микроконтроллером и компом, то непонятностей для меня станет меньше.

Или почему именно COM? С usb я не хочу пока связываться, а com мне ещё интересен потому, что терминологию com (точнее rs232) можно увидеть в описании любого устройства linux с именем /dev/tty*. А среди таких устройств попадаются не только com-порты, но так же и виртуальные консоли, и псевдотерминалы и пр. Я когда-то давно пытался осилить все эти тонкости, но ничего не вышло. А сейчас я как глянул на электрическое описание COM, там всё сразу стало прояснятся, хотя я и забыл уже всё, что читал тогда. Поэтому я хочу один раз разобраться с COM до конца, и забыть про него.
Post #: 21
RE: Программирование avr - 2011-08-22 08:04:24.626666   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
quote:

ORIGINAL: Родригес
Кстати, нумерация ног ДА1 неправильная на схеме.

Мне вообще схема не нравится, она странная, вызывает много вопросов.
То, ноги неправильно указали, то плюс на минус посадили, зачем второй кварц, непонятно..
VD2 вообще подозрительный какой-то…
Post #: 22
RE: Программирование avr - 2011-08-22 10:11:09.893333   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
quote:

Ну, скажем, список программируемых микросхем зависит от прошивки этого attiny2313.
Нет, от прошивки абсолютно не зависит. МК в этом программаторе (микроконтроллер, а не то, что вы подумали) связан с компом через СОМ порт, а вот на выход выдает 4 сигнала MISO, MOSI, CLK и CS. Этих 4 сигналов достаточно что бы прошить любой МК поддерживающий последовательное программирование через SPI. То есть прошивка этого МК просто реализует четыре выхода. Если нужно добавить МК, то надо отредактировать DeviceList.dat в ПО того программатора, что у тебя, предваритьельно покурив даташит. Простейший программатор для последовательного программирования называется "5 проводов", гуглить.

Кстати, полезный совет: Если программатору или еще чему потребуется питание, то можно вывести 12 вольт прямо с системника. Я у себя так и сделал - сзади разъемчик с +5 и +12 прикрутил.

Мне сейчас в голову мысль пришла, я смеялся. "РГО и его будущий друг МК"
Post #: 23
RE: Программирование avr - 2011-08-22 20:25:11.056666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Родригес
quote:

Ну, скажем, список программируемых микросхем зависит от прошивки этого attiny2313.
Нет, от прошивки абсолютно не зависит. МК в этом программаторе (микроконтроллер, а не то, что вы подумали) связан с компом через СОМ порт, а вот на выход выдает 4 сигнала MISO, MOSI, CLK и CS. Этих 4 сигналов достаточно что бы прошить любой МК поддерживающий последовательное программирование через SPI. То есть прошивка этого МК просто реализует четыре выхода. Если нужно добавить МК, то надо отредактировать DeviceList.dat в ПО того программатора, что у тебя, предваритьельно покурив даташит. Простейший программатор для последовательного программирования называется "5 проводов", гуглить.

Так не интересно. =)
Если любой МК-не-то-что-вы-подумали можно прошить одной и той же прошивкой, то рождается более интересная идея: а может тогда нафиг не нужно специализированное ПО на стороне ПК? Может быть достаточно будет написать:[~]$ echo "POST /flash HTTP/1.0" &gt;/dev/ttyS0 echo "Content-Length: `wc -l program.bin" &gt;/dev/ttyS0 echo &gt;/dev/ttyS0 cat program.bin &gt;/dev/ttyS0А прошивка при этом, сама разберётся со всем остальным. Единственное что меня смущает – это то, что там всего 2k памяти под прошивку. Нету у меня твёрдой уверенности в том, что я туда смогу впихнуть http-сервер. Точнее сервер-то впихну, но там дохрена места уйдёт под html-код. Можно конечно попробовать этот html-код сжать каким-нибудь очень простым в реализации самостоятельно изобретённым алгоритмом заточенном специально на html… Но я подумаю. В конце-концов, микроконтроллер может отдавать половину данных в пожатом bzip'ом статическом js, который сделает всю магию форматирования текста в браузере.

Короче, не надо меня отговаривать. Лучший способ познания – это свободный творческий полёт, и шишки набитые в результате падений. А я хочу разобраться с тем как оно там программируется, и кроме того, тот первый микроконтроллер который я купил – AT90S2313, он ведь так и не прошился. Я пришёл к выводу что он залочен, и его надо шить высоковольтно. Вот я щаз разберусь с внутрисхемным протоколом шитья, перейду к высоковольтному. И прошью-таки тот мелкоконтроллер, как бы он не сопротивлялся при этом. Либо прошью, либо спалю. Но так просто он не отделается.

quote:

ORIGINAL: Родригес
Кстати, полезный совет: Если программатору или еще чему потребуется питание, то можно вывести 12 вольт прямо с системника. Я у себя так и сделал - сзади разъемчик с +5 и +12 прикрутил.

У меня для таких целей сохранён блок питания от системника. То был системник с P166 MMX и 32Mb памяти на борту. RIP. [:(]
Системника уже нету, а блок питания остался.
Post #: 24
RE: Программирование avr - 2011-08-22 20:33:57.580000   
Mатцал Коушек

Сообщений: 10407
Оценки: 91
Присоединился: 2008-07-09 10:27:49.520000
Можешь рассчитывать на мои скромные познания в радиотехнике. 
Post #: 25
RE: Программирование avr - 2011-08-22 20:43:06.483333   
Родригес

Сообщений: 444
Оценки: 0
Присоединился: 2010-04-16 20:28:58.240000
quote:

Если любой МК-не-то-что-вы-подумали можно прошить одной и той же прошивкой

Ну всё перевернул. Речь ведь шла о прошивке тиньки 13, что стоит в твоем программаторе. От ее прошивки не зависит список поддерживаемых программатором МК.

А прошивка для каждого типа МК своя. Если один и тот же код компилировать под разные типы МК, то и прошивки будут разные.
Post #: 26
RE: Программирование avr - 2011-08-23 07:28:43.193333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Во! Плод моих изысканий. Программка для attiny2313. Принимает по байту из USART и отправляет этот байт обратно. Заодно высвечивает этот байт в двоичном виде на светодиодах висящих на PB.
#include &lt;avr/io.h&gt; #include &lt;avr/interrupt.h&gt; #define BAUD_RATE 51 ISR(USART_RX_vect) { char c = UDR; PORTB = c; UDR = c; /* не совсем красиво, если предыдущий байт не отослан, * то получится нехорошо. */ } static void serial_init() { UCSRA = 0x02; /* двойная скорость */ UCSRB |= 0x98; /* USART_RX inrrpt, RX и TX активны */ UCSRC |= 0x80; UCSRC |= 0x06; /* байт у нас ровно 8 бит */ UCSRC -= 0x80; UBRRH = BAUD_RATE &gt;&gt; 8; UBRRL = BAUD_RATE & 0xff; } static void pins_init() { DDRB = 0xff; PORTB = 0; DDRD = 0x1; /* я хрен знает, надо ли RX/TX ноги размечать как i/o? */ } int main() { pins_init(); serial_init(); sei(); PORTB = 0xaa; while(1); } Правда у мну работает она на каких-то странных бодрейтах. Методом проб и ошибок я пришёл к использованию константы 51 со стороны МК и 2400 бод в настройках терминальной программы. Согласно документации 51 при частоте кристалла 8MHz – это 9600 бод.
Меня не очень удивляет низкая скорость: в конечном итоге я просто припаялся к преобразователю уровней программатора, чтобы для начала так поэкспериментировать. Кинул две сопли с одной платы на другую. Так что высокий уровень ошибок вполне ожидаем. Странно то, что COM-порт и МК на разных бодрейтах хотят работать. Может attiny мой не на 8MHz работает? Ну да ладно, эти вопросы выбора правильных режимов пока не критичны, главное что я могу принимать и отправлять байты из/в COM.

ps. ещё попробовал написать для МК ввод-вывод по-человечески, ну чтоб он на самом деле работал бы в асинхронном режиме. Кольцевой буфер вывода, функция serial_write, которая блокируется в случае если буфер переполняется, обработчик прерывания, который потихоньку из буфера тягает по байту и отправляет в USART. Пока не прошивал и не смотрел, работает или нет. Лишь скомпилял и глянул на размер получившегося: 728 байт. Такими темпами на http-сервер места на флешке не хватит. Там её всего два килобайта. :(
Я конечно повтыкаю в то, что там avr-gcc намудрил, может можно всё покороче оформить, если отказаться от C. Но что-то я сомневаюсь, что удастся раза в два "покороче".

quote:

ORIGINAL: Родригес
Ну всё перевернул. Речь ведь шла о прошивке тиньки 13, что стоит в твоем программаторе. От ее прошивки не зависит список поддерживаемых программатором МК.

Я не переворачивал. =)
Просто сформулировал неудачно, не заметив этой путаницы с прошивками разных контроллеров. Я понял, что "одна и та же прошивка" – это прошивка шьющего контроллера.
Post #: 27
RE: Программирование avr - 2011-08-25 09:19:38.496666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Приехали…

Два часа трудился писал буферизированный ввод/вывод через USART. Написал, отладил. Шью – не работает. Два часа писал, потом два дня разбирался в чём дело. Причём микроконтроллер вообще никаких признаков жизни не подаёт: в начале main втыкаю код, чтобы светодиодики загорелись, и диодики не горят. Уж и так и эдак ковырялся… Но выяснил как вставить код в самое-самое начало, чтобы мой код выполнился до main. Прямо сразу после старта МК, ещё до того как выполнится хотя бы одна инструкция библиотечного кода – оттуда светодиодики зажигаются. Из main не зажигаются. Судя по всему все эти инициализационные штучки из crti.o, типа копирования данных из FlashROM в SDRAM, тупо подвисают где-то. Втыкаю в вывод дизассемблера и никак не могу понять где.

И (ноги в рот той матушке!) обновить avr-gcc и avr-libc до топовых версий не так уж и просто. Я чтобы поставить их вручную корректировал работу гентушной системы сборки – останавливал процесс сборки, правил файлы, и потом "будил" процесс обратно, чтобы он продолжил. Влом мне было доразобраться до конца и отправить багрепорт с патчем на gentoo.org… Всё-таки придётся разбираться с этим. Ох уж эта кросс-сборка. Более глюкавой штуки я не видел.
Post #: 28
Страниц:  [1]
Все форумы >> [Прочее] >> Программирование avr







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.