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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

black_lizard писал(а):Если карточка работает в родном режиме то да, CMD/DI и DAT0/DO, но она специально и переводится в SPI режим, тогда выводы и можно назвать MOSI и MISO.

Можно и "Машку за ляжку" и "телегу с разбегу"... :)))
Но правильно - CMD/DI и DAT0/DO...
И разве MOSI не расшифровывается Master Out Slave In?

Уже написал...
SD не может быть мастером... по определению... по сути своей...

Поэтому аббревиатура MOSI/MISO здесь просто неуместна...
Я делаю так - инициализирую и жду, пока карточка чем-нибудь подёргает. Но она не дёргает не MISO, не CLK.

Вот и приехали... :))
Не может карточка дёргать CLK... и не ждите... т.к. SD не может быть Мастером... :)))
CLK должен дёргать МК... и при приёме... и при передаче...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

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

Сообщение black_lizard »

Не может карточка дёргать CLK... и не ждите... т.к. SD не может быть Мастером...
CLK должен дёргать МК... и при приёме... и при передаче...


Это я понял только что, когда карточка вдруг начала ни с того ни с сего дёргать MISO(D0). Я ловил и MISO и CLK и до этого она по всем фронтам молчала. Я так и не понял, что я сделал
Ну и подправив код получил от карточки ответ на команду рестарта 01111111
Еа! Заработало хоть как-то! Будем разбираться дальше.
Кстати, либа из библиотеки так и отказывается инициализировать карточку.

Спасибо большое за помощь всем, кто откликнулся!
Собираю самопальный мини-компьютер
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

HHIMERA писал(а):Бред!!!

Бред - то что вы написали. В режиме SD - эти линии читаются как DI, DO и т.д.
У SD карты есть еще один режим - SPI. А по стандарту SPI аббревиатура этих линий переназначается в MISO и MOSI.
И на картиночке... Подтягивать CS к земле... да ещё через 1 МОм...

Я же написал русским языком - схема ПРИМЕРНО такая. Я акцентировал внимание на обвязке питания карты памяти. На резисторы внимания не обращал, т.к. автор вопроса указал, что резисторы поставил какие надо.
Чего не замечали??? Повышения тока потребления при работе SD ???
Всегда так было!!!

Разумеется, я это прекрасно знаю.
Странное поведение - то, что когда данные передаются - изображение хромает. Вот что странно.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

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

Сообщение black_lizard »

Я же написал русским языком - схема ПРИМЕРНО такая. Я акцентировал внимание на обвязке питания карты памяти. На резисторы внимания не обращал, т.к. автор вопроса указал, что резисторы поставил какие надо.


Я их убрал, за ненадобностью. На схеме, на которую я ориентировался с этим МК не было резисторов, как не было вообще и кондёра. Но кондёр с вашей схемы помог.

Уже добился нужных ответов инициализации. Пашет. Если честно, я так и не понял, в чём до этого проблема была.
Собираю самопальный мини-компьютер
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

А как вы этого добились?
Резисторы нужны, там линии требуют внешней подтяжки. В даташите на карты даже написано :)
Не умеешь - не берись, но не взявшись не научишься...
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Arlleex писал(а):Бред - то что вы написали.

Неужели??? :)))
Arlleex писал(а):MISO----->MISO
MOSI----->MOSI - так должно быть.

А это чей бред??? :)))

В режиме SD - эти линии читаются как DI, DO и т.д.
У SD карты есть еще один режим - SPI. А по стандарту SPI аббревиатура этих линий переназначается в MISO и MOSI.

:)))
А производители памяти, видать, этого и не знают... :)))
Мало того... они упорно игнорируют ваши рекомендации... и продолжают именовать выводы DI, DO, SI, SO и т .д. ... но никак не MISO и MOSI... :)))
С чего бы это???
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

vitalik_1984 писал(а):Причем биты именованные и не нужно заглядывать в даташит под каким номером идет нужный бит.

Да, но можно словить нехилый глюк, если в дефайне неправильно обозван номер бита. Тогда уж наглядней будет конструкция в комментах типа
01
||_ A
|__ B
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

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

Сообщение black_lizard »

А как вы этого добились?
Резисторы нужны, там линии требуют внешней подтяжки. В даташите на карты даже написано


В разных источниках варьируется номинал и их присутствие вообще. Не думаю, что будет такая уж существенная разница, если учитывать, что контроллер всё равно не выжмет из карточки запредельные скорости.

Не проще перестать спорить и сойтись на CMD/DI/MOSI определении? Землю тоже, знаете ли, по разному указываются, VSS, GND, V-. Когда я увлёкся МК эта куча определений для одних и тех же вещей дезориентировали, потом стало нормально. Главное же всё равно протокол передачи.
Собираю самопальный мини-компьютер
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

black_lizard писал(а):VSS, GND, V-

Как я уже где-то писал, обычно пользуются парами VSS c VDD и GND с VCC. V- пока не встречал :)))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

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

Сообщение Arlleex »

Изображение
Ну а вообще, если речь идет например, о таких линиях питания, как GND и AGND, то стоит помнить - что это все таки разные линии...
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Точно точно, особенно V- не то же самое, что GND.
HHIMERA писал(а):
И разве MOSI не расшифровывается Master Out Slave In?

Уже написал...

