реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Непонятки со 128 мегой
AlexTech
сообщение Jan 27 2011, 18:43
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Подскажите пожалуйста, что такое может быть?
Мега 128 16MOU, между ногами РА2(AD2) и PA3(AD3) и минусом подключены светодиоды,
делаю так:
DDRA |= _BV(PA2);
PORTA |= _BV(PA2);
зажигается один светодиод, потом в течении секунд примерно 15 плавно разгорается второй, сбросом и выключением питания не лечится - горят оба.
выключаю питание, меряю сопротивление между ногами - 3к и оно плавно увеличивается, минут за 5 ток куда-то/откуда-то стекает и
опыт можно повторить :/
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 27 2011, 18:54
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Отрубить тому, кто промывал плату. Но это - субъективное мнение sm.gif
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 27 2011, 19:44
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



эээмммм, плата как бы фирменная, зеленка, все дела ))

А вот такой код вызывает постоянное мигание светодиода, мега перезагружается что ли?

int main(void)
{
DDRA |= _BV(PA2);

_delay_ms(2000);
PORTA |= _BV(PA2);
_delay_ms(2000);
PORTA &= !_BV(PA2);

return 0;
}

Сообщение отредактировал AlexTech - Jan 27 2011, 19:44
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 27 2011, 21:02
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



1) Так писать нельзя:
PORTA &= !_BV(PA2);
биты стирают тильдой:
PORTA &= ~_BV(PA2);

2) main() никогда не должна кончаться (выходить на return);
В ней должен быть организован бесконечный цикл, внутри которого должна вертеться программа.

3) Светодиодом без гасящего сопротивления нельзя нагружать выход порта!
А еще лучше, запитывать светодиод по цепочке: плюс питания - ограничивающий ток резистор - светодиод - порт МК. В этом случае светодиод зажигается, когда на порту выставляют ноль (низкий уровень), а гаснет при высоком уровне. Причина в том, что "заземлять" МК может куда большие токи, чем питать нагрузку за свой счет.
Go to the top of the page
 
+Quote Post
OlegNZH
сообщение Jan 27 2011, 22:03
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 19-11-08
Пользователь №: 41 782



Цитата(AlexTech @ Jan 27 2011, 22:43) *
выключаю питание, меряю сопротивление между ногами - 3к и оно плавно увеличивается, минут за 5 ток куда-то/откуда-то стекает и
опыт можно повторить :/

Это не "ток куда-то/откуда-то стекает" , а кристалл остывает после такой экзекуции sm.gif , без резисторов светодиоды ниЗЗя включать.
Go to the top of the page
 
+Quote Post
нечитатель
сообщение Jan 27 2011, 22:12
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 20-11-10
Пользователь №: 61 032



3) Вторая часть третьего пункта с указанием конкретной модели микросхемы выглядела бы не так общо.
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 06:07
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Значить так,
Во первых: светодиоды включены естественно через резисторы - 470ом, цепочка: ножка - резистор - лед - земля.
Во вторых: светодиоды smd 0805 и токи минимальные.
В третьих: конкретная модель: Мега 128 16MOU 64 вывода, корпус не TQFP 14мм, а еще меньше, сторона 9мм, ножки почти под себя, на треть мм торчат только, но не загнутые, а плоские.
В четвертых: "2) main() никогда не должна кончаться (выходить на return); В ней должен быть организован бесконечный цикл, внутри которого должна вертеться программа." - мега 8505, 16, 32 и тинка 26 прекрасно работают без while(1) - зажигают, гасят и стоят тупят, не перезапускают main(). Более того, дописал while(1), светодиод погас, это хорошо, но! вызов любой процедуры изнутри while вызывает перезапуск.
В пятых: всю жизнь гасил биты именно так PORTA &= !_BV(PA2), никаких проблем, ни на каких контроллерах.

Какие еще предложения? ))))) Я бузусловно не специалист, но это далеко не первая моя поделка на МК ) просто со 128 не работал ни разу
Да, уточню что платка CRUMB128, на штырьках вставлена в мою плату

Сообщение отредактировал AlexTech - Jan 28 2011, 06:43
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 28 2011, 08:29
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
В пятых: всю жизнь гасил биты именно так PORTA &= !_BV(PA2), никаких проблем, ни на каких контроллерах.

- Шурупы заворачивают отверткой
- Всю жизнь забивал их молотком, никаких проблем ни при каких молотках и шурупах!

Цитата
В ней должен быть организован бесконечный цикл, внутри которого должна вертеться программа." - мега 8505, 16, 32 и тинка 26 прекрасно работают без while(1) - зажигают, гасят и стоят тупят, не перезапускают main().

Автомобиль на стоянке надо снимать с передачи и ставить на парковочный тормоз. Но если у вас перед автомобилем крепкая железобетонная стена - то можно этого не делать, никуда дальше этой стены он не денется!

