реклама на сайте
подробности

 
 
> Счетчик импульсов с выводом на 7-ми сегментный индикатор, Помогите, пожалуйста, создать схему
shadow86
сообщение Dec 6 2011, 20:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Делаю счетчик Гейгера на датчике СБМ-20. Источник 400В получился, им я доволен. Теперь стоит задача вывода данных по уровню радиации. Думал это осуществить на микросхемах к176ие4 и светодиодных индикаторах. Но пришлось отказаться от этой идеи - хочу, чтоб во время счетного периода выводилось последнее посчитанное число импульсов, а не 1, 2, 3, .. и т.д.
Правильны ли рассуждения: если известно, что чувствительность СБМ-20 78 имп/мкР(по кобальту-60), то если принять за время измерения 1/78 часа, то количество импульсов со счетчика будет численно равно уровню радиации в мкР/ч. 3600/78=46,15 секунд ?
Тоесть, я хочу, чтоб 46 секунд он считал импульсы, а потом выдал результат и показывал мне его следующие 46 секунд, потом обновил показания и светил ими следующие 46 секунд и т.д.
Для реализации подобного эта микросхема не годится, правда? (Если есть варианты на советских микросхемах, подкиньте идею, пожалуйста!)
И еще одна идея, как с минимальным набором микросхем (генераторов, делителей частоты и т.п.) добиться появления импульса через 46 секунд?
С МК пока не работаю - нет программатора ((. С ним дело было бы веселее, но прошу высказаться и в этом направлении, в частности использования МК ATtiny26, для рееализации этой задачи.
Заранее благодарен всем принявшим участие в обсуждении!

Go to the top of the page
 
+Quote Post
5 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 72)
air77
сообщение Dec 6 2011, 22:44
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 482



Цитата(shadow86 @ Dec 7 2011, 00:11) *
количество импульсов со счетчика будет численно равно уровню радиации в мкР/ч. 3600/78=46,15 секунд ?

Правильно
Цитата(shadow86 @ Dec 7 2011, 00:11) *
С МК пока не работаю - нет программатора

Это - главная ошибка. ATtiny26, да и любой похожий решит все проблемы, в том числе накачку 400вольт и всяческий пересчет, том более, что нельзя тупо считать импульсы за 46сек, нужно вводить программный фильтр для сглаживания показаний, без него цифры будут скакать. Программатор делается из резисторов и проводов от LPT. А жесткую логику в этом случае нужно забыть.
Go to the top of the page
 
+Quote Post
VCO
сообщение Dec 7 2011, 00:53
Сообщение #3


Voltage Control Output
******

Группа: Свой
Сообщений: 4 598
Регистрация: 21-07-09
Из: Kursk
Пользователь №: 51 436



Ещё эффективнее было бы применить программируемую логику: аналогичный JTAG-программатор, MAX от Альтеры или XC95 от Ксайлинкс и фришный софт от них же. Как бонус - заметный выигрыш по точности и быстродействию + полная интеграция драйвера семисегментного индикатора в тот же самый кристалл, где будет находиться АЛУ.


--------------------
Слово - не воробей, вылетит - не пощадит
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 05:44
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Спасибо, Air77!
так, если использовать МК, то я могу применить 3-х значный индикатор с динамическим управлением. А что Вы говорите насчет програмной фильтрации? Я на осциллографе наблюдал импульсы после СБМ и засекал их количество по секундомеру: за 46 секунд получалось 17, 16, 17, 17, 16, 18, 17.. Вы имеету ввиду осреднять что-ли?
Скиньте, пожалуйста ссылку на какой нибудь простой программатор. И проще его сделать через COM или LPT все-же? у меня есть провод переходник USB->COM смогу ли я через него подключаться как через COM?
А программируемая логика - о таком я еще не слышал. Спасибо, YIG, за новое для меня направление! Почитаю, прикину. )
Go to the top of the page
 
+Quote Post
Tanya
сообщение Dec 7 2011, 06:35
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(air77 @ Dec 7 2011, 02:44) *
нельзя тупо считать импульсы за 46сек, нужно вводить программный фильтр для сглаживания показаний, без него цифры будут скакать.

Может быть лучше просто поставить микроамперметр - фильтр и микромощный индикатор в одном флаконе. Можно сопроводить звуковым приветствием каждую пришедшую частицу. Тогда и в полной темноте...
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 08:57
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



я думал над стрелочным индиктором, но выбор был сделан в пользу цыфровой индикации, из-за большей наглядности + планирую, как Вы Tanya и предложили, каждую частицу встречать вспышкой отдельно выведенного светодиода и звуровым сопровождением. ))
Go to the top of the page
 
+Quote Post
alexvu
сообщение Dec 7 2011, 09:33
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 172
Регистрация: 14-11-11
Из: Москва
Пользователь №: 68 299



Программной фильтрации не требуется при времени 46 с, так работают большинство счетчиков.
И осваивайте МК, это не сложно.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 09:52
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



подскажите, пожалуйста простенькую схему программатора через СОМ-порт, желательно. И будет ли работать такой программатор через USB->COM переходник?
вот наткнулся на простую схему программатора
Прикрепленное изображение
, будет ли он работать через переходник?