И Что вы хотели своим выделением сказать? Вообще если карта не может быть мастером, то значит нужно использовать часть аббревиатуры для слейва, что в этом такого?
Понятно, что нелогично было бы подписывать MISO для устройства, которое может быть только слейвом. Но в связке с Мк такое допущение тоже понятно.
Хотя в контексте темы как правильно подключить карту памяти более правильным было бы использовать именно те обозначения, что указаны в даташите на устройство.
То есть MISO-DO, MOSI-DO
Да, но можно словить нехилый глюк, если в дефайне неправильно обозван номер бита. Тогда уж наглядней будет конструкция в комментах типа
01
||_ A
|__ B
Существует много подводных камней.
Ваш наглядный вариант можно использовать, если эта настройка используется один раз в начале программы, либо в какой нибудь библиотеке, а представьте себе картинку, в которой последовательно изменяются несколько регистров по вашему формату.
Тут сразу проявятся недостатки этого способа такие как трудночитаемость в связи с реальным избытком информации.
Большое время для внесение изменений и создания кода.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

vitalik_1984 писал(а):И Что вы хотели своим выделением сказать? Вообще если карта не может быть мастером, то значит нужно использовать часть аббревиатуры для слейва, что в этом такого?
Понятно, что нелогично было бы подписывать MISO для устройства, которое может быть только слейвом. Но в связке с Мк такое допущение тоже понятно.
Хотя в контексте темы как правильно подключить карту памяти более правильным было бы использовать именно те обозначения, что указаны в даташите на устройство.
То есть MISO-DO, MOSI-DO

(С пониманием) Воскресенье... поздний вечер...
"Я не даю готовых решений, я заставляю думать!"(С)
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

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

Сообщение ut1wpr »

Уже полторы страницы спор ни о чем...
С уважением,
Виктор.
Chettuser

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

Сообщение Chettuser »

Тэксс.. Заварочный чайник застрял на коде:
Спойлерmodule divider_time (
input wire [3:0] div_range,
input wire clk,
output wire cout );

reg [3:0]counter = 0;
reg i = 0;

always @(posedge clk)
begin
case (div_range)
1: begin i = 0; cout = clk; end
2: i = 1;
4: i = 4;
8: i = 9;
default: i = 0;
endcase

if (counter == i)
counter <= 4'b0;
else
counter <= counter + 1'd1;
end

assign cout=(counter == i);

endmodule
Если я правильно понимаю выход из ситуации сложный - когда идёт присвоение output'у значения переменной и в тоже время этого делать внутри always-блока нельзя...
Как выйти из этой ситуации? :(
Спасибо. Своих мозгов перестало хватать. :oops:

Ругань Quartus'а:
СпойлерError (10137): Verilog HDL Procedural Assignment error at divider_time.v(12): object "cout" on left-hand side of assignment must have a variable data type
Аватара пользователя
Sceam73
Встал на лапы
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 21:07:09

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

Сообщение Sceam73 »

Ребят, Проблема с вольтметром!
Код
Спойлер#include <mega8.h>

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x00
volatile long display = 0;
volatile unsigned long value;
volatile unsigned int adc_counter;

// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
// Read the AD conversion result
adc_data=ADCW;
// Place your code here
value = value + (adc_data*11/4);
adc_counter++;
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 156,250 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x8C;
delay_ms(50);

// LCD module initialization
lcd_init(16);

// Global enable interrupts
#asm("sei")

delay_ms(50);

while(1)
{
if (adc_counter > 300) // âû÷èñëÿåì ñðåäíåå çíà÷åíèå ÀÖÏ
{
display = value/adc_counter;
adc_counter = 0;
value = 0;
}
delay_ms(50);
lcd_gotoxy(0,0);
lcd_putchar(display%10000/1000);
lcd_putchar(display%1000/100);
lcd_putsf(",");
lcd_putchar(display%1000/10);

}
}


схема
СпойлерИзображение

только тут подключен сегментник, а у меня 16х2 лсд!
После прошивки выводит мне ll ll,ll в чем проблема, подскажите пожалуйста!
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

разберитесь с функцией lcd_putchar. Вы передаете ей неправильный аргумент)
Ставим плюсы: )
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

Sceam73 писал(а): lcd_putchar(display%10000/1000);
lcd_putchar(display%1000/100);
lcd_putsf(",");
lcd_putchar(display%1000/10);

\

Я не зря выделил присмотритесь внимательно.
Вообще проще использовать связку itoa() и lcd_puts();
Вот понятный пример
HHIMERA писал(а):
vitalik_1984 писал(а):То есть MISO-DO, MOSI-DO

(С пониманием) Воскресенье... поздний вечер...

Точно имелось ввиду MISO-DO, MOSI-DI
В поисках истины человек развивается.
Аватара пользователя
Sceam73
Встал на лапы
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 21:07:09

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

Сообщение Sceam73 »

виталик, это намек на то что putchar, выводит только переменные char? за ссылку спасибо) как наступит утро, так и буду пробовать....
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

имхо, это намек на то, что в дисплей нужно выдавать коды с его кодовой страницы -
те не 0 - а 0x30, не 1, а 0x31 соответственно
ваши 0, 1, 2 - в кодовой странице соответствуют символам псевдографики, которая добросовестно и выводится.
Аватара пользователя
Sceam73
Встал на лапы
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 21:07:09

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

Сообщение Sceam73 »

Даже так ? ....
Я вышел с положения немного подругому! lcd_gotoxy(0,0);
lcd_putchar(display%10000/1000+0x30);
lcd_putchar(display%1000/100+0x30);
lcd_putsf(",");
lcd_putchar(display%1000/10+0x30);

Так можно ?

У меня появились 00,0

Но работать мой вольтметр отказываеться, реакции никакой, при подключении бп на контакты (бп 12 в) показывает все те же нули!
Может это из за неправильной организации вывода цифр на лсд ? Пока попробую найти ошибку сам, но если кто подскажет, буду благодарен!
Ответить

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