Цитата
Какие еще предложения?
Включить голову. Программирование - это не набор заклинаний из области черной магии. Оно поддается логическому объяснению.

Цитата
Я бузусловно не специалист, но это далеко не первая моя поделка на МК
Вам их не жалко? Мне жалко crying.gif

PS. Watchdog выключен?
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 08:50
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(XVR @ Jan 28 2011, 11:29) *
- Шурупы заворачивают отверткой
- Всю жизнь забивал их молотком, никаких проблем ни при каких молотках и шурупах!

Такс... идем изучать двоичную логику и срр, быренько на вскидку, что нам дает and от not???

Цитата(XVR @ Jan 28 2011, 11:29) *
Автомобиль на стоянке надо снимать с передачи и ставить на парковочный тормоз. Но если у вас перед автомобилем крепкая железобетонная стена - то можно этого не делать, никуда дальше этой стены он не денется!

Я могу попытаться написать конечный автомат только на прерываниях, без цикла, и это блин должно работать

Цитата(XVR @ Jan 28 2011, 11:29) *
Включить голову. Программирование - это не набор заклинаний из области черной магии. Оно поддается логическому объяснению.

Спасибо, я в курсе. Я свободно пишу на c++, c#, delphi, sh, perl и php, второй головы простите нет, пока одной хватает

Цитата(XVR @ Jan 28 2011, 11:29) *
Вам их не жалко? Мне жалко crying.gif

А мне жалко тех, кто не может ничего посоветовать, а только критикует ))

Цитата(XVR @ Jan 28 2011, 11:29) *
PS. Watchdog выключен?

оф кос

Я никого не хочу обидеть, и срач в топике мне не нужен, а помощь действительно требуется, просто подбешивает то, что местные мегагуру всех обращающихся с вопросами сразу записывают в полные идиоты )

Сообщение отредактировал AlexTech - Jan 28 2011, 09:07
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 09:38
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 11:50) *
Такс... идем изучать двоичную логику и срр, быренько на вскидку, что нам дает and от not???
У Вас в голове перемешались "логическое отрицание (!)" и "поразрядное дополнение (~)" - эти операции дают разный результ и в Вашем варианте выражения, увы!, не тот, что нужен для правильной работы программы...
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Jan 28 2011, 09:40
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



Программирование - это не набор заклинаний из области черной магии. !!!!!!!!!!!!!!!!!!!!!! smile3046.gif


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 09:48
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(Палыч @ Jan 28 2011, 12:38) *
У Вас в голове перемешались "логическое отрицание (!)" и "поразрядное дополнение (~)" - эти операции дают разный результ и в Вашем варианте выражения, увы!, не тот, что нужен для правильной работы программы...


Может я конечно действительно неправильно применяю то что знаю, именно к микроконтроллерам, но в "Вашем варианте выражения", дает инверсию бита и поскольку он был включен, то соответственно он выключается... нет?
В любом случае это не дает ответа на основные вопросы топика (

Сообщение отредактировал AlexTech - Jan 28 2011, 09:52
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 09:59
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 12:48) *
дает инверсию бита и поскольку он был включен, то соответственно он выключается... нет?
Выражение !_BV(PA2) всегда равно нулю (все биты - нулевые); ~_BV(PA2) не равно нулю (бит РА2 - нулевой, остальные - единица).

Цитата(AlexTech @ Jan 28 2011, 12:48) *
это не дает ответа на основные вопросы топика
Вероятнее всего причина этого безобразия - ошибки разводки/изготовления платы...
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 28 2011, 10:01
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(AlexTech @ Jan 28 2011, 11:50) *
Такс... идем изучать двоичную логику и срр, быренько на вскидку, что нам дает and от not???

Разницу между операциями '!' и '~' представляете?

Цитата
Я могу попытаться написать конечный автомат только на прерываниях, без цикла, и это блин должно работать
А вы в курсе, что произойдет, когда завершится main()?

Цитата
просто подбешивает то, что местные мегагуру всех обращающихся с вопросами сразу записывают в полные идиоты )
Не тех, кто задает вопросы, а тех, кто игнорирует ответы с указаниями на банальнейшие и очевидные ошибки с аргументацией - 'всегда так пишу и у меня всегда это работает'.

