Страница 1 из 9

Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 12:02:10
yur4ik
Давно уже хочу все собрать в машину цифровую панель приборов, но никак руки не доходят. И вот кажется пришло это время, пока болею нужно что то же делать :) все собрал в кучу, появилось одно но!!! то что со спидометром и одометром я так и не определился. На сайте есть уже проект спидометр+одометр но там используется жки. по началу я его хотел собирать, сейчас что-то уже расхотел и решил что все будет только на семисегментных индикаторах. Отдельная схема спидометра у меня имеется, а вот одометра нету :( поэтому решил попробовать сделать его сам, в программировании понимаю пишу программы для ПК, но думаю перейти на мк большого труда не составит :). Одометр представляю таким к одному мк цепляется два семисегментных индикатора на первом будет суточный пробег 999,9 км а на втором общий 999999,9 км.
Теперь вопрос к профессионалам по мк:
1. Почитав про avr(остановился на avr, а не на pic) пришел к выводу что хватит с лихвой atmega8. так или нет?
2. Прерывания лучше всего отслеживать через внешнее прерывание?
Заранее спасибо.

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 12:52:15
vovik15
а почему именно авр а не пик?
да, вы правы лучьше сделать внешние прерывания ,и значения сохранять в энергонезависимую память. + кпопочка обнуления суточного пробега,и вторая кнопка "отматывание общих показаний" на случай продажи авто

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 12:54:14
yur4ik
vovik15 писал(а):а почему именно авр а не пик?
да, вы правы лучьше сделать внешние прерывания ,и значения сохранять в энергонезависимую память. + кпопочка обнуления суточного пробега,и вторая кнопка "отматывание общих показаний" на случай продажи авто
мне просто кажется, что на форуме больше всем авр нравиться, чем пик. Поэтому выбрал авр чтобы в случае чего могли помочь)))

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 12:56:01
ploop
1. Почитав про avr(остановился на avr, а не на pic) пришел к выводу что хватит с лихвой atmega8. так или нет?
Хватит.
2. Прерывания лучше всего отслеживать через внешнее прерывание?
Так точно.
Одометр представляю таким к одному мк цепляется два семисегментных индикатора на первом будет суточный пробег 999,9 км а на втором общий 999999,9 км.
А вот ног для индикации вам не хватит. Надо будет поставить сдвиговые регистры.

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 13:03:19
vovik15
ATMEGA 32 ног точно хватит. и без сдвиговых можно обойтись

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 13:08:09
ploop
Не советовал бы я. Во-первых, более дорогой, во-вторых сильная нагрузка на порты, в третьих - с этой работой кто-нибудь из тинек даже справится.
Сдвиговый регистр стоит менее 10 рублей.

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 13:40:57
yur4ik
ploop писал(а):Не советовал бы я. Во-первых, более дорогой, во-вторых сильная нагрузка на порты, в третьих - с этой работой кто-нибудь из тинек даже справится.
Сдвиговый регистр стоит менее 10 рублей.
так все таки что лучше сдвиговой регистр или взять с большим кол-во ног атмегу?
тогда сразу вопрос если ставить сдвиговой регистр то нужно ли как то его сопрягать с мк я имею ввиду программно)

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 13:55:04
ploop
Если программу будете писать сами, то сопряжение будет гораздо проще, чем лепить динамическую индикацию на столько каналов.
Сдвиговые регистры подключаются последовательно, загоняете туда данные и всё. Используются две ноги МК.

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 14:08:28
yur4ik
ploop писал(а):Если программу будете писать сами, то сопряжение будет гораздо проще, чем лепить динамическую индикацию на столько каналов.
Сдвиговые регистры подключаются последовательно, загоняете туда данные и всё. Используются две ноги МК.
а не могли бы по подробнее объяснить как работают сдвиговые регистры, пожалуйста? а то я понимаю что они так работают подавая на вход импульсы каждый регистр увеличивается на 1 и выход этого регистра находиться в 1 состоянии потом он сбрасывается в 0 состояние и все так продолжается
писать буду сам прошивку
а может у кого буть есть в proteus как работают сдвиговые регистры для более наглядной разборки?
тогда буду использовать регистры и тогда даже можно что буть поменьше чем атмега 8 взять например аттини можно будет? только какую ATtiny13 или ATtiny2313?
блин ща почитал про регистры в инете и не че не понял :( болезнь похоже на мне через чур плохо сказывается
мне все это очень напоминает счетчик к561ие8
читая больше про регистры у меня все большая каша становиться в голове :(

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 14:36:30
Fasterpast
Если никто не против, тоже влезу в тему, так как сам сейчас разрабатываю приборку цифровую. И топикстартеру думаю тоже мои размышления будут полезны:
Итак, необходимо, чтобы после того как питание пропало, показания одометра не обнулялись. Значит надо писать в еепром, а у него ограничение в 100000 циклов. Ну скажем делать запись каждый один км, но 100000км - не такой уж большой показатель для машины. Может через каждые 10 тысяч менять область, куда пишется число или даже чаще... Что скажите?

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

Но только в регистре кирпичики не вываливаются, а остаются, поэтому если вы положите сверху 9й кирпич, самый нижний уйдёт в небытье.

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 14:38:32
ploop
а не могли бы по подробнее объяснить как работают сдвиговые регистры, пожалуйста?
Могу на пальцах, но их несколько разновидностей, поэтому какой конкретно взять - надо отдельно обсудить.

Суть такая: имеется два входа и много (пусть 8: Q0-Q7) выходов. Один из входов тактовый, второй - для данных. При подаче импульса на тактовый вход, состояние входа для данных копируется на выход Q0, при этом что было на Q0 переносится на Q1, его прежнее состояние - на Q2 и т.д. Короче при тактовом импульсе весь ряд "сдвинется" на одну позицию.

Если нам надо получить на выходе 11001100 то алгоритм такой: выставляем "0" на входе данных, делаем 2 тактовых импульса, затем "1" опять два тактовых импульса ну и до конца.

Если 8 разрядов мало - соединяем последний выход (Q7) одного регистра со входом данных другого. Тактовые входы параллелим. Вот и всё, получили 16 разрядов, т.к. последний бит будет уходить в другой регистр и так же ползти согласно тактовым импульсам. Таким образом их можно наращивать сколь угодно много.

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 14:40:18
ploop
Итак, необходимо, чтобы после того как питание пропало, показания одометра не обнулялись. Значит надо писать в еепром, а у него ограничение в 100000 циклов.
Датчик на пропадание питания. По прерыванию с него писать. Любой электролит протянет МК необходимое время, пока тот спокойно запишет.

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 14:47:34
Fasterpast
ploop писал(а):
Итак, необходимо, чтобы после того как питание пропало, показания одометра не обнулялись. Значит надо писать в еепром, а у него ограничение в 100000 циклов.
Датчик на пропадание питания. По прерыванию с него писать. Любой электролит протянет МК необходимое время, пока тот спокойно запишет.
Да, спасибо, тоже как вариант... Можно в принципе и каждые 10км на всякий случай писать

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 14:48:29
yur4ik
ploop писал(а):
а не могли бы по подробнее объяснить как работают сдвиговые регистры, пожалуйста?
Могу на пальцах, но их несколько разновидностей, поэтому какой конкретно взять - надо отдельно обсудить.

Суть такая: имеется два входа и много (пусть 8: Q0-Q7) выходов. Один из входов тактовый, второй - для данных. При подаче импульса на тактовый вход, состояние входа для данных копируется на выход Q0, при этом что было на Q0 переносится на Q1, его прежнее состояние - на Q2 и т.д. Короче при тактовом импульсе весь ряд "сдвинется" на одну позицию.

Если нам надо получить на выходе 11001100 то алгоритм такой: выставляем "0" на входе данных, делаем 2 тактовых импульса, затем "1" опять два тактовых импульса ну и до конца.

Если 8 разрядов мало - соединяем последний выход (Q7) одного регистра со входом данных другого. Тактовые входы параллелим. Вот и всё, получили 16 разрядов, т.к. последний бит будет уходить в другой регистр и так же ползти согласно тактовым импульсам. Таким образом их можно наращивать сколь угодно много.
Спасибо, все оказывается легко и просто :)

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 18:13:08
yur4ik
в обучалке читал про авр и наткнулся про динамическую индикацию решил смоделировать в проусе все сделал как там прошивку записал опа на идикатор нечего не показывает :( думал ошибся проверил все, все норм заменил ат90с2313 на аттини2313 по индикатору начали бегать нули и все в чем дело в прикрепленном все показанно

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 18:21:06
ploop
по индикатору начали бегать нули и все в чем дело в прикрепленном все показанно
Просто дело в том, что динамическая индикация заработала :)

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 19:26:14
yur4ik
ploop писал(а):
по индикатору начали бегать нули и все в чем дело в прикрепленном все показанно
Просто дело в том, что динамическая индикация заработала :)
ну это я заметил но не пойму почему нули бегают только нули выводит вот с этой ссылки повторял http://radiokot.ru/start/mcu_fpga/avr/15/
там я как понял он вроде хочет вывести цифры 1234

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 19:45:33
yur4ik
люди извеняюсь :oops: я тут малость накосячил я не ту прошивку взял я засунул в этот проект прошивку от последней статьи :)) ща все работает только правда очень хорошо видно как циферки тухнут и опять загораються :) аа все нашел поставил в настройках проца CLKDIV8 поставил unprogrammed и повысел частоту установив CKSEL на 8MHz и все стало просто супер))))

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 22:01:02
s64
ploop писал(а):
Одометр представляю таким к одному мк цепляется два семисегментных индикатора на первом будет суточный пробег 999,9 км а на втором общий 999999,9 км.
А вот ног для индикации вам не хватит. Надо будет поставить сдвиговые регистры.
по моему ног хватает 11 символов + 8 сегментов = 19 ног. у 8-й меги - выдержка из ДШ
I/O and Packages
– 23 Programmable I/O Lines
– 28-pin PDIP, 32-lead TQFP, 28-pad QFN/MLF and 32-pad QFN/MLF

Re: Цифровой одометр на Atmega8

Добавлено: Пн фев 07, 2011 22:29:10
ploop
В принципе да, впритык. Но лишнюю кнопку/светодиод не воткнёшь. При том еще счетные входы... я бы не стал так геморриться :)