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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Держит паяльник хвостом
Аватара пользователя
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Сообщение SubDia »

SII писал(а):Тогда уже не с БИОС, а с параметрами БИОС Сетуп.
Да-да, именно это и имелось в виду.
Jack_A писал(а):В TQFP тоже разок пробовал, работало, но повторить еще раз не хочется - геморрно чересчур.
Я тоже не считаю, что это уж очень полезный опыт. Производитель и так сделал для меня максимум - обеспечил удобными выводами. А уж если я их сломал, то, как говорится, сам себе злой буратин. =))
Jack_A писал(а):Тогда жизнь становится еще краше : перейти на внутреннее тактирование
Кстати, вот на что я не обратил внимание - так это на то, что проблемы-то начались как раз после перехода с внутреннего тактирования на внешнее. Нет бы сразу сообразить, и сходу решить проблему, так нет - полночи кварцы с кондерами перепаивал, да на SCK жмакал шилом.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

А вот скажите мне други такую вещь: прошил заводскую мегу16 фьюзами на внешнее тактирование CKSEL3..0= 0000 SUT10= 00. Ошибся. Естественно заткнулась. - Хех!- подумал я. - Это ж мы поправим как два пальца. Беру мегу64, шью ее на тупо качать частоту на PD2(выход), подцепляю к XTAL1 меги16, включаю. -А вот тебе на воротник,- говорит мне 16-ая. - Не хочу, не буду. - Ладно,-говорю я и меняю частоту, генерируемую 64-ой. - А я все равно не хочу,- отвечает 16-ая. Короче, после множества частот и попыток на следующий день по старой памяти паяю гену на CD40.. и цепляю на 16-ую. - Вот теперь тебя люблю я, вот теперь тебя хвалю я!- откликается 16-ая. Вижу ее, прошиваю фьюзы на работу с кристаллом, все хорошо. В чем прикол? Выход меги не раскачивает XTAL1?
Docendo discimus
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

вопросик:
вот сдесь, в обучалке, http://www.radiokot.ru/start/mcu_fpga/avr/08/ рассказывается о стеке и его применение................, и приводится кусок проги мигания светодиодами. Вся прога мне понятна кроме обведенной части. Какую она несет функцию, как на меня так и без нее светодиоды моргали б..........???
Изображение
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Без настройки порта В на выход ничего бы не моргало. Без настройки стека выход из подпрограммы задержки происходил бы куда попало, а не на следующую после call команду.
Docendo discimus
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

pyzh_man писал(а):Без настройки порта В на выход ничего бы не моргало.
почему ?
ведь когда я напишу
ldi Temp,0b00000001
out PortB,Temp
то и так должно все замигать :dont_know:
pyzh_man писал(а):Без настройки стека выход из подпрограммы задержки происходил бы куда попало, а не на следующую после call команду
почему ?
что при использованиии rcall и ret обязательно должен быть стек ?
Tell Me The Truth
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Назначение DDRB не знаете?
Как работают rcall и ret не прочитали?

Вы что, в теории все изучаете? Паяльник в розетку и пробовать!
Docendo discimus
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

pyzh_man писал(а):Назначение DDRB не знаете?
это регистр вывода, что будет записано в нем, то будет и на соответствующих ножках.
pyzh_man писал(а):Как работают rcall и ret не прочитали?
первая команда вызывает подпрограмму а вторая возвращает рабочую точку на сроку ниже за вызовом.....
pyzh_man писал(а):Вы что, в теории все изучаете?
я думаю что надо сначала понять как оно работает в теории, чтобы меньше вопросов было когда оно не заработает на практике.........
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

FreshMan писал(а):это регистр вывода, что будет записано в нем, то будет и на соответствующих ножках.
А зачем тогда PORTB?
FreshMan писал(а):первая команда вызывает подпрограмму а вторая возвращает рабочую точку на сроку ниже за вызовом.....
А сам процесс вызова и возврата? И что такое рабочая точка?
FreshMan писал(а):я думаю
Не надо думать, надо делать. Думать будете потом. Осознавать. :)
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

pyzh_man писал(а):А зачем тогда PORTB?
извиняюсь перепутал: DDRX говорит какой канал настроен на ввод а какой на вывод............
FreshMan писал(а):А сам процесс вызова и возврата?
я понимаю так, что когда МК видит директиву rcall Vasja то он безпрекословно, сломя голову переносит рабочую точку к метке Vasja, выполняет все что за ней следует и встретив команду ret возвращает рабочую точку обратно...........
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

FreshMan писал(а):DDRX говорит какой канал настроен на ввод а какой на вывод....
Ну, теперь-то сложилось?
FreshMan писал(а):возвращает рабочую точку обратно...
А куда и самое главное где "обратно" он помнит?
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

pyzh_man писал(а):Ну, теперь-то сложилось?
это я муже понял :))
pyzh_man писал(а):А куда и самое главное где "обратно" он помнит?
хм....... :dont_know: ...............непонял........ :dont_know: ............. а как ему это стек укажет ? :dont_know:
Tell Me The Truth
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