И это сильно подрывает веру в заявления типа 'Я свободно пишу на c++, c#, delphi, sh, perl и php' (а в совокупности с фразой 'Может я конечно действительно неправильно применяю то что знаю, именно к микроконтроллерам,' применительно к разнице между '!' и '~' вообще вызывает сомнения в профпригодности это написавшего как программиста, если он конечно не Индус и пишет не на Java)

Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 10:05
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Да вроде все проверил 10к раз ((
Поскольку моя плата в одном экземпляре, то я мог себе позволить всю ее прозвонить на залипы/разрывы, а CRUMB под лаком, но судя по тому что он до сих пор продается, то по крайней мере в разводке ошибок нет
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 28 2011, 10:05
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (AlexTech @ Jan 28 2011, 11:48) *
Может я конечно действительно неправильно применяю то что знаю, именно к микроконтроллерам
Скорее вы неправильно понимаете то, что применяете. Выражение 1<<x дает единицу в бите x. Выражение !(1<<x) дает ноль, просто ноль. Делая Y &= !(1<<x) вы сбрасываете в 0 все биты Y вне зависимости от значения x. Выражение ~(1<<x) дает все биты в 1 кроме бита x, который будет равен нулю. Что даст Y= ~(1<<x) - "идем изучать двоичную логику и срр".


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 10:17
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(XVR @ Jan 28 2011, 13:01) *
А вы в курсе, что произойдет, когда завершится main()?
Интересно: что по Вашему мнению произойдёт? Во всех известных мне трансляторов с языка Си: после выхода из main выполняется бесконечный цикл. Т.е. если нет необходимости выполнять некие действия в бесконечном цикле (цикл - пустой, что практически бывает исключительно редко), то и ничего катастрофического не происходит при выходе из main...


Цитата(AlexTech @ Jan 28 2011, 13:05) *
Да вроде все проверил 10к раз ((
Проверьте правильность установки fuse; замерьте напряжение, потребляемый ток (сравните с расчетным)...
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 10:18
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(XVR @ Jan 28 2011, 13:01) *
Разницу между операциями '!' и '~' представляете?
Делая Y &= !(1<<x) вы сбрасываете в 0 все биты Y вне зависимости от значения x

Понимаю, именно поэтому написано не != а &= !_BV
В конце концов он делает именно то что нужно - ВЫКЛЮЧАЕТ, а все биты или нет не важно, ибо больше ничего полезного на этом порту не висит
Лан, с этим проехали, я попробовал так как "положено" делать, ничего не изменилось

Цитата(XVR @ Jan 28 2011, 13:01) *
А вы в курсе, что произойдет, когда завершится main()?

Нет, не в курсе, с МК я действительно не очень близок, но выше уже писал, что если есть while(1) то перезапуск при любом вызове изнутри него

Цитата(XVR @ Jan 28 2011, 13:01) *
Не тех, кто задает вопросы, а тех, кто игнорирует ответы с указаниями на банальнейшие и очевидные ошибки с аргументацией - 'всегда так пишу и у меня всегда это работает'.

Я попробовал ваши советы, прежде чем отрицать, положительного результата нет к сожалению

Цитата(XVR @ Jan 28 2011, 13:01) *
И это сильно подрывает веру в заявления типа 'Я свободно пишу на c++, c#, delphi, sh, perl и php' (а в совокупности с фразой 'Может я конечно действительно неправильно применяю то что знаю, именно к микроконтроллерам,' применительно к разнице между '!' и '~' вообще вызывает сомнения в профпригодности это написавшего как программиста, если он конечно не Индус и пишет не на Java)

А я и не говорил что я профессиональный программист, я вообще нач.тех. отдела и работаю в основном с людьми и с бумажками, но пишу на каждом из этих языков уже лет 7 как минимум, но это тоже в общем не решает проблему (((
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 28 2011, 10:56
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (AlexTech @ Jan 28 2011, 13:18) *
но пишу на каждом из этих языков уже лет 7 как минимум, но это тоже в общем не решает проблему (((

Вы тогда видимо еще и "свободно пишите" на нескольких десятках языков народов мира, только это "не решает проблему" того, что Вас никто при этом не понимает sm.gif sad.gif. Придется Вам начинать с азов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 11:14
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(zltigo @ Jan 28 2011, 13:56) *
Вы тогда видимо еще и "свободно пишите" на нескольких десятках языков народов мира, только это "не решает проблему" того, что Вас никто при этом не понимает sm.gif sad.gif. Придется Вам начинать с азов.

Еще один учитель выискался, дорогуша, персонально для вас повторяю, я попробовал все те варианты и советы которые мне уже дали на форуме.
Проблема осталась. Лично ваши глубокомысленные каменты можете оставить при себе, а в топик только по существу пожалуйста.
У меня все в порядке с головой и с программирование, я не хочу выпендриваться, но это я первый человек в снг и второй в мире который в 2000 лохматом году хакнул все ресурсные файлы от HMM IV и дал возможность писать моды.

Конструктив пожалуйста, куда ткнуть, что замерить, какой код для теста попробовать.

Сообщение отредактировал AlexTech - Jan 28 2011, 11:21
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 28 2011, 11:34
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (AlexTech @ Jan 28 2011, 14:14) *
куда ткнуть, что замерить, какой ...

Без наличия головы на плечах даже "первому человеку в снг" не поможет sad.gif. Тут думать И ХОТЬ ЧЕГО-ТО ЗНАТЬ надо, а не бездумно битики подбирать.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 11:36
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 14:14) *
Конструктив пожалуйста, куда ткнуть, что замерить, какой код для теста попробовать.
Ну, так вроде, - "мяч на вашей стороне". Или предлагаете заняться телепатией? Попробую "протелепатировать": напряжение на AVCC не забыли подвести?
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 28 2011, 11:39
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Палыч @ Jan 28 2011, 13:17) *
Интересно: что по Вашему мнению произойдёт?
Неизвестно что. Целиком зависит от примененного компилятора и библиотек (точнее от стартапа). Стандарта на это нет, так что и полагаться на это нельзя.
Цитата
Во всех известных мне трансляторов с языка Си: после выхода из main выполняется бесконечный цикл.
Бывают и другие. Могут зациклить main, могут сбросить процессор, могут позвать какой нибудь trap. Вот прямо сейчас смотрю на newlib для ARM - зовет Angel монитор (аппаратный), или выполняет swi (Software Interrupt)


Цитата(AlexTech @ Jan 27 2011, 21:43) *
Мега 128 16MOU, между ногами РА2(AD2) и PA3(AD3) и минусом подключены светодиоды,
делаю так:
DDRA |= _BV(PA2);
PORTA |= _BV(PA2);
зажигается один светодиод, потом в течении секунд примерно 15 плавно разгорается второй, сбросом и выключением питания не лечится - горят оба.
А что стоит в 3м бите DDRA ? Он случайно не на ввод запрограммирован?

Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 11:53
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(zltigo @ Jan 28 2011, 14:34) *
Без наличия головы на плечах даже "первому человеку в снг" не поможет sad.gif. Тут думать И ХОТЬ ЧЕГО-ТО ЗНАТЬ надо, а не бездумно битики подбирать.

Я пытаюсь, читаю и спрашиваю совета(кстати)

Цитата(Палыч @ Jan 28 2011, 14:36) *
Ну, так вроде, - "мяч на вашей стороне". Или предлагаете заняться телепатией? Попробую "протелепатировать": напряжение на AVCC не забыли подвести?

Не забыл )) и AREF через конденсатор не забыл на минус посадить

Цитата(XVR @ Jan 28 2011, 14:39) *
А что стоит в 3м бите DDRA ? Он случайно не на ввод запрограммирован?

Ну во всяком случае я его не программировал, вот весь код который сейчас есть, ну куда проще то ((
Соответственно три состояния:
1. while(1) нету - лед мигает, видимо перезапуск main()
2. while(1) есть, но пустой, лед гаснет, все ок
3. while(1) есть, но в нем вызавается любая процедура - лед мигает, перезапуск или МК или main()

#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRA |= _BV(PA2);

_delay_ms(2000);
PORTA |= _BV(PA2);
_delay_ms(2000);
PORTA &= ~_BV(PA2); поставил тильду как сказали
//while(1){ asm volatile ("NOP" :sm.gif; }
return 0;
}
В случае когда разгорается второй лед он еще проще, выключение выкинуто

Сообщение отредактировал AlexTech - Jan 28 2011, 11:58
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 12:11
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Состояние fuse М103С ?
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 12:19
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Фьюзы только вечером проверю, я сечас на работе )
Но мне кажется что такой простой код должен выполняться правильно независимо от этого фьюза

Сообщение отредактировал AlexTech - Jan 28 2011, 12:30
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 28 2011, 12:31
Сообщение #27


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (AlexTech @ Jan 28 2011, 13:53) *
1. while(1) нету - лед мигает, видимо перезапуск main()
Вероятно по собаке.
QUOTE (AlexTech @ Jan 28 2011, 13:53) *
3. while(1) есть, но в нем вызавается любая процедура - лед мигает, перезапуск или МК или main()
Фуз M103C - ОЗУ расположено по другим адресам, стек в него не попадает, со стека читается мусор.
QUOTE (AlexTech @ Jan 28 2011, 12:18) *
В конце концов он делает именно то что нужно - ВЫКЛЮЧАЕТ, а все биты или нет не важно, ибо больше ничего полезного на этом порту не висит
А второй светодиод?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 12:42
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 15:19) *
Но мне кажется что такой простой код должен выполняться правильно независимо от этого фьюза
От fuse M103C изменяется распределение памяти (memory map, см. рис. 9 в DS). Компилятор распределяет стек в несуществующую память - поэтому без бесконечного цикла (при выходе из процедуры main) идёт перезапуск (стека то - нет реально: выбирется адрес возврата со значением = единицы во всех разрядах и после выполнения команды по этому адресу - следующая команда = 0 - переполнение указателя команд); то же происходит и при вызове процедуры из while(1){} (точнее при возврате из процедуры).
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 13:10
Сообщение #29


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(Сергей Борщ @ Jan 28 2011, 15:31) *
А второй светодиод?

Да фиг с ним, с одним бы разобраться,
кстати надо заметить что моя неправильная "&= !_BV" не мешает управлять силовиками на другой плате абсолютно раздельно, так что нифига не 0 туда пишется, напутали что то знайки, правда там тинка26

Цитата(Палыч @ Jan 28 2011, 15:42) *
От fuse M103C изменяется распределение памяти (memory map, см. рис. 9 в DS). Компилятор распределяет стек в несуществующую память - поэтому без бесконечного цикла (при выходе из процедуры main) идёт перезапуск (стека то - нет реально: выбирется адрес возврата со значением = единицы во всех разрядах и после выполнения команды по этому адресу - следующая команда = 0 - переполнение указателя команд); то же происходит и при вызове процедуры из while(1){} (точнее при возврате из процедуры).

Да я прочитал что это за фьюэ, спасибо, надо обязательно проверить, но вечером...

вот схемка если что...

Сообщение отредактировал AlexTech - Jan 28 2011, 13:14
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 13:22
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 16:10) *
так что нифига не 0 туда пишется, напутали что то знайки
Сверьтесь с каким-нибудь учебником (лучше - со стандартом) или проверьте на "железе" - будете удивлены...
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 28 2011, 13:22
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Ну во всяком случае я его не программировал,
А надо бы. По DS там при старте все 0, т.е. пин3 у вас запрограмирован на ввод, и на нем висит LED. Так что там может потечь что угодно.
Цитата
кстати надо заметить что моя неправильная "&= !_BV" не мешает управлять силовиками на другой плате абсолютно раздельно, так что нифига не 0х00 туда пишется, напутали что то знайки,
Блажен, кто верует sm.gif
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 13:31
Сообщение #32


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(Палыч @ Jan 28 2011, 16:22) *
Сверьтесь с каким-нибудь учебником (лучше - со стандартом) или проверьте на "железе" - будете удивлены...

Дык, "кстати надо заметить что моя неправильная "&= !_BV" не мешает управлять силовиками на другой плате абсолютно раздельно"

Цитата(XVR @ Jan 28 2011, 16:22) *
А надо бы. По DS там при старте все 0, т.е. пин3 у вас запрограмирован на ввод, и на нем висит LED. Так что там может потечь что угодно.
Блажен, кто верует sm.gif


Ну я пробовал же по разному, DDRA |= _BV(PA3); естественно добавлял )) Ну правда, не идиот я ))))
И да верую, могу прислать схему и код )) Можете, как написал Палыч - проверьте на "железе" - будете удивлены ))) И да, протеус тоже кушает такой код правильно, выключает таки один бит ))))

