Если немного упростить наш диалог:
Я: У меня глюк, что делать?
H: У тебя ошибка.
Я: У меня нету ошибки.
H: Нет, у тебя есть ошибка.
Я: Скажи какая?
H: Догадайся сам.
Я: Я ее не вижу, если есть - скажи.
H: А с чего ты решил, что я буду спорить и что-то доказывать???
Глюки бывают. И в самых неожиданных местах! Проверяй систему. У меня как-то был ACDsee 4.0 и работал прекрасно, после установки фотошопа - начал падать, спотыкаясь на .DAT файлах при попытке построить для них превьюшки, которые вообще никоим образом не касаются просмотрщика. В данном случае кто виноват? фотошоп обновил системные библиотеки и сделал всем плохо... причем проблема его деинсталляцией не решалась.
Попробуй переставить все на чистую систему и воспроизвести глюк.
menzoda писал(а):Тут МК не сбрасывается, тут точки останова не ставит, тут лучше не давать компилятору сложные выражения, тут надо питание переткнуть, чтоб заработало, и тому подобное. Поэтому я не удивляюсь таким выкрутасам, хотя они меня очень расстраивают.
Это от непонимания причин таких проявлений.
Сам по себе дебаг контроллера - действо не слишком органичное для его архитектуры.
А если уж говорить о неудобствах, то они в самую последнюю очередь относятся к подобным "багам".
Статические задачи отлаживаются неплохо даже в симуляторах, а задачи РРВ хреново дебажатся с любым IDE, поскольку противоречат в самой своей основе идее пошаговой отладки или отладке по брекпойнтам.
menzoda писал(а):Да я хочу, нет я просто требую, чтобы IDE для ARM (стоящая over 7000$), разрабатываемая под присмотром самого ARM, вместе с отладчиком J-Link ARM, хорошо работали с ARM микроконтроллером.
Вы можете предъявить документ, подтверждающий вами покупку данного продукта? Именно на эти "over.."
Должен вас огорчить, что от "цельнотянутого" продукта можно ожидать ЛЮБЫХ глюков. Вы можете хотеть, требовать, топать ногами сколько вам будет угодно. Гарантия безошибочной работы распространяется только на честно приобретенные продукты. Вы уверены в отсутствии "закладок" в "кракнуто-хакнутых" вариантах? На чем базируется эта уверенность?
Надо быть требовательным. Если все будут требовать - они сделают, если все будут смиренно попускать им недостатки - они не пошевелятся и продолжат доить.
Интересно, на какую страшную сумму вас "выдоили"?
В заключение - у каждого бренда IDE есть support service. Во всем мире принято обращаться именно туда. Причем индивидуально. Не стоит "поднимать общественность" на битву с выловленным вами багом.
Там вас научать излагать свои проблемы предметно, расскажут, что такое "stable issue repeating". Но в первую очередь поинтересуются вашей legacy license.
Errorkpi писал(а):Кто-нибудь в курсе, где купить вот такую штуку Отладочная в Киеве.
Дык прямо на ибэе и покупайте. Или вам охота "поддержать отечественного спекулянта"?
2-3 недели, и железяка ваша. Сомневаюсь, что этот срок выбьет вас из напряженного графика, согласованного с крутым заказчиком..
ut1wpr писал(а):согласованного с крутым заказчиком..
Разве ж я сам себе сроки не смягчу?
Думал может есть в Киеве уже привезенное (по приемлемой цене) +20..30 грн. я согласен переплатить, за "здесь и сейчас". Но если нет так нет...
ut1wpr писал(а):согласованного с крутым заказчиком..
Разве ж я сам себе сроки не смягчу?
Думал может есть в Киеве уже привезенное (по приемлемой цене) +20..30 грн. я согласен переплатить, за "здесь и сейчас". Но если нет так нет...
Плохо же вы думаете о наших барыгах. Не станут они за 20-30...
Не колеблясь покупайте на Ибэе.
Добрый день, подкиньте плиза схемку дежурного режима.
Я тут устройство одно варганю и нужна дежурка.
Ну например пусть будет на Pic16f887.
Только вот проблема одна, есть 2 кнопки управления и 2 энкодера.
И новую кнопку никак не добавить т.к корпус спроектирован и все подогнано, оч долго все делалось. Я хотел бы например использовать кнопку стоп на вкл и выкл, если быстро нажать устройство включается если долго держать оно выключается.
Трансформатор - выпрямитель - стабилизатор. Классика же. Обычно для дежурного режима немного нужно, поэтому и транс пойдет маленький - 0.5 - 1Вт. От него же можно запитать реле которое будет включать основное питание.
Мikа писал(а):Парни, а как в Atmel Studio 6 называется библиотека для ATmega32, которую в самом начале кода надо подключать?
На контроллере написано
ATMEGA32
16PU
1020D
Через программатор он отзывается как ATmega32, с signature 0x1E9502.
Дядьки...
Из всего, что там лежит, прописал ссылку на эту m32def.inc библиотеку. Но, походу, не она. Тк контроллер раз 5 прошился. Но были сообщения о НеVerify флеш памяти и что-то в этом роде. Щас контроллер так же выждаёт такие ошиббки, а если отключить проверку флеш после программирования, то, вроде бы, всё хорошо зашивает, но прошивка не работает.
Почему я здесь и задаю тупые вопросы?
Потому что хочу научиться.
Доброго времени суток.
Надеюсь ни кто не против глупого вопроса?)
Простоя задача: при нажатии кнопки светодиод меняет свое состояние(вообщем просто оваиваю снятие состояния пинов).(atmega8, WinAvr+AVRStudio 4)
КодСпойлер#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
}
}
Параллельно кнопке висит конденсатор(104) и подтяжка 10к(к +).
По идее(по моим соображениям) исходя из кода, диод должен постоянно моргать с задержкой 100мс, так как 16 = 0b00010000;
Но он не мигает, а именно при нажатии меняет свое состояние.(причем может не реагировать на нажатия по 3-4 раза если еще отключена подтяжка в МК)
Объясните почему именно так работает и если что-то не так подскажите что и где поправить?(забавно но внешние прерывания освоил раньше этого^^)
И можно ли снимать состояние не всего PINn, а одного отдельно(например PINC.4, в этом компиляторе этот способ не работает).
Нашел вот такой способ:
if(!(PINC&(1<<PINC5)))
Может кто разжевать пошагово логику этой записи(объясняя что означает каждый символ)?
P.S.
ни как не разберусь с символами: ~, |, ||, &, &&, ^(я так понял инверсия)
это слишком много, достаточно нескольких нанофарад(но ИМХО лучше делать программный антидребезг, с задержкой около 20мс)
foton6 писал(а):Нашел вот такой способ:
if(!(PINC&(1<<PINC5)))
расшифровывается просто
имеем маску в виде единички сдвинутой на PINC5 - 00100000
вычисляем логическое И порта и этой маски(при логическом И единица будет только тогда когда и в маске и на порте единицы), т.е. в этом случае только одна нога информативна, на остальных всегда получится ноль
как вариант вместо записи 1<<PINC5 можно просто указать нужную маску(с единицами на тех местах, которые хотим проверять)
foton6 писал(а):ни как не разберусь с символами: ~, |, ||, &, &&, ^(я так понял инверсия)
побитовые операции(для преобразования)
~ инверсия
| побитовое ИЛИ(единица, если хоть один из операндов 1)
^ побитовое ИСКЛЮЧАЮЩЕЕ ИЛИ(единица, если значения операндов разные)
& побитовое И(ноль, если один из операндов 0)
операторы сравнения(для сравнения, Кэп)
|| ИЛИ
&& И
---------------
а вообще это описано в любой книжке по программированию,не говоря уже о гуглепоиске "логические операции"
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
unalex спасибо. Все понятно.
Пару книг уже прочел, но теория плохо усваивается без практики.
Вот сейчас запомнившееся осваиваю на практике ))
Вроде заработало, вот только в данном исполнении программы за одно нажатие диод успевает раз 5 сменить свое состояние.
Ну вообщем это уже мелочи главное ясно как работать с пином.
за одно нажатие диод успевает раз 5 сменить свое состояние
так оно и будет - программа крутится в бесконечном цикле и пока кнопка нажата, светодиод будет неоднократно переключаться
чтобы заставить переключаться его только один раз - можно использовать 2 способа
1 переключать только по ИЗМЕНЕНИЮ состоянии кнопки а не по нажатому состоянию, т.е. каждый раз запоминать предыдущее состояние, и если оно не меняется - ничего не делать
2 использовать дополнительную переменную - флаг, при нажатой кнопке и флаге(например равном нулю) - переключить диод и изменить флаг(в единицу), при опущенной кнопке снова его сбросить
...........
ну и не следует забывать о дребезге контактов
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
unalex
Я же говорю остальное мелочи, мне главное научится было использовать пины.
Реально голова у меня рабочая, я с книгами дружу очень плохо и с теорией в целом *)
Вот такое решение:
Спойлер#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
void main(void)
{
DDRD = (1<<0);
while(1)
{
if(PINC&(1<<4))
{
while(1)
{
if(!(PINC&(1<<4)))
{
PORTD ^= 0b00000001;
break;
}
}
}
}
}
У меня работает на ура.