Мелкие вопросы по МК и ПЛИС.
- danger3466
- Встал на лапы
- Сообщения: 135
- Зарегистрирован: Ср дек 21, 2011 12:18:39
Re: Мелкие вопросы по МК и ПЛИС.
Коты, есть зацепка, watchdog! Сейчас выключил его фьюзом, нужно его дополнительно выключать программно?
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Нет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- danger3466
- Встал на лапы
- Сообщения: 135
- Зарегистрирован: Ср дек 21, 2011 12:18:39
Re: Мелкие вопросы по МК и ПЛИС.
Интересно... Тогда какого рожна я получаю заместо одного кучу символов
В основном 'C'(что соответствует 0х43), что уже радует, но не только
Короче у меня две проблемы согласованность скорости/формата и watchdog.
Может у меня кварц г-но или кондёры около него?! Вообще как то возможно проверить на какой частоте работает камень?
В основном 'C'(что соответствует 0х43), что уже радует, но не только
Короче у меня две проблемы согласованность скорости/формата и watchdog.
Может у меня кварц г-но или кондёры около него?! Вообще как то возможно проверить на какой частоте работает камень?
Код: Выделить всё
#define F_CPU 20000000
#include <avr/io.h>
#include <util/delay.h>
#define BAUD 129
//BAUD ((F_CPU/(USART_SPEED*16)) - 1) : ( 20 000 000 / (9600*16) ) - 1 = 129
inline void USART_Init( unsigned int baud ){
/* Устанавливаем скорость */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Включаем прием и передачу */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Устанавливаем формат: 8n1 */
UCSRC = ( 0 << UCSZ2 ) | ( 1 << UCSZ1 ) | ( 1 << UCSZ0 ) | ( 0 << UPM1 ) | ( 0 << UPM0 ) | (0 << USBS);
}
int main(void){
USART_Init(BAUD);
_delay_ms(1000);
UDR = 0x43;
while(1){}
return 0;
}- danger3466
- Встал на лапы
- Сообщения: 135
- Зарегистрирован: Ср дек 21, 2011 12:18:39
Re: Мелкие вопросы по МК и ПЛИС.
Нашел хороший софт Terminal v1.9b, в нем можно HEX смотреть, вот что мне приходит:
0x43 преобладает. Йоху!
Только больно много символов
Может оптимизация как то влияет?
Код: Выделить всё
43 43 43 43 43 43 43 43 83 43 A1 A3 CB 43 43 43 FE 43 43 43 85 43 43 43 94 43 43 43 E3 A3 83 43 43 C3 43 BE 43 43 43 C3 43 43 43 43 FF 43 43 43 A3 A3 43 A3 43 43 C3 43 A3 43 43 43 43 43 43 43 43 43 43 43 43 43 43 430x43 преобладает. Йоху!
Только больно много символов
Может оптимизация как то влияет?
Re: Мелкие вопросы по МК и ПЛИС.
Ребята, у меня пара вопросов по прерываниям, уже 3й день немогу с ними разобраться, возможно вопросы глуповаты, но всеже
1) Можно ли править регистры таймеров и прерываний 2чным кодом тоесть вместо сдвигов использовать =1010101
2) Как определить, какое именно обьявление прерывания использовать, вот у меня пример interrupt [EXT_INT0] void ext_int0_isr(void)
насколько я понял это прерывание по переполнению, обьясните пожалуйста, что значят фразы после interrupt....
И где можно узнать, какого вида должно быть такое обьявление, если мне например нужно прерывание по совпадению таймера!
1) Можно ли править регистры таймеров и прерываний 2чным кодом тоесть вместо сдвигов использовать =1010101
2) Как определить, какое именно обьявление прерывания использовать, вот у меня пример interrupt [EXT_INT0] void ext_int0_isr(void)
насколько я понял это прерывание по переполнению, обьясните пожалуйста, что значят фразы после interrupt....
И где можно узнать, какого вида должно быть такое обьявление, если мне например нужно прерывание по совпадению таймера!
Re: Мелкие вопросы по МК и ПЛИС.
1.В регистр можно записать число. Но вариант с представлением этого числа "в виде сдвигов" считается более наглядным.
Re: Мелкие вопросы по МК и ПЛИС.
незнаю даже почему это нагляднее, как помне это лишняя информация
а что по 2му вопросу?
а что по 2му вопросу?
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
interrupt [EXT_INT0] void ext_int0_isr(void)
Прерывание[внешнее_от_лапки_INT0] не параметрируемое Название (без параметров). А искать описание объявлений всех прерываний в хелпе к кодевижену.
Docendo discimus
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Странные люди что может сказать человекунезнаю даже почему это нагляднее, как помне это лишняя информация
REGISTER =0b10100101;
,в то время как
REGISTER =(1<<BIT0)| (1<<BIT2)| (1<<BIT5)| (1<<BIT7);
Точно говорит читающему, что биты 0,2,5,7 установлены,остальные сброшены.Причем биты именованные и не нужно заглядывать в даташит под каким номером идет нужный бит.
Re: Мелкие вопросы по МК и ПЛИС.
Уважаемый кот, вы мне помогаете напротяжении всего моего пути програмирования контролеров, большое вам за это спасибо, теперь я вьехал зачем нужно использовать именно сдвиги...... Завтра буду пробовать организовать свой код на основе прерывания..... до сегодняшнего дня пытался всячески их избегать, потому что не понимал как они работают, а сейчас понял, насколько эьо удобно.......
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Сдвиги использовать вовсе не обязательно, но это довольно таки удобно. В общем случае в начале инициализации CVAVR сам прописывает нужные константы, а вот вы в своем коде уже можете со сдвигами баловаться.
Только есть как всегда подводные камни.Для того, чтобы сдвиги заработали в CVAVR нужно поставить в свойствах проекта галку "IO bits definitions"( вроде так называется.)
Студия отлично сдвиги понимает достаточно подключить
#include "avr/io.h"
PS
Всегда пожалуйста
Ставим плюсы
Только есть как всегда подводные камни.Для того, чтобы сдвиги заработали в CVAVR нужно поставить в свойствах проекта галку "IO bits definitions"( вроде так называется.)
Студия отлично сдвиги понимает достаточно подключить
#include "avr/io.h"
PS
вы мне помогаете на протяжении всего моего пути програмирования контролеров, большое вам за это спасибо
Всегда пожалуйста
Ставим плюсы
В поисках истины человек развивается.
- black_lizard
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вс сен 23, 2012 05:51:35
Re: Мелкие вопросы по МК и ПЛИС.
Здравствуйте. Помогите пожалуйста с SD картой. Никак не могу понять в чём проблема. Контроллер - parallax propeller
Суть в том, что карточку не берут ни стандартные либы, ни мой ассемблерный код. Сначала использовал слот для карт, потом припаял карту к плате, потом подумал, что уже её сжёг к чертям - отпаял и вставил в ноут - пашет. Вернул в проект - не пашет. Не отвечает на любые команды вообще, просто молчит. Может быть кто подскажет, в чём может быть проблема? Судя по всему, она в самом железе, а не в коде, но идеи просто отсутствуют, тк уже и резисторами её к питанию подтянул, как в интернете советуют и прозвенел все соединения по 10 раз - толку нет. Единственный оставшийся вариант - не хватает питания, но не знаю, как это проверить.
Карточка обычный kingston на 512 мб
Суть в том, что карточку не берут ни стандартные либы, ни мой ассемблерный код. Сначала использовал слот для карт, потом припаял карту к плате, потом подумал, что уже её сжёг к чертям - отпаял и вставил в ноут - пашет. Вернул в проект - не пашет. Не отвечает на любые команды вообще, просто молчит. Может быть кто подскажет, в чём может быть проблема? Судя по всему, она в самом железе, а не в коде, но идеи просто отсутствуют, тк уже и резисторами её к питанию подтянул, как в интернете советуют и прозвенел все соединения по 10 раз - толку нет. Единственный оставшийся вариант - не хватает питания, но не знаю, как это проверить.
Карточка обычный kingston на 512 мб
Собираю самопальный мини-компьютер
Re: Мелкие вопросы по МК и ПЛИС.
Вольтметром померяйте напряжение питания. Напишите сюда. Схема включения должна быть примерно такой (см. картинку).
Возможно вы неверно соединили линии MISO и MOSI.
MISO----->MISO
MOSI----->MOSI - так должно быть.
Ну и код программы хотя бы в студию. А может и в инициализации портов что-то не то, в результате чего карточка и не реагирует
Возможно вы неверно соединили линии MISO и MOSI.
MISO----->MISO
MOSI----->MOSI - так должно быть.
Ну и код программы хотя бы в студию. А может и в инициализации портов что-то не то, в результате чего карточка и не реагирует
- Вложения
-
- Безымянный.jpg
- (39.27 КБ) 382 скачивания
Не умеешь - не берись, но не взявшись не научишься...
- black_lizard
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вс сен 23, 2012 05:51:35
Re: Мелкие вопросы по МК и ПЛИС.
Вольтметром померяйте напряжение питания. Напишите сюда. Схема включения должна быть примерно такой (см. картинку).
3.2 В
Схема подключения такая. Только резисторы номиналом поменьше и кондёра нет. Мне уже пришла в голову мысль о том, что вся проблема в нестабильности напряжения, стоит попробовать ...
Вот ещё что заметил - если сплошным потоком слать данные на карточку, изображение начинает на телевизоре рябить, выводимое с МК.
Как я уже сказал, я пробовал стандартную, испробованную библиотеку. На ресете карточки запинается и инициализация не идёт дальше. Вот код инициализации:
Код: Выделить всё
PUB start_explicit( DO, CLK, DI, CS ) : card_type | tmp, i
{{
Do all of the card initialization in SPIN, then hand off the pin
information to the assembly cog for hot SPI block R/W action!
}}
' (start with cog variables, _BEFORE_ loading the cog)
pinDO := DO
maskDO := |< DO
pinCLK := CLK
pinDI := DI
maskDI := |< DI
maskCS := |< CS
adrShift := 9 ' block = 512 * index, and 512 = 1<<9
' pass the output pin mask via the command register
maskAll := maskCS | (|<pinCLK) | maskDI
dira |= maskAll
' get the card in a ready state: set DI and CS high, send => 74 clocks
outa |= maskAll
repeat 4096
outa[CLK]~~
outa[CLK]~
' time-hack
SPI_block_index := cnt
' reset the card
tmp~
repeat i from 0 to 9
if tmp <> 1
tmp := send_cmd_slow( CMD0, 0, $95 )
if (tmp & 4)
' the card said CMD0 ("go idle") was invalid, so we're possibly stuck in read or write mode
if i & 1
' exit multiblock read mode
repeat 4
read_32_slow ' these extra clocks are required for some MMC cards
send_slow( $FD, 8 ) ' stop token
read_32_slow
repeat while read_slow <> $FF
else
' exit multiblock read mode
send_cmd_slow( CMD12, 0, $61 )
if tmp <> 1
' the reset command failed!
crash( ERR_CARD_NOT_RESET )Собираю самопальный мини-компьютер
- black_lizard
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вс сен 23, 2012 05:51:35
Re: Мелкие вопросы по МК и ПЛИС.
Кондёр не помог, хотя система в целом стала работать стабильнее.
Собираю самопальный мини-компьютер
Re: Мелкие вопросы по МК и ПЛИС.
Странное поведение... Никогда не замечал такого.
Пробуйте все-таки с питанием разобраться, без осциллографа сложнова-то будет. Тыкните им на вывод питания что там за картина?
Пробуйте все-таки с питанием разобраться, без осциллографа сложнова-то будет. Тыкните им на вывод питания что там за картина?
Не умеешь - не берись, но не взявшись не научишься...
Re: Мелкие вопросы по МК и ПЛИС.
Arlleex писал(а):Возможно вы неверно соединили линии MISO и MOSI.
MISO----->MISO
MOSI----->MOSI - так должно быть.
Бред!!!
Нет у SD ни MISO, ни MOSI !!!
Есть DI и DO !!!
SD не может быть мастером... по определению... по сути своей...
MISO----->DO
MOSI----->DI - вот так должно быть.
И на картиночке... Подтягивать CS к земле... да ещё через 1 МОм...
Народ... вы чё??? Конец света досрочно справлять начали... или Новый Год???
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Мелкие вопросы по МК и ПЛИС.
Arlleex писал(а):Странное поведение... Никогда не замечал такого.
Чего не замечали??? Повышения тока потребления при работе SD ???
Всегда так было!!!
"Я не даю готовых решений, я заставляю думать!"(С)
- black_lizard
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вс сен 23, 2012 05:51:35
Re: Мелкие вопросы по МК и ПЛИС.
Пробуйте все-таки с питанием разобраться, без осциллографа сложнова-то будет. Тыкните им на вывод питания что там за картина?
Был бы он - было бы понятнее, что там с питанием.
MISO----->DO
MOSI----->DI - вот так должно быть.
Если карточка работает в родном режиме то да, CMD/DI и DAT0/DO, но она специально и переводится в SPI режим, тогда выводы и можно назвать MOSI и MISO. И разве MOSI не расшифровывается Master Out Slave In?
Карточка и правда себя странно ведёт. Попробовал другую - тоже не пашет, хотя выводы я перепроверил - всё правильно.
Я делаю так - инициализирую и жду, пока карточка чем-нибудь подёргает. Но она не дёргает не MISO, не CLK. Заваливание её ресетами тоже не приводит к результату по прежнему.
Собираю самопальный мини-компьютер
- black_lizard
- Встал на лапы
- Сообщения: 132
- Зарегистрирован: Вс сен 23, 2012 05:51:35
Re: Мелкие вопросы по МК и ПЛИС.
Вот мой ассемблерный код на отправку байта:
''SEND CMD ===|
Кривоват немного, но я сначала всегда больше для наглядности пишу, чем для скорости.
инициализирую:
Дальше жду ответа, но карточка молчит
''SEND CMD ===|
Код: Выделить всё
sendSD
mov circle, #8 '8 bits
'sending cirlce
send_loop mov calc, sndByte
and calc, #$80
cmp calc, #0 wz
or outa, mosi
if_z andn outa, mosi
or outa, clock
shl sndByte, #1
andn outa, clock
cmpsub circle, #1 wz, wr
if_nz jmp #send_loop
shr sndByte, #8
sendSD_ret retКривоват немного, но я сначала всегда больше для наглядности пишу, чем для скорости.
инициализирую:
Код: Выделить всё
or dira, pins_out 'set pins on out
or outa, pins_st 'set 1 on start out pins
mov sym, #100 '100 cyclres by 8 bit
''initializing SD in SPI
clk_loop mov sndByte, #$FF
call #sendSD
cmpsub sym, #1 wr, wz
if_nz jmp #clk_loop
andn outa, cs1 'set NS to 0
andn outa, cs2
mov sndByte, #$40
call #sendSD
mov sndByte, #$00
call #sendSD
call #sendSD
call #sendSD
call #sendSD
mov sndByte, #$95
call #sendSDДальше жду ответа, но карточка молчит
Собираю самопальный мини-компьютер