Сообщение отредактировал AlexTech - Jan 28 2011, 13:40
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 13:44
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 16:31) *
Дык, "кстати надо заметить что моя неправильная "&= !_BV" не мешает управлять силовиками на другой плате абсолютно раздельно"
Возможно, что правильная "&= ~_BV" улучшила бы управление...
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 13:47
Сообщение #34


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(Палыч @ Jan 28 2011, 16:44) *
Возможно, что правильная "&= ~_BV" улучшила бы управление...

По настоятельным советам обязательно поменяю, раз так правильнее )
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 28 2011, 13:53
Сообщение #35


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (AlexTech @ Jan 28 2011, 15:47) *
По настоятельным советам обязательно поменяю, раз так правильнее )Y
Не меняйте. Знайкам интересно наблюдать, как вы получаете по лбу граблями, которые сами же любовно полируете.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 28 2011, 13:56
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(AlexTech @ Jan 28 2011, 16:31) *
И да, протеус тоже кушает такой код правильно, выключает таки один бит ))))
Вы чуть меня не убедили, что я сошел с ума. Пришлось ещё раз убедиться, что при "&= !_BV" обнуляется весь порт. Проверил на "железе". Протеусом я не пользуюсь, но попросил товарища проверить Ваше утверждение: "кушает такой код правильно, выключает таки один бит". Вы - неправы, протеус в данном случае с "железом" не расходится.
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 14:00
Сообщение #37


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Цитата(Сергей Борщ @ Jan 28 2011, 16:53) *
Не меняйте. Знайкам интересно наблюдать, как вы получаете по лбу граблями, которые сами же любовно полируете.

