Мелкие вопросы по МК и ПЛИС.
- Реклама
- -=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: Вопросец!
Да. Советую скачать CVAVR для использования его мастера кода как помошник для WinAVR и PROTEUS-=MindHunteR=- писал(а): 3) могу я написать код и выложить его сюда для оценки экспертов?
и выкладывать тут архив с проектами.
Раз вы решили разобраться то вам наверно разумно прочитать "Устройство микроконтроллеров AVR"-=MindHunteR=- писал(а): 4) я не совсем понима как читать и писать в порты МК на Си.
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: Продолжение по теме...
1) все верно.-=MindHunteR=- писал(а):Поставил значится CVAVR и ПРОТЕУС...
Я понимаю, вопросы глупые, и тем не менее, я прошу вашей помощи.
Спасибо огромное!
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