FreshMan писал(а):а как ему это стек укажет ?
адрес возврата (адрес следующей после call команды) хранится в стеке. В стек этот адрес помещается при выполнении команды call. Поэтому указатель стека SP должен находится в ОЗУ. А чтобы не мешался под ногами, его изначально указывают в самом верху, полагая что данные, отведенные под переменные туда не доберутся(чем грешит С, но это уже совсем другая история) или стек не наползет на эти переменные.
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

ага.............., так вот тут какая петрушка :)) ...., кажется понял............., пойду переваривать :)))
спасибо, просьба не обижаться за недопонимание :))
Tell Me The Truth
lix
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 17, 2010 15:32:19
Откуда: Курган

Сообщение lix »

вопросец по динамической индикации.
есть светодиодная матрица, аноды(строки) подключены к порту C меги32. столбцы через транзисторы на общий провод. они управляются сдвиговыми регистрами 74HC164.

вот код прерывания

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

ISR(TIMER1_COMPA_vect)
{
    static uint8_t currentColumn = 0;
    // гашение текущего столбца
#ifdef CAT
    ROW_PORT = 0x00;
#else
    ROW_PORT = 0xFF;
#endif
    ROW_PORT ^= 0xFF;
    SR_CLKPULSE();  // включаем следующий столбец.
    if(currentColumn==COLUMNS)
    {
        currentColumn = 0;
        // запись единички в разряд нулевого столбца
        SR_WRITEONE();
        SR_CLR_DATALINE();
        if( flags&NEED_REFRESH_FLAG)
        {
           register uint8_t *temp;
            temp = DISPLAY;
            DISPLAY = S_BUFFER;
            S_BUFFER = temp;
            flags &= ~NEED_REFRESH_FLAG;
        }
    }
#ifdef CAT
    ROW_PORT = DISPLAY[currentColumn];
#else
    ROW_PORT = ~DISPLAY[currentColumn];
#endif
    currentColumn++;
}
вроде бы все правильно. но почему же происходит засветка соседних столбцов?
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

FreshMan писал(а):просьба не обижаться за недопонимание
Какие тут обиды. А нервные клетки и так уже не восстановить. :)
Docendo discimus
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 301
Зарегистрирован: Вс ноя 07, 2010 14:48:55
Откуда: Москва

Сообщение ximik »

Скажите а при перепрашивке мк AVR там что ни будь важное стирается?? (как например в пиках установочная константа)
Если болит голова, значит она есть!)
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

ximik писал(а):Скажите а при перепрашивке мк AVR там что ни будь важное стирается??
Сначала стирается вся память, в которую заливается прошивка (флэш, еепром), затем заливается вся прошивка. Всё.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 301
Зарегистрирован: Вс ноя 07, 2010 14:48:55
Откуда: Москва

Сообщение ximik »

Gudd-Head писал(а):Сначала стирается вся память, в которую заливается прошивка (флэш, еепром), затем заливается вся прошивка. Всё.
Если я правильно понял то мк AVR можно тупо стереть, а потом записать новую прошивку?, не записывая на листочках всяких там констант)))
Если болит голова, значит она есть!)
Грызет канифоль
Аватара пользователя
Сообщения: 271
Зарегистрирован: Пн окт 25, 2010 20:47:04
Откуда: Казахстан, Астана

Сообщение shurikss123 »

lix писал(а):вопросец по динамической индикации.
есть светодиодная матрица, аноды(строки) подключены к порту C меги32. столбцы через транзисторы на общий провод. они управляются сдвиговыми регистрами 74HC164.

вот код прерывания

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

ISR(TIMER1_COMPA_vect)
{
    static uint8_t currentColumn = 0;
    // гашение текущего столбца
#ifdef CAT
    ROW_PORT = 0x00;
#else
    ROW_PORT = 0xFF;
#endif
    ROW_PORT ^= 0xFF;
    SR_CLKPULSE();  // включаем следующий столбец.
    if(currentColumn==COLUMNS)
    {
        currentColumn = 0;
        // запись единички в разряд нулевого столбца
        SR_WRITEONE();
        SR_CLR_DATALINE();
        if( flags&NEED_REFRESH_FLAG)
        {
           register uint8_t *temp;
            temp = DISPLAY;
            DISPLAY = S_BUFFER;
            S_BUFFER = temp;
            flags &= ~NEED_REFRESH_FLAG;
        }
    }
#ifdef CAT
    ROW_PORT = DISPLAY[currentColumn];
#else
    ROW_PORT = ~DISPLAY[currentColumn];
#endif
    currentColumn++;
}
вроде бы все правильно. но почему же происходит засветка соседних столбцов?
ниче не понятно что такое SR_WRITEONE(); и SR_CLR_DATALINE();
не проще ли сделать так два сдвиговых регистра с общим clock и записывать в них одновременно.
а может надо сделать маленькую задержку(не успевает потухнуть диод)?
Последний раз редактировалось shurikss123 Пн июл 18, 2011 22:54:07, всего редактировалось 1 раз.
Изображение
Мастер на все руки, кручу, кручу, кручу и матерюсь
Повелитель паяльной станции, лома, и пинцета!!!
Друг Кота
Аватара пользователя
Сообщения: 6323
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Gudd-Head писал(а): Сначала стирается вся память, в которую заливается прошивка (флэш, еепром), затем заливается вся прошивка. Всё.
Если выставить фьюз EESAVE, то при прошивке EEPROM сохраняется.
Ответить

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