Да бросьте юродствовать, мы не в детском садике.
Мне не нужна неработающая поделка, а те платки которые и так работают не грех переделать правильно если так считают специалисты, хотя проблем с ними я и не вижу )

Цитата(Палыч @ Jan 28 2011, 16:56) *
Вы чуть меня не убедили, что я сошел с ума. Пришлось ещё раз убедиться, что при "&= !_BV" обнуляется весь порт. Проверил на "железе". Протеусом я не пользуюсь, но попросил товарища проверить Ваше утверждение: "кушает такой код правильно, выключает таки один бит". Вы - неправы, протеус в данном случае с "железом" не расходится.

Ну теперь вы меня убедили что с ума сошел я ))))), вечером приеду и буду разбираться почему у меня работает как мне надо и железо и протеус. Хотя код у меня с собой, никаких тильд там нет :/
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 28 2011, 16:06
Сообщение #38


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (AlexTech @ Jan 28 2011, 16:00) *
Да бросьте юродствовать, мы не в детском садике.
Какое юродство, три человека вам разложили это выражение на элементарные действия и показали, что результатом по всем законам двоичной математики будет ноль во всем порту.
QUOTE
На улицах слякоть,
И дождик,
И град.
- Наденьте галоши, -
Ему говорят.

- Неправда, -
Не верит Фома, -
Это ложь... -
И прямо по лужам
Идет без галош.



