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

 
 
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

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

 


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


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