Чем это смущает? Порог сравнения, он и есть порог... хоть и цифровой.может это опечатка ?
не выводятся сегменты подключённые к портуД
Порт D настроен на вывод? Что-то сомнение берет способ инициализации...
Чем это смущает? Порог сравнения, он и есть порог... хоть и цифровой.может это опечатка ?
не выводятся сегменты подключённые к портуД
Код: Выделить всё
void outputLED(char data)Код: Выделить всё
//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);
}FreshMan писал(а):как понимать отмеченное слово в данном предложении ? может это опечатка ?
Nevox писал(а):я на словах это понимаю,а как кодом это запишется? можете подсказать?
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);
}
где катоды а где аноды разбирайтесь сами, а то у вас в коде фигурируют катоды, а в комментарии аноды
Если на словах Вы действительно понимаете(Вы так написали), а проблемы только с кодом - предлагаю Вам начать с составления схемы на логических элементах. Можно использовать счетчики, триггеры. По результату все вместе напишем код.Nevox писал(а):Ребят,помогите пожалуйста.
ibiza11 писал(а):По результату все вместе напишем код.
Код: Выделить всё
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нееет. проблема в том, что Вы не понимаете как работает этот код, да и вообще либо статья не годная, либо Вы и её не поняли.Nevox писал(а):проблема в том,что моргает только первая лампочка
ibiza11 писал(а):В коде проблем нет, как написалино, так и работает.
Код: Выделить всё
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
молодчина!Nevox писал(а):вот,если кому интересно,написал последовательное включение лампочек.

ibiza11 писал(а):молодчина!
Код: Выделить всё
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

Код: Выделить всё
MPLAB X IDE 1.60 скачать драйвер ICD 2