Мелкие вопросы по МК и ПЛИС.
- Сообщения: 347
- Зарегистрирован: Сб фев 07, 2009 19:21:25
доброе время суток, мужики а скажите или киньте на хорошие ресурсы, как и по каким алгаритмом можно научить МК распозновать голосовые команды.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
- Реклама
Скажите, пожалуйста, МК pic16c58a одноразово программируемый?
Фанат SMD
Казалось бы, зачем контроллеру контроллер контроллера...
Казалось бы, зачем контроллеру контроллер контроллера...
Да, однократно (one time programming) - буква С. Многократно программируемые имеют букву F (для 10, 12, 16, 18 ПИКов)
- Сообщения: 45
- Зарегистрирован: Вт мар 29, 2011 12:48:46
Голосовые команды требуют уйму памяти и весьма развесистую программу, т.е. опять память. Ограничься хлопками
Потом добавь гармонический голос (анализ одноголосной мелодии). На большее МК, ск.всего, не хватит.
- Сообщения: 347
- Зарегистрирован: Сб фев 07, 2009 19:21:25
а я гдето видел в сети ктото на мега8 собрал подобную вещицу, а щас найти немогу.cbb писал(а):Голосовые команды требуют уйму памяти и весьма развесистую программу, т.е. опять память. Ограничься хлопкамиПотом добавь гармонический голос (анализ одноголосной мелодии). На большее МК, ск.всего, не хватит.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
- Реклама
вопрос по пикам:
обьясните пожалуйста максимально доступно.................., есть такое понятие как вычисляемый переход............., я читал что при этом переходе можна принудительно изменить счетчик и перейти на другую строчку............., у меня возникает резонный вопрос, а зачем это делать когда есть простая команда goto metka с помощью которой можна отправится куда угодно.......?
обьясните пожалуйста максимально доступно.................., есть такое понятие как вычисляемый переход............., я читал что при этом переходе можна принудительно изменить счетчик и перейти на другую строчку............., у меня возникает резонный вопрос, а зачем это делать когда есть простая команда goto metka с помощью которой можна отправится куда угодно.......?
Tell Me The Truth
Вычисляемый переход реализуется с помощью ДВУХ регистров: младшего байта программного счетчика (PCL) и ЗАЩЕЛКИ старшего байта того же счетчика адреса программной памяти (PCLATH).
Сначала производят запись в старший байт (защелку), а затем в младший. Таким образом, в момент записи в младший, старший из защелки будет одновременно переписан в старший байт самого программного счетчика. И программа перескочит по этому 13-разрядному адресу (старший байт содержит только 5 значащих разряядов).
Итого, вычисляете адрес перехода (обычно так адресуют таблицу констант) и переходите в два приема на адрес в таблице, где записана команда retlw XX - возврат из подпрограммы с константой ХХ в аккумуляторе.
Сначала производят запись в старший байт (защелку), а затем в младший. Таким образом, в момент записи в младший, старший из защелки будет одновременно переписан в старший байт самого программного счетчика. И программа перескочит по этому 13-разрядному адресу (старший байт содержит только 5 значащих разряядов).
Итого, вычисляете адрес перехода (обычно так адресуют таблицу констант) и переходите в два приема на адрес в таблице, где записана команда retlw XX - возврат из подпрограммы с константой ХХ в аккумуляторе.
Код: Выделить всё
бла-бла-бла
movlw <адрес в таблице>
call table
тут имеем табличное значение в аккумуляторе
бла-бла-бла
table:
addwf PCL, f
retlw ...
retlw ...
retlw ...
retlw ...
retlw ...
retlw ...
retlw ...КРАМ, спасибо за ответ............, правда я половину всего не понял..................., но главный вопрос остается, зачем это делать когда есть простая команда goto metka с помощью которой можна отправится куда угодно.......?
Tell Me The Truth
При табличном пересчете (например таблица семисегментного дешифратора) есть ВХОДНОЙ аргумент - цифра на индикацию. И есть ВЫХОДНАЯ функция - горящие и погашеные сегменты. Т.е. нужно указать адрес в таблице с помощью ПЕРЕМЕННОЙ, а не константы. В 10, 12, 16 и 18-х пиках в команде goto можно прописать только ФИКСИРОВАННЫЙ адрес перехода (константу). А нужно разный, в зависимости от значения в аккумуляторе.
Команда вычисляемого безусловного перехода типа bra Wn есть только в PIC24/dsPIC33.
Команда вычисляемого безусловного перехода типа bra Wn есть только в PIC24/dsPIC33.
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
... вычисляемый переход - более гибкий ... часто с его помощью можно либо съэкономить память, либо выиграть в быстродействии.....FreshMan писал(а):у меня возникает резонный вопрос, а зачем это делать когда есть простая команда goto metka с помощью которой можна отправится куда угодно.......?
КРАМ ведь привел ответ в примере. Вам нужно вывести в порт В значение цифры 5. Семисегментный код которой в двоичном формате: B'01011011'. Поставив это значение в ПЯТУЮ строку таблицы Table, и совершив вычисляемый переход, попадаете на эту строку. При этом значение за командой retlw B'01011011' помещается в аккумулятор, затем происходит возврат в основную программу.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Прошу прощения если не туда - тем плодить не хочется...
Заинтересовался microC для PIC, написал простенький код:
однако строчки пропускаются компилятором в режиме отладки, как будто их нет. И ещё: в окошке Watch Values нет переменных A, B и C.
Что я не так сделал? Переменные неправильно описал?
Спасибо.
Заинтересовался microC для PIC, написал простенький код:
Код: Выделить всё
void main() {
int A, B, C;
while(1){
TRISA = 0;
PORTA = 1;
delay_ms(50);
PORTA = 0;
B = 1;
C = 4;
A = B + C;
}
}Код: Выделить всё
int A, B, C;
A = B + C;Что я не так сделал? Переменные неправильно описал?
Спасибо.
умный компилер выкинул неиспользующиеся переменные. объявите их с модификатором volatile/
Век живи - век учись...
Так просто оказалось, аж неудобно стало за вопрос 
Тогда получается, что я так и не увижу в WATCH переменные даже если задействую их в порту?
PS: Нашёлся ответ - уровень оптимизации выставлен не на ZERO - поэтому и подрезает переменные... как всё просто
Тогда получается, что я так и не увижу в WATCH переменные даже если задействую их в порту?
PS: Нашёлся ответ - уровень оптимизации выставлен не на ZERO - поэтому и подрезает переменные... как всё просто
вопрос по пикам:

как тут понимать коэффициент деления ?Предделитель это последовательная цепочка из 8-ми триггеров, каждый из которых делит
на 2. Максимальный коэффициент деления предделителя = 256
Tell Me The Truth
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
В данном случае это максимальное число, на которое может делиться входной сигнал.
К примеру - на вход предделителя поступает сигнал с частотой 256Гц.
Соответственно, коэффициент деления первого триггера будет равен 1, второго триггера 2, третьего - 4, и тд.
И, естественно, на выходе первого триггера мы получим сигнал частотой 256Гц, на выходе второго триггера - 128, дальше 64, 32, 16, 8, 4, 2, 1(Гц).
Там где 1Гц (выход последнего триггера) - там коэффициент деления соответственно 256, т.е. максимальный, поскольку триггеров больше нет в цепочке.
Упростил как смог
И в заключение - там не цепочка триггеров а обычный двоичный счетчик.
К примеру - на вход предделителя поступает сигнал с частотой 256Гц.
Соответственно, коэффициент деления первого триггера будет равен 1, второго триггера 2, третьего - 4, и тд.
И, естественно, на выходе первого триггера мы получим сигнал частотой 256Гц, на выходе второго триггера - 128, дальше 64, 32, 16, 8, 4, 2, 1(Гц).
Там где 1Гц (выход последнего триггера) - там коэффициент деления соответственно 256, т.е. максимальный, поскольку триггеров больше нет в цепочке.
Упростил как смог
И в заключение - там не цепочка триггеров а обычный двоичный счетчик.
Не умеешь - не берись, но не взявшись не научишься...
Бррр... а разве там не стоит обычный D-триггер, делящий на 2?Arlleex писал(а):... коэффициент деления первого триггера будет равен 1, ...
Не буквоедства ради а токмо истины для : на 2 делит Т-триггер. D-триггер - просто защелка. Чтобы ему делить на 2 ( стать Т-триггером ), нужно на D подать инверсный выход.Chettuser писал(а): Бррр... а разве там не стоит обычный D-триггер, делящий на 2?
А так все правильно.
- Сообщения: 4435
- Зарегистрирован: Сб мар 07, 2009 20:44:36
Ну, возможно что и так, счетчик по сути тоже является набором триггеров.
Не умеешь - не берись, но не взявшись не научишься...
- Сообщения: 7
- Зарегистрирован: Пт авг 05, 2011 14:32:45
Подумываю о своём первом проекте на МК.
Собираюсь склепать ИК радар приставку к ПК. Действием 5-10М
Посоветуйте микроконтроллер смесевая AVR
В ATmega8 8 каналов АЦП. Я не довольно картавый программист и нуждаюсь в советах знающего языки кота.
Собираюсь склепать ИК радар приставку к ПК. Действием 5-10М
Посоветуйте микроконтроллер смесевая AVR
В ATmega8 8 каналов АЦП. Я не довольно картавый программист и нуждаюсь в советах знающего языки кота.


