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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
danger3466
Встал на лапы
Сообщения: 135
Зарегистрирован: Ср дек 21, 2011 12:18:39

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

Сообщение danger3466 »

Коты, есть зацепка, watchdog! Сейчас выключил его фьюзом, нужно его дополнительно выключать программно?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

Нет.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
danger3466
Встал на лапы
Сообщения: 135
Зарегистрирован: Ср дек 21, 2011 12:18:39

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

Сообщение danger3466 »

Интересно... Тогда какого рожна я получаю заместо одного кучу символов
В основном '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: Мелкие вопросы по МК и ПЛИС.

Сообщение danger3466 »

Нашел хороший софт Terminal v1.9b, в нем можно HEX смотреть, вот что мне приходит:

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

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 43

0x43 преобладает. Йоху!
Только больно много символов :(

Может оптимизация как то влияет?
Аватара пользователя
Sceam73
Встал на лапы
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 21:07:09

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

Сообщение Sceam73 »

Ребята, у меня пара вопросов по прерываниям, уже 3й день немогу с ними разобраться, возможно вопросы глуповаты, но всеже
1) Можно ли править регистры таймеров и прерываний 2чным кодом тоесть вместо сдвигов использовать =1010101
2) Как определить, какое именно обьявление прерывания использовать, вот у меня пример interrupt [EXT_INT0] void ext_int0_isr(void)
насколько я понял это прерывание по переполнению, обьясните пожалуйста, что значят фразы после interrupt....
И где можно узнать, какого вида должно быть такое обьявление, если мне например нужно прерывание по совпадению таймера!
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

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

Сообщение SmarTrunk »

1.В регистр можно записать число. Но вариант с представлением этого числа "в виде сдвигов" считается более наглядным.
Аватара пользователя
Sceam73
Встал на лапы
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 21:07:09

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

Сообщение Sceam73 »

незнаю даже почему это нагляднее, как помне это лишняя информация
а что по 2му вопросу?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

interrupt [EXT_INT0] void ext_int0_isr(void)

Прерывание[внешнее_от_лапки_INT0] не параметрируемое Название (без параметров). А искать описание объявлений всех прерываний в хелпе к кодевижену.
Docendo discimus
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

незнаю даже почему это нагляднее, как помне это лишняя информация
Странные люди что может сказать человеку
REGISTER =0b10100101;
,в то время как
REGISTER =(1<<BIT0)| (1<<BIT2)| (1<<BIT5)| (1<<BIT7);
Точно говорит читающему, что биты 0,2,5,7 установлены,остальные сброшены.Причем биты именованные и не нужно заглядывать в даташит под каким номером идет нужный бит.
Аватара пользователя
Sceam73
Встал на лапы
Сообщения: 86
Зарегистрирован: Вт авг 28, 2012 21:07:09

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

Сообщение Sceam73 »

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

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

Сообщение vitalik_1984 »

Сдвиги использовать вовсе не обязательно, но это довольно таки удобно. В общем случае в начале инициализации CVAVR сам прописывает нужные константы, а вот вы в своем коде уже можете со сдвигами баловаться.
Только есть как всегда подводные камни.Для того, чтобы сдвиги заработали в CVAVR нужно поставить в свойствах проекта галку "IO bits definitions"( вроде так называется.)
Студия отлично сдвиги понимает достаточно подключить
#include "avr/io.h"

PS
вы мне помогаете на протяжении всего моего пути програмирования контролеров, большое вам за это спасибо

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

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

Сообщение black_lizard »

Здравствуйте. Помогите пожалуйста с SD картой. Никак не могу понять в чём проблема. Контроллер - parallax propeller

Суть в том, что карточку не берут ни стандартные либы, ни мой ассемблерный код. Сначала использовал слот для карт, потом припаял карту к плате, потом подумал, что уже её сжёг к чертям - отпаял и вставил в ноут - пашет. Вернул в проект - не пашет. Не отвечает на любые команды вообще, просто молчит. Может быть кто подскажет, в чём может быть проблема? Судя по всему, она в самом железе, а не в коде, но идеи просто отсутствуют, тк уже и резисторами её к питанию подтянул, как в интернете советуют и прозвенел все соединения по 10 раз - толку нет. Единственный оставшийся вариант - не хватает питания, но не знаю, как это проверить.

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

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

Сообщение Arlleex »

Вольтметром померяйте напряжение питания. Напишите сюда. Схема включения должна быть примерно такой (см. картинку).
Возможно вы неверно соединили линии MISO и MOSI.
MISO----->MISO
MOSI----->MOSI - так должно быть.
Ну и код программы хотя бы в студию. А может и в инициализации портов что-то не то, в результате чего карточка и не реагирует :)
Вложения
Безымянный.jpg
(39.27 КБ) 382 скачивания
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
black_lizard
Встал на лапы
Сообщения: 132
Зарегистрирован: Вс сен 23, 2012 05:51:35

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

Сообщение black_lizard »

Вольтметром померяйте напряжение питания. Напишите сюда. Схема включения должна быть примерно такой (см. картинку).


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: Мелкие вопросы по МК и ПЛИС.

Сообщение black_lizard »

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

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

Сообщение Arlleex »

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

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

Сообщение HHIMERA »

Arlleex писал(а):Возможно вы неверно соединили линии MISO и MOSI.
MISO----->MISO
MOSI----->MOSI - так должно быть.

Бред!!! :)))
Нет у SD ни MISO, ни MOSI !!! :)))
Есть DI и DO !!!
SD не может быть мастером... по определению... по сути своей...

MISO----->DO
MOSI----->DI - вот так должно быть.

И на картиночке... Подтягивать CS к земле... да ещё через 1 МОм... :)))
Народ... вы чё??? Конец света досрочно справлять начали... или Новый Год??? :)))
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Arlleex писал(а):Странное поведение... Никогда не замечал такого.

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

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

Сообщение black_lizard »

Пробуйте все-таки с питанием разобраться, без осциллографа сложнова-то будет. Тыкните им на вывод питания что там за картина?


Был бы он - было бы понятнее, что там с питанием.

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: Мелкие вопросы по МК и ПЛИС.

Сообщение black_lizard »

Вот мой ассемблерный код на отправку байта:
''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


Дальше жду ответа, но карточка молчит
Собираю самопальный мини-компьютер
Ответить

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