--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Vetal-Soft
сообщение Jan 28 2011, 16:14
Сообщение #39


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 16-06-05
Пользователь №: 6 074



laughing.gif
! - Логическая операция

~ - Побитовое отрицание (или побитовое НЕ, или дополнение) — это унарная операция, действие которой эквивалентно применению логического отрицания к каждому биту двоичного представления операнда. Другими словами, на той позиции, где в двоичном представлении операнда был 0, в результате будет 1, и, наоборот, где была 1, там будет 0.

Проверьте, должно мигать smile3046.gif
Код
#include <avr/io.h>
#include <util/delay.h>

int main (void)
{
    DDRA = (1<<2) | (1<<3);
    while(1)
    {
        PORTA |= (1<<2) | (1<<3);
        _delay_ms(500);
        PORTA &= ~((1<<2) | (1<<3));
        _delay_ms(500);
    }
    return 0;
}


Сообщение отредактировал Vetal-Soft - Jan 28 2011, 16:45
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 16:50
Сообщение #40


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



это унарная операция, действие которой эквивалентно применению логического отрицания к каждому биту двоичного представления операнда. Другими словами, на той позиции, где в двоичном представлении операнда был 0, в результате будет 1, и, наоборот, где была 1, там будет 0.

Вот это правильное объяснение... я и считал что это инверсия, но -
в общем посыпаю голову пеплом, в данном случае был не прав, не каюсь, но за спор приношу извинения, проверил все у себя - логика работы упоминаемой
платки не подразумевает отдельное отключение битов, только отдельное включение, поэтому выглядело все абсолютно работоспособно даже в протеусе
Палычу отдельное спасибо за конструктивные предложения без поучений и за фьюз М103С, все заработало )



Теперь мегавопрос для дальнейших споров ))))
Возможно ли написание некоего протокола с использованием i2c позволяющего динамически раздавать адреса слейв устройствам или хотя бы как-то позволить работать
нескольким устройствам с одинаковым адресом на одной шине?

Сообщение отредактировал AlexTech - Jan 28 2011, 17:07
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 28 2011, 17:42
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Возможно ли написание некоего протокола с использованием i2c позволяющего динамически раздавать адреса слейв устройствам
Да, в стандарте SMBUS2.0 такой протокол описан. Но он требует специального железа на I2C слейве sad.gif
Если есть какое то априорное знание об устройствах на шине, то наверное можно придумать что то и без специального железа
Цитата
хотя бы как-то позволить работать нескольким устройствам с одинаковым адресом на одной шине?
Нет. Но можно разделить шины. Есть разные мультиплексоры, репитеры, екстендеры и пр (см например на I2C от NXP )
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 28 2011, 18:15
Сообщение #42


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Про мультиплексоры я знаю, да, к сожалению это решение не подходит ((
Априорным же знанием про усстройства является то, что это некие исполнительные девайсы построенные на тинке26 выступающей в роли слейва для i2c.
Соответственно адрес можно задать любой.
Первым приходит в голову нечто типа такого: в каждом девайсе рандомная задержка при старте, потом проверка какого то адреса, если он не занят берем себе, если занят проверяем следующий.
Ну и в финале мастер после бОльшей задерки сканит шину на наличие устройств и вычисления действующих адресов laughing.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 29 2011, 06:15
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
потом проверка какого то адреса,
Для этого слейв на тинке должен стать мастером и быть готовым к колизиям на I2C шине
Цитата
Априорным же знанием про усстройства является то, что это некие исполнительные девайсы построенные на тинке26 выступающей в роли слейва для i2c.
А поподробнее -
Сколько их предполагается?
Можно ли в них зашить какой нибудь уникальный идентификатор (например длинное рандомное число)?
Какова физическая конфигурация подключений I2C слейвов (в частности можно ли сделать изолирование отдельных I2C слейвов или сегментов на время конфигурации)?
Цитата
в каждом девайсе рандомная задержка при старте
В тинке нет аппаратного генератора рандомных значений, а так как все тинки включаются одновременно, то их 'рандомные' задержки будут почти одинаковыми
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 29 2011, 06:33
Сообщение #44


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(AlexTech @ Jan 28 2011, 19:50) *
Теперь мегавопрос для дальнейших споров ))))
Возможно ли написание некоего протокола с использованием i2c позволяющего динамически раздавать адреса слейв устройствам или хотя бы как-то позволить работать
нескольким устройствам с одинаковым адресом на одной шине?