Сообщение отредактировал shadow86 - Dec 7 2011, 09:58
Go to the top of the page
 
+Quote Post
Tanya
сообщение Dec 7 2011, 09:58
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(shadow86 @ Dec 7 2011, 12:57) *
но выбор был сделан в пользу цыфровой индикации,

А зря Вы батарейки будете зря расходовать... Стрелочный прибор... уже прошит... запрограммирован на скользящее среднее... Могли бы даже, если уж так хочется, в двоичном коде отдельные светодиоды зажигать...
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 10:12
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Спасибо, Tanya, но душа просит цыфр )).
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 7 2011, 10:15
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(YIG @ Dec 7 2011, 04:53) *
Ещё эффективнее было бы применить программируемую логику: аналогичный JTAG-программатор, MAX от Альтеры или XC95 от Ксайлинкс и фришный софт от них же. Как бонус - заметный выигрыш по точности и быстродействию + полная интеграция драйвера семисегментного индикатора в тот же самый кристалл, где будет находиться АЛУ.

"Выигрыш по точности" - это в сравнении с чем ? Дальше - стоимость кристалла. И - потребление. К тому же у микроконтроллера типично есть встроенный ADC и PWM, и реализовать стабилизированный источник высокого напряжения - раз плюнуть.

Цитата(Tanya @ Dec 7 2011, 13:58) *
А зря Вы батарейки будете зря расходовать... Стрелочный прибор... уже прошит... запрограммирован на скользящее среднее...

Но для естественного фона слишком малая постоянная времени. А что до экономии питания - сегментный LCD сожрет единицы-десятки uA, это гораздо меньше, чем преобразователь высокого.
Go to the top of the page
 
+Quote Post
Canis Dirus
сообщение Dec 7 2011, 10:16
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 7-01-09
Из: Нефтеюганск
Пользователь №: 42 967



Цитата(shadow86 @ Dec 7 2011, 15:52) *
подскажите, пожалуйста простенькую схему программатора через СОМ-порт, желательно.

Для паралельного (LPT) подойдёт? http://real.kiev.ua/old/avreal/ru/adapters

Цитата(shadow86 @ Dec 7 2011, 15:52) *
И будет ли работать такой программатор через USB->COM переходник?

Краткий ответ: нет.

P.S. Даже если переходник сделан на микросхеме поддерживающей т.н. «bit-bang mode», то всё-равно скорость будет всё-равно настолько низкой, что единственное осмысленное его применение — прошивка собственного микроконтроллера программатора.


--------------------
С уважением, Алексей Шапошников.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 10:36
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



эти схемы сложнее в повторении (. а приведенная мной схема даст возможность программировать ATtiny26 через реальный COM? и для того, чтоб подключить микроконтроллер к схеме, мне нужно его вставить в соответствующую колодку и включить ему питание VCC=+5В. я правильно понимаю?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Dec 7 2011, 10:42
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(rx3apf @ Dec 7 2011, 14:15) *
Но для естественного фона слишком малая постоянная времени. А что до экономии питания - сегментный LCD сожрет единицы-десятки uA, это гораздо меньше, чем преобразователь высокого.

Ну еще можно конденсатор добавить... А про LCD ТС ничего не говорил. Он, наверное хочет в темноте...
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 11:04
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Вы совершенно правы, Tanya, индикация должна хорошо читаться и при дневном свете и в темноте, а яркость (и как следствие, потребление тока индикатором) будет меняться ).
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 7 2011, 11:11
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(shadow86 @ Dec 7 2011, 15:04) *
Вы совершенно правы, Tanya, индикация должна хорошо читаться и при дневном свете и в темноте, а яркость (и как следствие, потребление тока индикатором) будет меняться ).

Подсветка сожрет много, вряд ли это имеет смысл для портативного прибора. Мелкие LED тоже жрут, а при прямом солнечном свете, наоборот, будут читаться плохо. Дело хозяйское, конечно, но я бы поставил сегментный LCD без подсветки...
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 11:28
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Есть возможность купить TIC71, Вы такой наподобие имеете ввиду? можно и с этим поэкспериментировать ))
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 7 2011, 11:38
Сообщение #18


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(shadow86 @ Dec 7 2011, 15:28) *
Есть возможность купить TIC71, Вы такой наподобие имеете ввиду? можно и с этим поэкспериментировать ))

Ну типа да. Мелковат, правда. Зато жрет около 1 uA (за счет внешней регенерации - но ее придется делать). Да и вряд ли нужно столько разрядов. Может быть, стоило бы поглядеть в сторону микроконтроллеров с контроллером LCD (и у Atmel такие есть, много дешевых у Microchip, или что-то из MSP430). И к такому - стекляшку на три-четыре знакоместа. А, есть еще сделанный по нашему заказу TIC279.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 13:54
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Аааааа!!! Собрал свою схему и Uniprof мне показала наличие моего МК и его содержимое!!! ))))))))
Теперь я непобедЮм!!! 08.gif
Столько эмоций испытал, сродни тому, как запустил свой первый УНЧ ))))).
Так теперь можно приниматься за реализацию задуманного!
Уверен, будет еще оооочень большая куча вопросов. Спасибо всем за советы! Теперь только тема по-настоящему открывается!

