Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Alexeyslav »

может это опечатка ?
Чем это смущает? Порог сравнения, он и есть порог... хоть и цифровой.

не выводятся сегменты подключённые к портуД


Порт D настроен на вывод? Что-то сомнение берет способ инициализации...
Бар-Барсик
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вс июн 27, 2010 17:24:13

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Бар-Барсик »

да portd portc на выход
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение unalex »

Код: Выделить всё

void outputLED(char data)

и в теле этой функции зажигаете разряды
откуда функции знать чему равен cnt_led если вы его ей не посылаете, а посылаете всего лишь элемент массива(какой он по счету функция не догадаться не сможет)?

Код: Выделить всё

//global routine
void outputLED(char kathode, char anode)
{
   //outputLED routine
   if(kathode & (1 << 0))//a
   SetBit(PORTD,6);
   
   //outputLED routine
   if (anode==0)
   SetBit(LED_KAT_PORT,k1);
}

//global routine

ISR (TIMER0_OVF_vect)
{
   //interrupt routine
   outputLED(led_buffer[cnt_led], cnt_led);
}



где катоды а где аноды разбирайтесь сами, а то у вас в коде фигурируют катоды, а в комментарии аноды
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Kavka »

FreshMan писал(а):как понимать отмеченное слово в данном предложении ? может это опечатка ?

Регистр хранит "пороговое значение" (число в двоичном виде, Alexeyslav уже написал :) ).
Обычно под пороговым значением понимается величина, до этого значения, так сказать, одно состояние, после - другое.
Чтобы определить "до" или "после" надо сравнить это пороговое значение с отслеживаемой величиной (в этом случае со значением счётчика).
По смыслу, вроде, ничего не противоречит. Но перевод "кривоват", звучит не очень.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Nevox
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Nevox »

Nevox писал(а):я на словах это понимаю,а как кодом это запишется? можете подсказать?

Ребят,помогите пожалуйста.
Бар-Барсик
Нашел транзистор. Понюхал.
Сообщения: 155
Зарегистрирован: Вс июн 27, 2010 17:24:13

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Бар-Барсик »

unalex писал(а):

Код: Выделить всё

void outputLED(char data)

и в теле этой функции зажигаете разряды
откуда функции знать чему равен cnt_led если вы его ей не посылаете, а посылаете всего лишь элемент массива(какой он по счету функция не догадаться не сможет)?

Код: Выделить всё

//global routine
void outputLED(char kathode, char anode)
{
   //outputLED routine
   if(kathode & (1 << 0))//a
   SetBit(PORTD,6);
   
   //outputLED routine
   if (anode==0)
   SetBit(LED_KAT_PORT,k1);
}

//global routine

ISR (TIMER0_OVF_vect)
{
   //interrupt routine
   outputLED(led_buffer[cnt_led], cnt_led);
}



где катоды а где аноды разбирайтесь сами, а то у вас в коде фигурируют катоды, а в комментарии аноды



переменная cnt_led объявлена как глобальна. с ней проблем и не было, аноды переключаются правильно. но я попробовал как вы говорили - результат тот же...
я думаю что когда я выполняю команду SetBit(LED_KAT_PORT,k1) у меня стирается значение порта которое выставлялось при помощи команды SetBit(PORTD,6) и горит только анод. но на анализаторе я это не заметил.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

Nevox писал(а):Ребят,помогите пожалуйста.
Если на словах Вы действительно понимаете(Вы так написали), а проблемы только с кодом - предлагаю Вам начать с составления схемы на логических элементах. Можно использовать счетчики, триггеры. По результату все вместе напишем код.
Ставим плюсы: )
Nevox
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Nevox »

ibiza11 писал(а):По результату все вместе напишем код.


вот допустим я прочитал одну статью и написал код, чтобы лампочка моргала,раз в какое-то время(при 0 у меня лампочка горит,при 1 гаснет):

Код: Выделить всё

module test(CLOCK,IN);
input wire CLOCK;
output reg [15:0] IN;
reg [15:0] counter;

localparam F = 50;   // тактовая частота в Гц


// временнЫе интервалы в миллисекундах
localparam    t1 = 1000/(20*F),   // необходимо пересчитать время для "0"
         t2 = t1;         // и "1", времена равны поскольку импульс типа "меандр"

// моменты времени в "тиках" тактовой частоты
localparam n1 = 1,      // для нулевого момента времени, уровень "0"
n2 = n1 + t1 *F,      // для момента времени где заканчивается "0", затем перейдёт в "1"
n3 = n2 + t2 *F;      // конец "1", снова будет "0"

always @(posedge CLOCK)   // работать по положительному фронту импульса
begin
   if(counter == n3)
      counter <= 0;      // сброс счётчика при совпадении с конечным моментом времени (n3)
   else
      counter <= counter + 1;   // иначе инкремент счётчика

   case (counter)
      n1: IN [15:0] <= 16'b1;      // формируем "0" на выходе
      n2: IN [15:0] <= 16'b0;       // формируем "1" на выходе
      default IN [15:0] <= 16'b1;   // по умолчанию, если что-то не так, выводим "0"
   endcase

end
endmodule


проблема в том,что моргает только первая лампочка,остальные все просто горят всегда, где исправить-то?
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

Nevox писал(а):проблема в том,что моргает только первая лампочка
нееет. проблема в том, что Вы не понимаете как работает этот код, да и вообще либо статья не годная, либо Вы и её не поняли.
В коде проблем нет, как написалино, так и работает.
Ставим плюсы: )
Nevox
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Nevox »

ibiza11 писал(а):В коде проблем нет, как написалино, так и работает.


