| Автор | Сообщение |
Kisovi4 Участник Сообщения: 373
|
Вот подописывал всё что задумал.Счас решил поиграться частотомер свой придумать,хотя он мне нафик уже не нужен..( собрал и нормально отладил этот http://www.cqham.ru/lcmeter3.htm доволен результатом )
Просто перевожу количество отсчитаных за еденицу времени импульсов из двоичной в двоично-десятичную и вывожу на ВС 1602. Вобщем больше 5,5 mHz Он нивкакую не хочет воспринимать,дальше просто глюки...Хотя приведений выше частотомер,до 30 mHz так точно без проблем...
Включен пока внутренний генератор на 8mHz без делителя.
Гдето непомню где прочитал,что у AVR эти таймер каунтеры не могут считать частоту выше частоты проца,типо он неуспевает эти импульсы обрабатывать...Както неочень в это тогда поверил,т.к. считал,что это чисто аппаратная часть и ей пофик частота проца и мы просто считываем то, что там насчитала последовательность делителей частоты на 2...
Вот хочу поинтерисоваться, у Мэтров сево дела так ли это?
И ещё вопрос нигде пока немогу найти пример програмы на asm преобразования трёх или четырёх байтных чисел в двоично десятичную...Мот ессть у кого?
Преобразование однобайтных сам додумался Уже успешно работает и отбражает на тройном семисегментике то ,что раньше на заводе ручки потенциометров показывали... Поставил в блок, где раньше десяток релюшек,с дофига контактами стояли и две двойные лампы 6Н8С , один PIC16F84A.В следующий блок ATtiny2313 впихнул  |
|
INT1 Участник Сообщения: 500
|
| Kisovi4 писал: | ..... И ещё вопрос нигде пока немогу найти пример програмы на asm преобразования трёх или четырёх байтных чисел в двоично десятичную...Мот ессть у кого?
.. |
Здесь смотрел? |
|
TheCoyoteKnight Новичок Сообщения: 8
|
У AVR пины стробируются тактовой частотой (можно представить как RS триггер, на С вход которого подается тактовая частота, а вход D которого присоединен к пину. Выход же триггера опрашивается через PINX.X). Это определяет то, что AVR не видит импульсы с периодом меньшим периода тактового генератора. У PIC-a там стоит просто счетчик с максимальной частотой счета около 80мгц. PIC16F84A использовать не надо - лучше PIC16F628 - он поновее и гораздо дешевле. |
|
Kisovi4 Участник Сообщения: 373
|
Судя по этому (достаточно вразумительному) описанию получаеться,что Timer/Counter1 невоспринимает импульсы ниже тактовой проца.Сдесь же всё наоборот.Воспринимает только ниже своей частоты. Я думаю если на то пошло,то именно наличие сброса этого RS триггера являеться индикатором того,что импульс был... А т.к. сбрасываеться этот триггер с частотой проца то сами понимаете,что больше этой частоты он не воспримет.
Здесь смотрел?
Ага именно оттуда bin16BCD5 - я использую в своей подобии частотомера. Тут преобразование 16-битного числа,тоесть двух 8-ми битных регистров. Мне надо преебразовать 3 регистра,можно и 4. |
|
o_l_e_g Предупреждений: 1 Сообщения: 4467
|
| Kisovi4 писал: |
И ещё вопрос нигде пока немогу найти пример програмы на asm преобразования трёх или четырёх байтных чисел в двоично десятичную...Мот ессть у кого?
|
делать на асме математические преобразования- дело не благодарное, на языках высокого уолвня( паскаль, Си) это делаеться на раз-два, например приведение типов компилер делает автоматом, а для всего остального есть библиотечные функции. А на асме, делать только вставки, требующие особого внимание по времени выполнения( формирование сигналов, обработка прерываний) |
|
Kisovi4 Участник Сообщения: 373
|
В пиках это и на асме делаеться на рас-два. Но там всё завязано на регистре косвенной адресации... Я бывало удачно обходился без него,с помощю записи и чтения оперативки,через содержимое регистровой пары... Но тут конешно,чтоб самому перевести напрячься прийдёться... |
|
INT1 Участник Сообщения: 500
|
|
Kisovi4 Участник Сообщения: 373
|
INT1, певая ссылка то,что надо
Потом разберусь с прогой детальней  |
|
INT1 Участник Сообщения: 500
|
А можно поизучать тему, погуглив что нибудь навроде "частотомер AVR". Но оверклок конечно, лучше не делать. |
|
pavel-pervomaysk Your editor Сообщения: 8071
|
Kisovi4, где прескаллер брал ? |
|
Kisovi4 Участник Сообщения: 373
|
Да нигде,сам о нём мечтаю. Тут в Минске у всех глаза вылазят,когда спрашиваю. Раньше когда на рынок ездил, за какой -нить фигнёй , так всгда со списком перескалеров. Доставал всех по очереди ,пока самого не достало...
Добавлено 09-03-2009 18:41
Если всё лишнее отсюда http://www.cqham.ru/uw3di_f.htm отбросить,то получаеться маленькая, компактная програмулька для преобразования четырёх ,восьмибитных регистров в двоично-десятичную,чтоб на дисплэи выводить. Тоесть FFFFFFFF=4294967295
Это типо можно четыре гига за одну секуду без перескалера мерять  |
|
Kisovi4 Участник Сообщения: 373
|
| TheCoyoteKnight писал: | | У AVR пины стробируются тактовой частотой (можно представить как RS триггер, на С вход которого подается тактовая частота, а вход D которого присоединен к пину. Выход же триггера опрашивается через PINX.X). Это определяет то, что AVR не видит импульсы с периодом меньшим периода тактового генератора. У PIC-a там стоит просто счетчик с максимальной частотой счета около 80мгц. PIC16F84A использовать не надо - лучше PIC16F628 - он поновее и гораздо дешевле. |
Все правельно! Это я что-то непроснувшись ступил,период с частотой спутал и в голове другую схемку прикинул... А вобще неплохоб былоб иметь возможность отключать это програмно... |
|
pavel-pervomaysk Your editor Сообщения: 8071
|
Kisovi4, сегодня мой товарищ надыбал в стареньких тюнерах от ТВ прескаллеры очень неплохие
U666BS
U813BS
Глянь дш на них , должны пойти , да и у ребят на разборе найти я думаю попроще будет . |
|
pavel-pervomaysk Your editor Сообщения: 8071
|
Сегодня порылись на работе U813BS можно найти в тюнере от телевизоров с шасии DTV2 . Выдернул еще парочку , самый раз чтоб что то собрать . |
|
Kisovi4 Участник Сообщения: 373
|
Cпасибо за информацию! Счас намного реальней найти стало  |
|
kolyay Гость 84.242.*.*
|
/**********************************************************************
* Преобразование числа (char) в десятичное
**********************************************************************/
void LCD_Dc (unsigned char tchis)
{
flag.Zerro = 0; // флаг для гашения незначаших нулей
temp = 0; // рабочая переменная
while(tchis >=100) {temp++;tchis - =100;} // вычитать по 100 и инкриминировать темп
if (!(temp | flag.Zerro)) // если темп или флаг равны 0, то вывести пробел
{
LCD_PutCh(0x20);
}
else
{
LCD_PutCh(temp+0x30);temp = 0; flag.Zerro = 1; // иначе вывести число и поднять флаг
}//
while(tchis >=10) {temp++;tchis - =10;} // следующий разряд....
if (!(temp | flag.Zerro))
{
LCD_PutCh(0x20);
}
else
{
LCD_PutCh(temp+0x30);temp = 0; flag.Zerro = 1;
}//
LCD_PutCh(tchis+0x30);
}
------------------------------------
Кстати число может быть и бОльшее. У меня вобще long изначально. Надо только сверху другие разряды нарастить и вычитать 1 000, 10 000, 100 000 и т.д... если наращивать снизу вверх.
ЖКИ знакосинтезирующий 16х2. По этому +30 к символу это для его таблицы. |
|