Сообщение отредактировал shadow86 - Dec 7 2011, 13:54
Go to the top of the page
 
+Quote Post
VCO
сообщение Dec 7 2011, 16:37
Сообщение #20


Voltage Control Output
******

Группа: Свой
Сообщений: 4 598
Регистрация: 21-07-09
Из: Kursk
Пользователь №: 51 436



Цитата(rx3apf @ Dec 7 2011, 13:15) *
"Выигрыш по точности" - это в сравнении с чем ?

Это в сравнении со стандартной логикой
Цитата
Дальше - стоимость кристалла.

Теперь для CPLD - весьма невысока. Я бы даже сказал - соразмерна c МК
Цитата
И - потребление.

Полностью зависит от схемы проекта. Если часы вытащить наружу и применить КулРаннер, то соразмерно с МК+ДрайверЖКИ.
Цитата
К тому же у микроконтроллера типично есть встроенный ADC и PWM, и реализовать стабилизированный источник высокого напряжения - раз плюнуть.

Согласен, но тут АЦП и БП уже не нужны...

...Ну и потом, топикстартер не указал требований по энергосбережению и цене в начале теме, поэтому и предложил этот вариант. Теперь согласен, что МК - много актуальнее.


--------------------
Слово - не воробей, вылетит - не пощадит
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 18:49
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Рас уж буду применять МК, то накачку датчика также попробую выполнить на нем )). только пока еще совсем-совсем не представляю как это осуществить. Понимаю, что с помощью МК могу управлять скважностью импульсов через повышающий трансформатор, но не представляю как осуществить контроль за выходным напряжением, чтоб МК начал изменять эту самую скважность ((.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 7 2011, 19:13
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(shadow86 @ Dec 7 2011, 22:49) *
Рас уж буду применять МК, то накачку датчика также попробую выполнить на нем )). только пока еще совсем-совсем не представляю как это осуществить. Понимаю, что с помощью МК могу управлять скважностью импульсов через повышающий трансформатор, но не представляю как осуществить контроль за выходным напряжением, чтоб МК начал изменять эту самую скважность ((.

Делитель на вход ADC.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 7 2011, 19:32
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(rx3apf @ Dec 7 2011, 23:13) *
Делитель на вход ADC.

Ох , не надо ему пока этого . Тем более
Цитата
Источник 400В получился, им я доволен


Сначала сделать вывод , а уж потом убрать источник и подключать ADC, таймер и прерывания


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 19:51
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



ATtiny26 - его же можно перепрограммировать много раз? не один и на всю жизнь? И когда я закончу его прошивать, мне нужно будет лишь отключить +5В и можно выковыривать микросхему из гнезда? или нужно еще и удлиннительный шнур вынуть из COM? Вот эти вопросы меня всегда волновали, а ответ на них Google мне так и не дал (. Поясните, пожалуйста, начинающему ).
P.S.: а втыкать МК в гнездо программатора можно, если программатор подключен к COM порту, или сначала вынуть из COM, а потом втыкать МК?

Сообщение отредактировал shadow86 - Dec 7 2011, 19:53
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Dec 7 2011, 20:18
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
не один и на всю жизнь?
Это как захотите

Цитата
мне нужно будет лишь отключить +5В и можно выковыривать микросхему из гнезда?
или нужно еще и удлиннительный шнур вынуть из COM?

Лучше всего всегда полностью "обесточить" MC , а потом проводить с ним "втыкание - вытыкание"


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 7 2011, 21:11
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Спасибо! Я так и предпологал, но теперь знаю точно )
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 8 2011, 08:26
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



ААААА! У меня сейчас взорвется мосК!
Объясните дураку:
Пример 4. Вывод цифр от 0 до 99.
Преобразование двоичных чисел в двоично-десятичные (BCD)
________________________________________
#include <ioavr.h>
#include <intrinsics.h>

unsigned char number[] =
{
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
};

//числа для вывода на индикатор
volatile unsigned char data1 = 0;
volatile unsigned char data2 = 0;

//программный счетчик секунд
unsigned char counterProg = 0;

int main( void )
{
//порт, к которому подкл. сегменты
PORTB = 0xff;
DDRB = 0xff;

//порт, к которому подкл. катод
PORTD = 0;
DDRD |= (1<<1)|(1<<0);

//инициализация таймера Т0
TIMSK = (1<<TOIE0);
TCCR0 = (1<<CS02)|(0<<CS01)|(1<<CS00);
TCNT0 = 0xb2;

__enable_interrupt();
while(1){
//программный счетчик секунд
counterProg++;
if (counterProg == 100) counterProg = 0;
data1 = counterProg % 10;
data2 = counterProg/10;
__delay_cycles(8000000);
}
return 0;
}

//прерывания таймера Т0 - вывод на индикатор
#pragma vector = TIMER0_OVF_vect
__interrupt void Timer0_Ovf(void)
{
static unsigned char count = 0;
TCNT0 = 0xb2;

//гасим оба разряда
PORTD &= ~((1<<1)|(1<<0));

//выводим код цифры в порт
//и зажигаем следующий разряд
if (count == 0) {
PORTB = number[data2];
PORTD |= (1<<1);
}
if (count == 1) {
PORTB = number[data1];
PORTD |= (1<<0);
}

count++;
if (count == 2) count = 0;
}

Никак не пойму:
int main( void )
{
//порт, к которому подкл. сегменты
PORTB = 0xff;
DDRB = 0xff - это тут все порта задействуются или один порт В? как тогда указать, чтобы включились нужные мне 7 портов под сегменты? и как указать номера выводов микросхемы, которые должны соответствовать этим портам (сегментам).
И что это значит? :
unsigned char number[] =
{
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
};
это какая-то встроенная функция для разбивания цыфр на сегменты? применима ли она к ATtiny26 ?

Сообщение отредактировал shadow86 - Dec 8 2011, 08:28
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Dec 8 2011, 09:32
Сообщение #28


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(shadow86 @ Dec 8 2011, 12:26) *
//порт, к которому подкл. сегменты
PORTB = 0xff;
DDRB = 0xff - это тут все порта задействуются или один порт В?

Порт - это типично 8 (или меньше) линий ввода-вывода. В данном случае восемь линий настраиваются на вывод.

Цитата
И что это значит? :
unsigned char number[] =
{
0x3f, //0
0x06, //1
....

Таблица преобразования десятичной цифры в ее "семисегментное" представление. Делается, исходя из необходимого соответствия бита порта и сегмента.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 8 2011, 21:01
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Насчет порта и входов-выводов понял и осознал, а вот как указать на какой ножке порта какой сегмент выводится будет? и
Цитата
Таблица преобразования десятичной цифры в ее "семисегментное" представление. Делается, исходя из необходимого соответствия бита порта и сегмента.
- эта таблица одна для всех МК? Подойдет ли она мне для ATtiny26?

Сообщение отредактировал shadow86 - Dec 8 2011, 21:02
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 01:38
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Это - массив байтов, каждый байт содержит 7 значащих бит (начиная с младшего - судя по всему, старший не используется. Его обычно на точку сажают), в которых единица "зажигает" соответствующий сегмент (хотя странно... обычно катод к земле коммутируют... или я так привык? sm.gif )
соответственно, команда
Код
PORTB = number[data2];

запишет в порт значение элемента массива number с индексом data2
нумерация элементов с нуля


Цитата(shadow86 @ Dec 9 2011, 01:01) *
эта таблица одна для всех МК? Подойдет ли она мне для ATtiny26?

она подойдет для любого biggrin.gif
А там уж как ножки порта B подключите sm.gif разберитесь, какой бит за какой сегмент отвечает и все станет просто
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 9 2011, 05:23
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Понял! У ATtiny26 есть два порта ввода-вывода данных, которые подключеня к своим 8-ми ножкам микросхемы, от меня требуется найти соответствее сегментов индикатора ножкам МК. Эта программа на 2 цыфры (только не пойму, где в коде ее это указано), а чтоб добавить еще один розряд индикации, что мне и куда нужно дописать?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 10:00
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



это ДИНАМИЧЕСКАЯ индикация. В один момент времени горит ОДИН индикатор из двух. Но, так как это происходит с частотой около 1 КГц, глаз не успевает это увидеть.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 9 2011, 10:33
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



я понимаю, что такое динамическая индикация. мне не понятно где указано, чтоб МК зажигал сначала первую цыфру, потом ее тушил и включал вторую, массу подключал к индикатору, чтоли
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 9 2011, 11:14
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(shadow86 @ Dec 9 2011, 14:33) *
я понимаю, что такое динамическая индикация. мне не понятно где указано, чтоб МК зажигал сначала первую цыфру, потом ее тушил и включал вторую, массу подключал к индикатору, чтоли


ну так если индикация динамическая, рулит этим таймер, значит где? Правильно, в обработчике прерывания таймера
Код
__interrupt void Timer0_Ovf(void)

на выходы ставятся NPN коллектором на общий катод и эмиттером на землю
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 11 2011, 22:13
Сообщение #35


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



так и не смог понять ((. скиньте пожалуйста текст программы для управления 3 знаковым 7-ми сегментным индикатором. Если это военная тайна, то скажите хотябы, как заставить МК переключаться между цыфрами? Высказывание:
Цитата
__interrupt void Timer0_Ovf(void)
- мне ниочем не сказало (((
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 12 2011, 06:38
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(shadow86 @ Dec 12 2011, 02:13) *
так и не смог понять ((. скиньте пожалуйста текст программы для управления 3 знаковым 7-ми сегментным индикатором. Если это военная тайна, то скажите хотябы, как заставить МК переключаться между цыфрами? Высказывание: - мне ниочем не сказало (((

а почитать свою же программу и найти в ней эту строчку, посмотреть тело самой функции слабо?
учите С
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 12 2011, 08:31
Сообщение #37


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Это хороший совет - учить С, но как-то плохо он мне дается после Паскаля, тут одно и то же можно написать 10 способами, при этом одно на другое аж никак не похоже будет. Нахожу примеры похожие между собой по функционалу, а написанное совсем разное ((. Как то не по-людски в нём все! Ладно, верю, что разгадка где-то рядом.
О! Объясните, пожалуйста, русским языком:
DDRA = 0xFF;
PORTA = 0;
я понимаю, что написанное активизирует порт А для вывода, тоесть все его ножки работают как выходы, а как Вы бы написали если бы захотели например 2 ножки сделать выходами, 2 входами, потом еще 3 выходами и 1 входом, или так нельзя поступать с выходами одного порта?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 12 2011, 09:08
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(shadow86 @ Dec 12 2011, 12:31) *
или так нельзя поступать с выходами одного порта?

документацию на контроллер в руки и читать sm.gif


Цитата(shadow86 @ Dec 12 2011, 12:31) *
Это хороший совет - учить С, но как-то плохо он мне дается после Паскаля

нужно. Под контроллеры все пишется на С

Цитата(shadow86 @ Dec 12 2011, 12:31) *
О! Объясните, пожалуйста, русским языком:
DDRA = 0xFF;
PORTA = 0;
я понимаю, что написанное активизирует порт А для вывода, тоесть все его ножки работают как выходы, а как Вы бы написали если бы захотели например 2 ножки сделать выходами, 2 входами, потом еще 3 выходами и 1 входом,

очень просто. Нужно соответствующие биты выставить в 1

DDRA = 0x80 | 0x40 | 0x0E;

В результате компилятор вычислит значение 0xCE и подставит в выражение. В двоичном виде это будет (11001110), что и требовалось. Но так неудобочитаемо
Лучше будет объявить значения битов (все равно где-то понадобится)

bits.h
Код
#ifndef __BITS_H__
#define __BITS_H__
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x03
#define BIT3 0x04
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
#endif


а потом просто подключать эти объявления где нужно:

Код
#include "bits.h"

DDRA = BIT7 | BIT6 | BIT3 | BIT2 | BIT1;
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 12 2011, 19:25
Сообщение #39


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



пожалуй, Ваш русский я тоже не понимаю ((. Объясните как полному идиоту: откуда мне взять эти
Цитата
соответствующие биты
, чтоб
Цитата
выставить в 1
.
Теперь совсем совсем запутался.. эти биты - это адреса ножек микросхемы? которые мне нужно сделать выводами данных..?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 12 2011, 19:40
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(shadow86 @ Dec 12 2011, 23:25) *

мдя...
даже в этой ветке есть 90% ответов как минимум... разбирайтесь
последний пост... убил

Go to the top of the page
 
+Quote Post
XVR
сообщение Dec 13 2011, 08:45
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(shadow86 @ Dec 12 2011, 23:25) *
пожалуй, Ваш русский я тоже не понимаю ((. Объясните как полному идиоту: откуда мне взять эти , чтоб .
Теперь совсем совсем запутался.. эти биты - это адреса ножек микросхемы? которые мне нужно сделать выводами данных..?

Мдя, вам не с С разбираться нужно, а с микроконтроллерами 1111493779.gif 'Биты' оттуда идут, а не от языка программирования.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 13 2011, 14:05
Сообщение #42


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



использовал мозговой штурм и разобрался немного с битами. прошу прощения за тупорылые вопросы.. blush.gif
запись
Цитата
#include "bits.h"
DDRA = BIT7 | BIT6 | BIT3 | BIT2 | BIT1;

включает нужные мне ножки как выходы, а остальные ножки порта автоматически будут входами? мне этого нигде объявлять не нужно?
или нужно написать:
"bits.h"
DDRA = BIT7 | BIT6 | BIT3 | BIT2 | BIT1;
PINA = BIT5 | BIT4 | BIT0;
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 14 2011, 15:47
Сообщение #43


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



подскажите, пожалуйста, в каком виде эта запись 0x0C как ее понимать, переводить в десятичную или хотябы двоичную форму?
Go to the top of the page
 
+Quote Post
XVR
сообщение Dec 14 2011, 15:59
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(shadow86 @ Dec 14 2011, 19:47) *
подскажите, пожалуйста, в каком виде эта запись 0x0C как ее понимать, переводить в десятичную или хотябы двоичную форму?
Это шестнадцатиричная запись. В двоичном виде это будет 0000_1100 (подчеркивание добавил для наглядности)

Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 14 2011, 19:07
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Спасибо большое! Двигаюсь дальше..
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 16 2011, 20:46
Сообщение #46


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



И снова здравствуйте, уважаемые программисты!
в неравном бою с CodeVisionAVR побеждает машина! Бился над ним 3 дня, вцелом, достиг некоторых успехов (это мое личное мнение), но голова уже трещит.. Помогите запустить этот счетчик, чтоб его.. В приложенном файле текст программы, которую удалось сложить из кусков разных программ и которая благополучно не работает (((((((((. Как его перетасовать, чтоб входные импульсы в ножки РА1 считасись МК и выводились на 3 розрядный 7 сегментный индикатор??? help.gif

Вот последняя более-менее подходящая наработка Прикрепленный файл  M4.rar ( 899 байт ) Кол-во скачиваний: 88
тут происходит индикация, но вторая и третья цифры при выводе одинаковы ((( помогите это исправить help.gif

Сообщение отредактировал shadow86 - Dec 16 2011, 22:09
Go to the top of the page
 
+Quote Post
XVR
сообщение Dec 17 2011, 13:59
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



У вас неправильно вычисляется средняя цифра (в процедуре IND_Conv). Ошибка в строке 48
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 17 2011, 20:34
Сообщение #48


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



вот исправил недочет, на который Вы мне указали, но все равно выводит не корректно (((((. Подскажите, пожалуйста, где бок?

Сообщение отредактировал shadow86 - Dec 18 2011, 07:25
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 18 2011, 07:28
Сообщение #49


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Спасибо всем за участие! Разобрался! Теперь счетчик выводит корректно. Добавить еще немного штрихов и можно запускать живую модель. )))
Извиняюсь за глупые вопросы и благодарен за помощь ))
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 18 2011, 18:45
Сообщение #50


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Уважаемые программисты, подскажите, пожалуйста, где мне (и что) добавить, чтоб программа считала импульсы в течение 46с и выдавала на индикатор последнее посчитанное значение, тоесть спустя 46с показало первый раз, а потом через 46с обновило показание и так далее.
вот текст моей программы: Прикрепленный файл  M4.rar ( 787 байт ) Кол-во скачиваний: 84
Go to the top of the page
 
+Quote Post
XVR
сообщение Dec 18 2011, 19:21
Сообщение #51


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(shadow86 @ Dec 18 2011, 22:45) *
Уважаемые программисты, подскажите, пожалуйста, где мне (и что) добавить, чтоб программа считала импульсы в течение 46с и выдавала на индикатор последнее посчитанное значение,

Для этого вам надо отсчитать 46 секунд. Единственное место у вас, где есть какая то известная периодичность - это динамическое сканирование индикатора (прерывание от таймера), вот в нем и отсчитывайте.
Как насчитаете - копируйте накопленное значение счетчика в переменную, из которой и будете выводить на индикаторы, а счетчик сбрасывайте
Go to the top of the page
 
+Quote Post
Vladex
сообщение Dec 19 2011, 11:03
Сообщение #52


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 24-01-06
Из: Ярославль
Пользователь №: 13 558



Цитата(shadow86 @ Dec 7 2011, 00:11) *
чтоб во время счетного периода выводилось последнее посчитанное число импульсов, а не 1, 2, 3, .. и т.д.

буферизуй индикацию регистрами-защелками (ИР24 или им подобными)по окончанию счета, и не надо микроконтроллера будет


--------------------
Разработка электронных устройств. Радиомонтаж. Ремонт оборудования в Ярославле i-link@bk.ru
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 23 2011, 13:31
Сообщение #53


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Попробывал соеденить один из выходов-катодов с еще одной ножкой-входом, чтоб считать изменения уровня на этой ножке и от него отталкиваясь, получить 46с задержки, но что-то опять не получается ((
. . .
PORTA.3 = 0;
DDRA.3 = 0;
PORTA.4 = 0;
DDRA.4 = 0;
ACSR = 0x80;
#asm("sei");
while(1){
while (PINA.3 == 1) {counterProg++;} // регистрирую изменение уровня на входе РА3 (соединенного с одним из зажигаемых катодов индикатора)

while (PINA.4 == 1){} //считаю импульсы
{imp ++;}
while (PINA.4 == 0){}
if (imp >= 1000) {
imp -= 1000;
}
if (counterProg == 10) { //обнуляю количество импульсов
imp = 0;
counterProg = 0;}
IND_Conv(imp); //вывожу количество имп. за счетный период на индикатор

}
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 23 2011, 13:52
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Да зачем такие извращения?
Один таймер в счетном режиме, на него заводим то, что нужно считать
Второй отсчитывает время. Прошло 46 сек - читаем состояние вервого счетного таймера и обнуляем его
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 23 2011, 14:05
Сообщение #55


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



вот вам легко говорить... у меня 0-й работает на динамическую индикацию. когда пытаюсь запустить 1-й, то фигня какая-то получается.. либо индикация отказывает, либо счет останавливается.. не могу победить пока что использование 2 счетчиков-таймеров одновременно (((
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 23 2011, 14:22
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(shadow86 @ Dec 23 2011, 18:05) *
вот вам легко говорить... у меня 0-й работает на динамическую индикацию. когда пытаюсь запустить 1-й, то фигня какая-то получается.. либо индикация отказывает, либо счет останавливается.. не могу победить пока что использование 2 счетчиков-таймеров одновременно (((

А вот тут нужно смотреть, что там наваяно
Как приоритеты расставлены, как что...

А зачем использовать два таймера для временных интервалов? Тот, который динамическую индикацию осуществляет, вполне посчитает и 46сек...
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 23 2011, 14:37
Сообщение #57


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



а как это должно выглядеть? у меня вынесена отдельная функция на динамику:
void IND_Update(void)
{
static unsigned char count = 0;

PORT_K &= ~((1<<KAT1)|(1<<KAT2)|(1<<KAT3));
PORT_IND = data[count];
{
if (count == 0) {
PORT_K |= (0<<KAT1);
PORT_K |= (1<<KAT2);
PORT_K |= (1<<KAT3);
}
if (count == 1){
PORT_K |= (0<<KAT2);
PORT_K |= (1<<KAT1);
PORT_K |= (1<<KAT3);
}
if (count == 2) {
PORT_K |= (0<<KAT3);
PORT_K |= (1<<KAT1);
PORT_K |= (1<<KAT2);
}
count++;
if (count == 3) {count = 0;}
}
}
допустим, я могу повышать еще некоторую переменную на ряду с count, а как потом мне ее значение вынести в тело основной программы?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 23 2011, 15:14
Сообщение #58


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



да покажите уже полностью, что там наваяли
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 24 2011, 08:40
Сообщение #59


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Прикрепленный файл  M4.rar ( 953 байт ) Кол-во скачиваний: 71
Вот моя программа
Она считает импульсы на РА3 и выводит их количество на 3-х знаковый 7-ми сегментный индикатор.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Dec 27 2011, 09:28
Сообщение #60


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Вот попробывал добавить функцию на счет некоторой переменной.. ПОМОГИТЕ ПОЖАЛУЙСТА!!! У меня уже фантазия иссякла

#include <tiny26.h>

unsigned char number[] =
{
0x3f, //0
0x06, //1
0x5b, //2
0x4f, //3
0x66, //4
0x6d, //5
0x7d, //6
0x07, //7
0x7f, //8
0x6f //9
};

#define PORT_IND PORTB
#define DDR_IND DDRB
#define PORT_K PORTA
#define DDR_K DDRA
#define KAT1 0
#define KAT2 1
#define KAT3 2

volatile unsigned char data[3];
static unsigned int time;
void IND_Init(void)
{
//порт, к которому подкл. сегменты
PORT_IND = 0xff;
DDR_IND = 0xff;

//порт, к которому подкл. катод
PORT_K &= ~((1<<KAT1)|(1<<KAT2)|(1<<KAT3));
DDR_K |= ((1<<KAT1)|(1<<KAT2)|(1<<KAT3));

data[0] = 0;
data[1] = 0;
data[2] = 0;
}

void IND_Conv(unsigned int value)
{
unsigned char tmp0, tmp1, tmp2;
tmp0=tmp1=0;
while (value >= 100)
{ value -= 100;
tmp0++;
}
while (value >= 10)
{ value -= 10;
tmp1++;
}
tmp2 = value;

data[0]=number[tmp0]; //вывод сотен
data[1]=number[tmp1]; //вывод десятков
data[2]=number[tmp2]; //вывод единиц
}

void IND_Update(void)
{
static unsigned char count = 0;
PORT_K &= ~((1<<KAT1)|(1<<KAT2)|(1<<KAT3));
PORT_IND = data[count];
{
if (count == 0) {
PORT_K |= (0<<KAT1);
PORT_K |= (1<<KAT2);
PORT_K |= (1<<KAT3);
}
if (count == 1){
PORT_K |= (0<<KAT2);
PORT_K |= (1<<KAT1);
PORT_K |= (1<<KAT3);
}
if (count == 2) {
PORT_K |= (0<<KAT3);
PORT_K |= (1<<KAT1);
PORT_K |= (1<<KAT2);
}
count++;
if (count == 3) {count = 0;}
}
}

int Wait (void)
{
time++;
return time;
}
unsigned int imp = 0;
void main( void )
{
IND_Init();

//инициализация таймера Т0
//частота прерываний 50Гц при частоте кварца 4МГц
TIMSK = (1<<TOIE0);
TCCR0 = (1<<CS02)|(0<<CS01)|(1<<CS00);
TCNT0 = 0xb2;
PORTA.3 = 1;
DDRA.3 = 0;

TCCR1A = (1<<CS13)|(0<<CS12)|(0<<CS11)|(1<<CS10);
TCNT1 = 0x00;
#asm("sei");
while(1){
while (PINA.3 == 1){}
{imp ++;}
while (PINA.3 == 0){}
if (imp >= 1000) {
imp -= 1000;
}

IND_Conv(imp);
if (Wait()>=10){
time=0;
imp=0;}
}
}

//прерывания таймера Т0 - вывод на индикатор
interrupt [TIM0_OVF] void Timer0Ovf(void)
{
TCNT0 = 0xb2;
IND_Update();
Wait();
}
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 27 2011, 09:59
Сообщение #61


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Поскольку у Вас таймер "тикает" с частотой 50 Гц (верю Вам на слово), то за 49 сек таймер "натикает" 50 * 49 = 2450 раз. Поэтому:
Код
unsigned int t= 0;

//прерывания таймера Т0 - вывод на индикатор
interrupt [TIM0_OVF] void Timer0Ovf(void)
{
  TCNT0 = 0xb2;
  if(++t >= 2450)
  {
    t=0;
    IND_Conv(imp);
    imp= 0;
  }
  IND_Update();
}


Возникает проблема с неатомарностью изменения переменной imp в функции main. Там, где эта переменная изменяется в main - необходимо обрамить командами запрета и разрешения прерывания.

PS. Другое решение: не трогать переменную imp в обработчике прерывания от таймера, а по истечению 49 сек взвести некий флаг, а уж в main этот флаг анализировать, и, по нему вызывать IND_Conv и сбрасывать imp :
Код
unsigned int t= 0;
volatile char flag= 0;

в main
........
  if(flag)
  {
    flag=0;
    IND_Conv(imp);
    imp= 0;
  }
........
//прерывания таймера Т0 - вывод на индикатор
interrupt [TIM0_OVF] void Timer0Ovf(void)
{
  TCNT0 = 0xb2;
  if(++t >= 2450)  {    t=0; flag= 1;  }
  IND_Update();
}
Go to the top of the page
 
+Quote Post
shadow86
сообщение Jan 4 2012, 20:05
Сообщение #62


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Всех с новым годом!!!
Спасибо огромное, Палыч!
Go to the top of the page
 
+Quote Post
muravei
сообщение Jan 12 2012, 12:38
Сообщение #63


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



С МК, конечно, пральнее sm.gif , но можно было не париться, сделать: жд. мульт. -интегр. фильтр- измеритель
Go to the top of the page
 
+Quote Post
shadow86
сообщение Feb 2 2012, 11:59
Сообщение #64


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Снова здравствуйте, уважаемые программисты! У меня такой вопрос образовался: если я не хочу применять кварц для тактирования МК, а хочу, чтоб он от внутреннего генератора на 1МГц работал, мне в программе что-либо указывать нужно, или он по умолчанию от него запустится?
Go to the top of the page
 
+Quote Post
XVR
сообщение Feb 2 2012, 15:07
Сообщение #65


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(shadow86 @ Feb 2 2012, 15:59) *
если я не хочу применять кварц для тактирования МК, а хочу, чтоб он от внутреннего генератора на 1МГц работал, мне в программе что-либо указывать нужно
Вам нужно правильным образом прошить фьюзы при програмировании вашей прошивки

Go to the top of the page
 
+Quote Post
shadow86
сообщение Feb 5 2012, 16:40
Сообщение #66


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



спасибо! буду теперь с этим разбираться..
Go to the top of the page
 
+Quote Post
shadow86
сообщение Mar 19 2012, 00:48
Сообщение #67


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Уважаемые форумчане, помогите разобраться с очередным бзиком моего Гейгера. Преобразователь на питание МК из 2.4В в 5В работает идеально: напряжение 5.02В, пульсации не вижу на осциллографе даже при максимальном усилении. На вход МК (РВ4) подаю сформированные подготовленные импульсы с ждущего мультивибратора на к155аг1 (пробовал разные длительности: от 0.1с до 0.1мс), а после заданного промежутка времени и счета на индикатор выводятся какие-то космические значения (как я заметил, кратные 10)!!! которых в принципе быть не может - вместо 11-17 -- 510-820. Как понимать что он считает и как это исправить??? на питании МК стоит 10мк+0.1мк потом дроссель на 10мкГн потом 0.1мк; после преобразователя - 0.1мк+220мк+1500мк. я так понимаю, что по входу идет наводка. как бы ее зашунтировать?
Go to the top of the page
 
+Quote Post
OlegH
сообщение Mar 19 2012, 04:26
Сообщение #68


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Ну так найдите ошибку.... Уменьшите свои 46 секунд до удобного в отладке значения (можно текущее число импульсов сразу выводить на индикацию а не ждать какое-то время) и сымитируйте 1 импульс на счетный вход. Ищите ошибку в программе до тех пор пока поведение не будет адекватным.... Очевидно либо импульс с дребезгом либо программа на один импульс увеличивает счетчик множество раз. А может само число счетчика неправильно формируется для вывода на индикатор (на что косвенно намекает кратность 10)
Go to the top of the page
 
+Quote Post
shadow86
сообщение Mar 19 2012, 05:15
Сообщение #69


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Спасибо за совет, Олег! Попробую так.
Go to the top of the page
 
+Quote Post
shadow86
сообщение Mar 19 2012, 08:51
Сообщение #70


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



Спасибо большое за внимание! разобрался! это не наводка была по входу.. а кривые руки.. при изготовлении платы индикатора отзеркалил 1 и 3 разряд, вот у меня 3-х значные числа и лезли ))).
Go to the top of the page
 
+Quote Post
shadow86
сообщение Mar 25 2012, 17:54
Сообщение #71


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



А подскажите, пожалуйста, как должен выглядеть текст программы, если я хочу сделать короткий звуковой сигнал с одной из ножек МК, который будет звучать при появлении счетного импульса на входной ножке? Интересует момент формирования звука.

Сообщение отредактировал shadow86 - Mar 25 2012, 17:58
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Mar 25 2012, 19:20
Сообщение #72


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(shadow86 @ Mar 25 2012, 21:54) *
А подскажите, пожалуйста, как должен выглядеть текст программы, если я хочу сделать короткий звуковой сигнал с одной из ножек МК, который будет звучать при появлении счетного импульса на входной ножке? Интересует момент формирования звука.


Вам нужно два счётчика . Счетчик- длительности звучания и счётчик -частота звучания. Второе выбирается из DS на пищалку. Длительность на слух.


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
shadow86
сообщение Mar 26 2012, 10:09
Сообщение #73


Участник
*

Группа: Участник
Сообщений: 64
Регистрация: 12-11-09
Из: украина, г. харьков
Пользователь №: 53 585



спасибо за ответ! Бум стараться )
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.02267 секунд с 7
ELECTRONIX ©2004-2016