Мегаответ. Берем реализацию 1wire идентификации и переводим ея на средства i2c - ответ слейва есть бит Ack, запрос - некий широковещательный адрес с битом чтения/записи и битом собственно данных. Только непонятно другое: смысл этого замысловатого замысла. Все равно исполнительные устройства не идентифицируются позиционно, а управлять сферическими конями может только такой же сферический лошадь.
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 29 2011, 09:35
Сообщение #45


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Ну вот смотрите, если подробнее все описывать..
Делаю аквариумный копмьютер, в центральном блоке стоит 128мега, часики, память разных типов, usb, несколько разъемов с i2c и пару входов для градусников.
Исполнительными устройствами(все построены на тинке26) и имеющими два i2c разъема(ну что бы от центрального блока все не тянуть) на данный момент являются:
1. силовые блоки(220в) на тиристорах(из за ограничения размера самих розеточных блоков получилось по 4 силовых выхода, а этого мало)
2. силовые блоки на транзисторах(до 50в) + шим
3. маленькие платки устанавливаемые в автокормушки взамен штатных и умеющие крутить моторчик для поворота кормушки
4. устройство отображения и ввода, два вида - с жк со знакогенератором и с жк графическим, ну и плюс кнопки
5. устройство на сведотиодах для имитации лунных циклов(шим)
6. устройство ввода(16 дискретных входов) во второй версии переедет в центральный блок
7. устройство управления потоками воды(сервомашинка+клапан)
8. в любой момент можно сделать еще что нибудь )))

вот... я могу все для себя сделать, каждому блоку дать уникальный адрес и не париться, но если понадобится подключить
еще один блок(например розетки) то придется вспоминать какой адрес свободный, а если их 10?, а если сосед попросит ему еще один блок сделать...
в общем хотелось бы автоматизировать этот процесс

Сообщение отредактировал AlexTech - Jan 29 2011, 09:44
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 29 2011, 11:49
Сообщение #46


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
имеющими два i2c разъема
То есть вы их предполагаете включать последовательно? Тогда вопрос координально упрощается. Первый в цепочке отключает весь хвост, пока ему не присвоят адрес (от хоста по спец протоколу на спец адрес). Потом хвост подключается, и следующий в цепочке повторяет процедуру.
На хосте надо предусмотреть независимые I2C концы (через те же мультиплексоры)
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 29 2011, 11:55
Сообщение #47


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Не только последовательно, поскольку на мастере несколько разъемов то таки звезда будет :/
А городить огород на мультиплексорах i2c как бы во первых накладно, во вторых я их в Питере в розницу вообще не нашел ((
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Jan 29 2011, 15:06
Сообщение #48


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(AlexTech @ Jan 29 2011, 15:55) *
Не только последовательно, поскольку на мастере несколько разъемов то таки звезда будет :/
А городить огород на мультиплексорах i2c как бы во первых накладно, во вторых я их в Питере в розницу вообще не нашел ((

А чем вас RS485 не устраивает? Тем более что I2C не предназначен для связи на большие расстояния, а адреса можно выставлять перемычками на модулях и еще диапазон адресов можно разделять по функциональному назначению модулей и адрес модуля устанавливать в как смещение от начала этого диапазона, так перемычек будет меньше, да и все равно вам надо знать где стоит допустим датчик температуры №2 сверху или сбоку аквариума sm.gif


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 29 2011, 15:40
Сообщение #49


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



485 это типо из пушки по воробьям ))) на расстоянии до 5 метров 485 теряет смысл, опять таки со звездой бороться... да и схема усложняется/удорожается. имхо не увидел смысла )
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Jan 29 2011, 17:58
Сообщение #50


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Хм, да не по пушкам, "квадратный" на такое расстояние вряд ли будет нормально работать, а если и чудом будет, то с мегачерепашьей скоростью, хотя ИМХО 99%, что работать не будет. Да и почему звезда? RS485 прекрасно работает и без всякой звезды sm.gif


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
forever_student
сообщение Jan 29 2011, 18:24
Сообщение #51


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 5-04-09
Из: Москва
Пользователь №: 47 180