Так я не тупо код скопировал,я его поправил, уже разобрался почему работал только 1 канал. Дальше буду думать,как зажигать каналы по очереди.
Nevox
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Nevox »

вот,если кому интересно,написал последовательное включение лампочек.

Код: Выделить всё

module test (CLOCK,IN);
input wire CLOCK;
output reg [15:0] IN;
reg [15:0] counter;

localparam F = 50;   
localparam    t1 = 1000/(20*F),   
         t2 = t1;         
localparam n1 = t1 *F,      
n2 = n1 + t1 *F,      
n3 = n2 + t2 *F,
n4 = n3 + t2 *F,   
n5 = n4 + t2 *F,   
n6 = n5 + t2 *F,   
n7 = n6 + t2 *F,   
n8 = n7 + t2 *F,   
n9 = n8 + t2 *F,   
n10 = n9 + t2 *F,   
n11 = n10 + t2 *F,   
n12 = n11 + t2 *F,   
n13 = n12 + t2 *F,
n14 = n13 + t2 *F,   
n15 = n14 + t2 *F,   
n16 = n15 + t2 *F;            

always @(posedge CLOCK)   
begin
   if(counter == n16)
      counter <= 0;      
   else
      counter <= counter + 1;   

   case (counter)      
n1: IN [15:0] <= 16'b1111111111111110;
n2: IN [15:0] <= 16'b1111111111111101;
n3: IN [15:0] <= 16'b1111111111111011;
n4: IN [15:0] <= 16'b1111111111110111;
n5: IN [15:0] <= 16'b1111111111101111;
n6: IN [15:0] <= 16'b1111111111011111;
n7: IN [15:0] <= 16'b1111111110111111;
n8: IN [15:0] <= 16'b1111111101111111;
n9: IN [15:0] <= 16'b1111111011111111;
n10: IN [15:0] <= 16'b1111110111111111;
n11: IN [15:0] <= 16'b1111101111111111;
n12: IN [15:0] <= 16'b1111011111111111;
n13: IN [15:0] <= 16'b1110111111111111;
n14: IN [15:0] <= 16'b1101111111111111;
n15: IN [15:0] <= 16'b1011111111111111;
n16: IN [15:0] <= 16'b0111111111111111;
       
      default IN [15:0] <= 16'b1111111111111111;   
   endcase

end
endmodule

 
Аватара пользователя
Evgeny1
Друг Кота
Сообщения: 4106
Зарегистрирован: Пн авг 10, 2009 01:18:55
Откуда: Электросталь
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Evgeny1 »

всем привет
решил собрать дозиметр микрон-1
возник вопрос-что нужно прошивать в первую очередь флэш или eeprom? или не имеет значения?
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ibiza11 »

Nevox писал(а):вот,если кому интересно,написал последовательное включение лампочек.
молодчина! :beer:
Ставим плюсы: )
Nevox
Мучитель микросхем
Сообщения: 426
Зарегистрирован: Чт авг 09, 2012 08:57:20

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Nevox »

ibiza11 писал(а):молодчина! :beer:


вот нет бы помочь... :)) :)) :))
Аватара пользователя
Evgeny1
Друг Кота
Сообщения: 4106
Зарегистрирован: Пн авг 10, 2009 01:18:55
Откуда: Электросталь
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Evgeny1 »

и мне тоже
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Аlex »

И мне тоже помогите !
Хочу изобрести велосипед. Что делать ? :idea:
Аватара пользователя
Linuxoid91
Грызет канифоль
Сообщения: 295
Зарегистрирован: Вс дек 18, 2011 14:41:24
Откуда: Ангарск

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Linuxoid91 »

Всем привет, у меня возникла проблема с дебаггером ICD 2. В MPLAB IDE 8.89 при тестировании выдает

Код: Выделить всё

Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to target
ICDWarn0020: Invalid target device id (expected=0x44F, read=0x0)
...Reading ICD Product ID
Running ICD Self Test
... Failed Self Test.  See ICD2 Settings (Debugger->Settings) (status tab) for details.
MPLAB ICD 2 ready for next operation


Захожу в меню (Debagger -> Setting) (status tab) и вижу такую картину. Всего три галки, пробовал с разными комбинациями, не помогло.

П.С. Первый раз занялся микроконтроллерами :)
Вложения
004.PNG
(12.98 КБ) 308 скачиваний
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Аlex »

А МК то подключен к ICD ? :)
Аватара пользователя
Linuxoid91
Грызет канифоль
Сообщения: 295
Зарегистрирован: Вс дек 18, 2011 14:41:24
Откуда: Ангарск

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Linuxoid91 »

А я думал, что тест надо проводить с отключенным МК. Подключил. Ура, заработало :music:
Аватара пользователя
Linuxoid91
Грызет канифоль
Сообщения: 295
Зарегистрирован: Вс дек 18, 2011 14:41:24
Откуда: Ангарск

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Linuxoid91 »

У меня еще один дурацкий вопрос. Решил создать проект в MPLAB X IDE 1.60, а в списке нет имеющегося у меня дебаггера (ICD 2). Мой товарищ (который хорошо знаком с контроллерами) говорит, что нужен какой-то драйвер, вот я так прям так и гуглю:

Код: Выделить всё

MPLAB X IDE 1.60 скачать драйвер ICD 2

Даже что-то нашел и установил http://www.ccsinfo.com/downloads.php
Дебаггер в списке не появился :oops:
Вложения
005.PNG
(93.56 КБ) 302 скачивания
Ответить

Вернуться в «Разные вопросы по МК»