Мелкие вопросы по МК и ПЛИС.
- -=MindHunteR=-
- Открыл глаза
- Сообщения: 62
- Зарегистрирован: Пн мар 23, 2009 16:20:56
- Откуда: From the Middle of Nowhere
- Контактная информация:
Вопросец!
Привет всем!
У меня есть довольно скудный опыт программирования процессора MOTOROLA F240. Вот теперь надобно эти знания перенести на AT90S2313.
Задача впринципе проста: надо создать девайс, что то вроже бинарного счетчика с дисплеем. Считать буду от 1 до 9.
Ну, скажем вот так:
7 светодиодов - 7ми сегментный дисплей.
"CHAN +" "CHAN -" - этими кнопками происходит счет вверх и вниз.
"USER 1(2)" - пара джамперов, ограничивающая максимальное число. Например 5 или те-же 9.
"AUTO" (с фиксацией) - считать по кругу 1-2-3-...-9-1-2-3-... , индицируя по 2-3 сек каждый.
A[2..0] - бинарный выход. Выдает то же число, что на дисплее, но в двоичном коде.
Писать хочу на С.
Перерыв инет, стало понятно более или менее что делать, но все еще есть КУЧА вопросов.
1) свою прогу я пишу с бесконечным WHILE циклом в MAIN функции? То есть прога будет бежать вечно.
2) как же она будет запускаться? Автоматически, как только подается питание на МК, он сам запустит прогу? И соотв, обрываться при отключении питания? Это не вредит МК и проге в нем?
3) могу я написать код и выложить его сюда для оценки экспертов?
4) я не совсем понима как читать и писать в порты МК на Си. Можете пожалуйста дать примерчик?
ОГРОМНОЕ СПАСИБО!
У меня есть довольно скудный опыт программирования процессора MOTOROLA F240. Вот теперь надобно эти знания перенести на AT90S2313.
Задача впринципе проста: надо создать девайс, что то вроже бинарного счетчика с дисплеем. Считать буду от 1 до 9.
Ну, скажем вот так:
7 светодиодов - 7ми сегментный дисплей.
"CHAN +" "CHAN -" - этими кнопками происходит счет вверх и вниз.
"USER 1(2)" - пара джамперов, ограничивающая максимальное число. Например 5 или те-же 9.
"AUTO" (с фиксацией) - считать по кругу 1-2-3-...-9-1-2-3-... , индицируя по 2-3 сек каждый.
A[2..0] - бинарный выход. Выдает то же число, что на дисплее, но в двоичном коде.
Писать хочу на С.
Перерыв инет, стало понятно более или менее что делать, но все еще есть КУЧА вопросов.
1) свою прогу я пишу с бесконечным WHILE циклом в MAIN функции? То есть прога будет бежать вечно.
2) как же она будет запускаться? Автоматически, как только подается питание на МК, он сам запустит прогу? И соотв, обрываться при отключении питания? Это не вредит МК и проге в нем?
3) могу я написать код и выложить его сюда для оценки экспертов?
4) я не совсем понима как читать и писать в порты МК на Си. Можете пожалуйста дать примерчик?
ОГРОМНОЕ СПАСИБО!
Re: Вопросец!
-=MindHunteR=- писал(а): 3) могу я написать код и выложить его сюда для оценки экспертов?
Да. Советую скачать CVAVR для использования его мастера кода как помошник для WinAVR и PROTEUS
и выкладывать тут архив с проектами.
-=MindHunteR=- писал(а): 4) я не совсем понима как читать и писать в порты МК на Си.
Раз вы решили разобраться то вам наверно разумно прочитать "Устройство микроконтроллеров AVR"
http://radiokot.ru/forum/viewtopic.php?p=195718#195718
Там же вы найдете и "Язык Си для МК".
примеры есть в примерах компиляторов. И в компиляторе CVAVR тоже есть папка с примерами - C:\CVAVR\examples-=MindHunteR=- писал(а): Можете пожалуйста дать примерчик?
И в WinAVR папка с примерами - C:\WinAVR\doc\avr-libc\examples
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
Re: Вопросец!
А какой компилятор?-=MindHunteR=- писал(а):Писать хочу на С.
- -=MindHunteR=-
- Открыл глаза
- Сообщения: 62
- Зарегистрирован: Пн мар 23, 2009 16:20:56
- Откуда: From the Middle of Nowhere
- Контактная информация:
Продолжение по теме...
Поставил значится CVAVR и ПРОТЕУС.
Пашет, все супер.
Начал изучать и писать прогу.
Есть пара вопросов! Спецы - выручайте!
По пред. схеме
1) Я не уверен что правильно назначил порты ввода-вывода.
Надо чтоб портД был весь только на вывод (пойдет на ЛЕДы), а порт А был на вывод с пинов 0 по 2, а остальные на ввод. Соотв. там надо сделать вроде как лог.1, которую кнопкой можно замкнуть на землю, тем самым сделав лог.0. Вот что я намутил.
DDRD = 0xFF; //(0b11111111)
DDRB = 0xE0; //(0b11100000)
Верно?
Теперь, если я хочу писать что в порт D целиком, то я могу делать это так:
PORTD = 0b01010101;
Верно? Cоотв. загорится часть ЛЕДов.
А если в первые пины порта B:
PORTB.0=1;
Это сделает мне лог.1 на одном из трех ВЫВОДОВ порта B. Так?
Его вводы я делаю подтянутой единицей:
PORTB.3=1;
PORTB.4=1;
PORTB.5=1;
PORTB.6=1;
PORTB.7=1;
Тогда, нажав кнопку, на выводе будет лог.0, котрый я смогу прочесть, например так:
if (PORTB.3 == 0) {делать чтото}
Я прав?
2) Надо ли резистор между ножками ввода порта А и кнопкой на землю?
3) Я не хочу использовать внешний кварц. Знаю, что все и без него может работать. Что для этого надо сделать? Надо как то врубить соотв. фьюз, но я что-то не догоняю как именно это сделать.....
Я понимаю, вопросы глупые, и тем не менее, я прошу вашей помощи.
Спасибо огромное!
Пашет, все супер.
Начал изучать и писать прогу.
Есть пара вопросов! Спецы - выручайте!
По пред. схеме
1) Я не уверен что правильно назначил порты ввода-вывода.
Надо чтоб портД был весь только на вывод (пойдет на ЛЕДы), а порт А был на вывод с пинов 0 по 2, а остальные на ввод. Соотв. там надо сделать вроде как лог.1, которую кнопкой можно замкнуть на землю, тем самым сделав лог.0. Вот что я намутил.
DDRD = 0xFF; //(0b11111111)
DDRB = 0xE0; //(0b11100000)
Верно?
Теперь, если я хочу писать что в порт D целиком, то я могу делать это так:
PORTD = 0b01010101;
Верно? Cоотв. загорится часть ЛЕДов.
А если в первые пины порта B:
PORTB.0=1;
Это сделает мне лог.1 на одном из трех ВЫВОДОВ порта B. Так?
Его вводы я делаю подтянутой единицей:
PORTB.3=1;
PORTB.4=1;
PORTB.5=1;
PORTB.6=1;
PORTB.7=1;
Тогда, нажав кнопку, на выводе будет лог.0, котрый я смогу прочесть, например так:
if (PORTB.3 == 0) {делать чтото}
Я прав?
2) Надо ли резистор между ножками ввода порта А и кнопкой на землю?
3) Я не хочу использовать внешний кварц. Знаю, что все и без него может работать. Что для этого надо сделать? Надо как то врубить соотв. фьюз, но я что-то не догоняю как именно это сделать.....
Я понимаю, вопросы глупые, и тем не менее, я прошу вашей помощи.
Спасибо огромное!
Последний раз редактировалось -=MindHunteR=- Ср мар 25, 2009 10:54:53, всего редактировалось 1 раз.
Re: Продолжение по теме...
-=MindHunteR=- писал(а):Поставил значится CVAVR и ПРОТЕУС...
Я понимаю, вопросы глупые, и тем не менее, я прошу вашей помощи.
Спасибо огромное!
1) все верно.
2) Наверное, Вы имели ввиду порт B. Резистор не нужен, можно для помехозащищенности последовательно от контакта кнопки к порту поставить резистор в несколько десятков Ом, от порта на землю конденсатор - несколько нанофарад или меньше, но пока Вам этим не стоит заморачиваться.
3) если Вас устроит частота 1 МГц, то пока вообще не трогайте фьюзы (как я понимаю микроконтроллер у Вас в состоянии заводской поставки). С завода микроконтроллер настроен так, что тактируется частотой 1 МГц (внутренний RC генератор выставлен на 8 МГц, включен фьюз деления частоты генератора на 8 ).
- -=MindHunteR=-
- Открыл глаза
- Сообщения: 62
- Зарегистрирован: Пн мар 23, 2009 16:20:56
- Откуда: From the Middle of Nowhere
- Контактная информация:
Re: Продолжение по теме...
smac писал(а):3) если Вас устроит частота 1 МГц, то пока вообще не трогайте фьюзы (как я понимаю микроконтроллер у Вас в состоянии заводской поставки). С завода микроконтроллер настроен так, что тактируется частотой 1 МГц (внутренний RC генератор выставлен на 8 МГц, включен фьюз деления частоты генератора на 8 ).
а если хочется побыстрее? только кварц?
тупо втыкаю его к ножкам, пара кондеров на землю и все?
а на сколько мгц нужен кварц?
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Aric писал(а):Возможно ли питание схемы на Тини2313 импульсным блоком питания от сотового телефона?
ЗЫ Блок 5,7V 800mA, поставлю после 78L05 например.
Да. Только про конденсаторы не забывайте.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
Если в этой зарядке фильтрация паршивая, то питать таким ИП м/к не следует - он будет себя вести случайным образом, а может и вовсе загнуться. Нужно фильтровать.Aric писал(а):Возможно ли питание схемы на Тини2313 импульсным блоком питания от сотового телефона?
У них дропаут - 1,7 вольта, значит - минимальное на входе д.б. максимальное выходное, плюс дропаут, то есть, порядка семи вольт (5.2 + 1.7 = 6.9). Можно конечно не максимальное выходное брать, а именно то, которое у твоего экземпляра 78L05, но принципиально это положения не изменит.Aric писал(а):ЗЫ Блок 5,7V 800mA, поставлю после 78L05 например.
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
У меня работает без проблем.
Повторюсь ещё раз, КОНДЕНСАТОРЫ на 99% решают проблемы. Вот без них точно работать не будет.
Другой вопрос, что у некоторых импульсников нет развязки с сетью, вот это может стать реальной проблемой.
Повторюсь ещё раз, КОНДЕНСАТОРЫ на 99% решают проблемы. Вот без них точно работать не будет.
Другой вопрос, что у некоторых импульсников нет развязки с сетью, вот это может стать реальной проблемой.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17
Я не утверждаю обратного, просто, будет лучше, если автор вопроса будет исходить из своей ситуации - померяет напруги и либо заменит 7805 на что-то с небольшим DO, либо вовсе выкинет, поставив вместо нее подходящий диод.Pooher писал(а):У меня работает без проблем.
Без сомнений, только нужно еще сказать, что электролит нужно зашунтировать керамикой нанофарад этак на сто, иначе нормальной фильтрации не будет.Pooher писал(а):Повторюсь ещё раз, КОНДЕНСАТОРЫ на 99% решают проблемы. Вот без них точно работать не будет.
К зарядкам от сотовых это, IMHO, не относится (не дай бог, если есть исключения из этого правила!).Pooher писал(а):Другой вопрос, что у некоторых импульсников нет развязки с сетью, вот это может стать реальной проблемой.
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Yellow Tiger писал(а):Без сомнений, только нужно еще сказать, что электролит нужно зашунтировать керамикой нанофарад этак на сто
Ага, ВЧ помехи никто не отменял.
Yellow Tiger писал(а):К зарядкам от сотовых это, IMHO, не относится (не дай бог, если есть исключения из этого правила!)
Вот и остаётся только надеятся, что китайцы до этого ещё не дошли
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
- Yellow Tiger
- Сверлит текстолит когтями
- Сообщения: 1148
- Зарегистрирован: Вт июл 08, 2008 12:24:17