Цитата(AlexTech @ Jan 29 2011, 18:40) *
485 это типо из пушки по воробьям )))...

А i2c на 5 метров, это "типо" из рогатки по танкам rolleyes.gif . Вам правильно говорят, здесь RS485 - то,что нужно
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 29 2011, 19:40
Сообщение #52


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



ну он как бы уже работает, может и по танкам, но без сбоев )) вы упускаете из виду кол-во передач, я подсчитал - примерно одна из 4 байт в 15 минут, о какой скорости обмена может вообще речь идти ))))

Сообщение отредактировал AlexTech - Jan 29 2011, 19:42
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 29 2011, 19:51
Сообщение #53


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(AlexTech @ Jan 29 2011, 22:40) *
ну он как бы уже работает, может и по танкам, но без сбоев )) вы упускаете из виду кол-во передач, я подсчитал - примерно одна из 4 байт в 15 минут, о какой скорости обмена может вообще речь идти ))))
А про скорость не идет, идет про надежность. Дифференциальный сигнал на метры передавать гораздо помехоустойчивее, чем 2 провода типа 'открытый коллектор' с резисторной подтяжкой

Цитата
Не только последовательно, поскольку на мастере несколько разъемов то таки звезда будет
Ну я вам собственно это и предлагал -
Цитата
На хосте надо предусмотреть независимые I2C концы (через те же мультиплексоры)


Цитата
А городить огород на мультиплексорах i2c как бы во первых накладно,
1 штука это накладно? wacko.gif
Цитата
во вторых я их в Питере в розницу вообще не нашел ((
Закажите сэмплы у NXP
Go to the top of the page
 
+Quote Post
forever_student
сообщение Jan 29 2011, 20:07
Сообщение #54


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 5-04-09
Из: Москва
Пользователь №: 47 180



Цитата(AlexTech @ Jan 29 2011, 22:40) *
...но без сбоев...

Для ухи хватит всего одного сбоя rolleyes.gif . i2c (Inter-Integrated Circuit) не предназначен для связи на таких расстояниях.
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 29 2011, 20:19
Сообщение #55


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



да я знаю что не предназначен, просто в спецификации же не указана длина соединений, а указано только что емкость шины не может превышать 400пф, имхо это много метров пустого провода, а со слейвами ну на 5 хватает ))
народ вон на 50 метров пуляет без проблем ). это во первых, а во вторых что бы ухи не было, у меня протокол обмена со всякими проверками.
в общем первая версия уже распаяна на платах и запущена, пока до второй руки не дойтут рассуждать о чем то другом поздно )
Go to the top of the page
 
+Quote Post
forever_student
сообщение Jan 29 2011, 21:35
Сообщение #56


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 5-04-09
Из: Москва
Пользователь №: 47 180



Цитата(AlexTech @ Jan 29 2011, 23:19) *
...просто в спецификации же не указана длина соединений...

Дубль 2 : i2c (Inter-Integrated Circuit)

Цитата(AlexTech @ Jan 29 2011, 23:19) *
...народ вон на 50 метров пуляет без проблем...

Народ и шурупы молотком biggrin.gif.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 29 2011, 21:55
Сообщение #57


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(AlexTech @ Jan 29 2011, 12:35) *
вот... я могу все для себя сделать, каждому блоку дать уникальный адрес и не париться, но если понадобится подключить
еще один блок(например розетки) то придется вспоминать какой адрес свободный, а если их 10?, а если сосед попросит ему еще один блок сделать...
в общем хотелось бы автоматизировать этот процесс

Предлагаю принять такое правило - выделяете пул адресов для каждого типа исполнительного устройства, подразумевая некоторое макс. кол-во, в пределах разумного,
и внутри блока уникальные идентификатора не нужны - нужны только однозначные соответствия адресов - такой-то адрес==блок, отвечающий за моторчик, находящийся в таком-то месте.
Go to the top of the page
 
+Quote Post
AlexTech
сообщение Jan 30 2011, 08:40
Сообщение #58


Частый гость
**

Группа: Участник
Сообщений: 83
Регистрация: 2-12-05
Пользователь №: 11 688



Ну я примерно по такому пути и иду. На пулы по типам устройств уже все разделено, но пока не используется в явном виде.
Пришла еще в голову мысль взять программную реализацию i2c(она ведь будет работать на тех ножках которые для аппататной предназначены???)
и тупо отправлять адрес не как 7бит+флаг, ну а например как 15+флаг или вообще как инт 31+флаг, ну будет две отдельные процедуры одна для моих штук, вторая стандартная
для часиков и памяти, ну и что. Тогда можно всем девайсам давать адрес+1 и этого точно хватит.
Только не знаю смогу ли переписать )))))

Сообщение отредактировал AlexTech - Jan 30 2011, 08:44
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 05:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.02128 секунд с 7
ELECTRONIX ©2004-2016