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

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

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

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

ploop писал(а):Ноги надо раздвигать, а соединять - выводы. :)

Выводы надо формулировать, а соединять — пины :))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

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

Сообщение pirotehnick »

Есть вопрос по контроллеру LPC1768.
Хочу уточнить назначение регистра FIOPIN. Правильно ли я понял из даташита, что при записи в этот регистр измениться состояние ног порта в соответствии с заданным значением. Дело в том, что для задания уровня сигнала на выводах порта используются регистры FIOSET и FIOCLR. Т.е., если порт настроен на выход, использование регистра FIOPIN для управления уровнями сигналов на выводах порта будет эквивалентно использованию регистров FIOSET и FIOCLR?
Из даташита так же узнал, что при чтении регистра FIOPIN, получаем значение реального состояния выводов порта. Довольно интересно получается.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

Gudd-Head писал(а):Выводы надо формулировать, а соединять — пины :))

ПИНы надо в телефон вводить и в паспорте узнавать, а соединять надо контакты МК. :)))
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

ПИНы надо в телефон вводить и в паспорте узнавать, а соединять надо контакты МК.

Контакты есть у реле, тумблеров, и прочих кнопок. У МК - нет.
Пины - не по-русски, выводы не формулируются (по пятницам), ноги тоже плохо двигаются, короче так: "лепесток для монтажа методом пайки"! и я спать пошел.
FFAMax
Родился
Сообщения: 11
Зарегистрирован: Вс ноя 14, 2010 16:23:22

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

Сообщение FFAMax »

Берем BGA и фиг Вам, а не лепестки и тычинки :-)
Коль тут такие абстрактные темы поднимаются, тоже задам дурацкий вопрос.
По каким соображения тиньки(13) с завода идут 8Мгц, а атмеги128 - 1 Мгц?
Ведь были же какие-то на это причины?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

FFAMax писал(а):По каким соображения тиньки(13) с завода идут 8Мгц, а атмеги128 - 1 Мгц?

Предположу что у Меги больше ядро, и оно больше жрёт на высоких частотах: Тини13 на 8 МГц 5 мА, Мега128 на 8 МГц около 17 мА, около 3 мА на 1 МГц (при 5 В).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение avreal »

Все идут на (около) 1 MHz.
Только у mega128 четыре четыре комбинации CKSEL для внутреннего RC и с завода 1 MHz
А у tiny13 две комбинации, с завода генератор на 9.6 и CKDIV8=0, результат 1.2 MHz.
У mega168 одна частота внутреннего калиброванного RC -- 8MHz и CKDIV8=0, результат 1 MHz.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Лютик
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Вт мар 25, 2008 22:10:23
Откуда: Минск

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

Сообщение Лютик »

скажите, что неправильно делаю?
контроллер pic16f628a, написал прошивку, все работает, решил запустить watchdog, настроил предделитель на ~1 секунду, поставил предделитель перед WDT, поставил галку в конфигурации(см. аттач), ну и обнуление таймера в коде тоже не забыл, однако контроллер ведет себя не правильно, отображает чепуху на дисплей(семисегментный), в чем дело?
есть подозрения, что для сброса от watchdog'а ногу mclr также необходимо кидать через резистор на +Е
[img]http://radiokot.ru/forum/download/file.php?
mode=view&id=75476&sid=93d35edf347e33ac623a7f1162ed05a4[/img]
Вложения
pic16.JPG
(110.94 КБ) 271 скачивание
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

MCLR нужно подключить к питанию через 10 кОм (или около того).
Никакой связи между аппаратным сбросом и вачдогом нет.
Абракадабру Ваше устройство отображает по вполне осязаемым ошибкам в коде.
...
Нужен код.
:)
pavlo!
Открыл глаза
Сообщения: 58
Зарегистрирован: Пн май 30, 2011 14:14:44
Откуда: малоярославец
Контактная информация:

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

Сообщение pavlo! »

добрый день. подскажите, если в этой схеме (http://cxem.net/mc/mc33.php) использовать индикаторы с ОК (сдесь есть прошивка для ОК http://eldigi.ru/site/term/13.php) подлючение индикатора к мк меняется? или все так же?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

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

pavlo! писал(а):подлючение индикатора к мк меняется?

По идее, не должно. Ё-моё, нафига там 20 МГц??? :shock:
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

И почему нет токоограничительных резисторов?
pavlo!
Открыл глаза
Сообщения: 58
Зарегистрирован: Пн май 30, 2011 14:14:44
Откуда: малоярославец
Контактная информация:

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

Сообщение pavlo! »

ploop писал(а):И почему нет токоограничительных резисторов?


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

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

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

pavlo! писал(а):это сделано с целью экономии места. а так как индикация динамическая то сгореть индикаторы просто не успевают

Угу. Вот зависнет МК, и тогда сгорят. Хотя, конечно, может сработать защита выходного буфера порта — я не знаю какой у ПИКов максимальный входной/выходной ток.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
pavlo!
Открыл глаза
Сообщения: 58
Зарегистрирован: Пн май 30, 2011 14:14:44
Откуда: малоярославец
Контактная информация:

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

Сообщение pavlo! »

Gudd-Head писал(а):
pavlo! писал(а):это сделано с целью экономии места. а так как индикация динамическая то сгореть индикаторы просто не успевают

Угу. Вот зависнет МК, и тогда сгорят. Хотя, конечно, может сработать защита выходного буфера порта — я не знаю какой у ПИКов максимальный входной/выходной ток.


где то читал что у 628ой около 100ма
Лютик
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Вт мар 25, 2008 22:10:23
Откуда: Минск

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

Сообщение Лютик »

КРАМ писал(а):MCLR нужно подключить к питанию через 10 кОм (или около того).
Никакой связи между аппаратным сбросом и вачдогом нет.
Абракадабру Ваше устройство отображает по вполне осязаемым ошибкам в коде.
...
Нужен код.
:)

я же говорю, что код до вочдога работал стабильно,а после включения нет.
ногу mclr использовал как i/o(стоит кнопка), так что никаких резисторов на + не вешал.
код на 1819 слов выкладывать не буду, так как там все верно, да и в моих дебрях вам сложно будет разобраться.
вочдог поставил на ~1 секунду, а обнуляю с частотой ~500Гц(в цикле обработки отображения на семиссегментный индикатор)

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

OPTION = 0b00001110;    // TMR0 on, 1:1 prescale, WDT 1:64 (1.152 sec)


все, вроде разобрался, ошиька была в том., что в прерывании поставил запись в ипром, что противоречиво
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Лютик писал(а): .......ногу mclr использовал как i/o(стоит кнопка), так что никаких резисторов на + не вешал.
........
все, вроде разобрался, ошиька была в том., что в прерывании поставил запись в ипром, что противоречиво


Так все таки код... :)))
Нога сброса может быть только ВХОДОМ. Поэтому приводить аббревиатуру in/out неправильно. Впрочем использована она у Вас правильно - как вход. И подтяжка какая то должна быть у этого пина (либо к питанию, либо к земле). Иначе кнопка работать не будет.
Лютик
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Вт мар 25, 2008 22:10:23
Откуда: Минск

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

Сообщение Лютик »

КРАМ писал(а):
Лютик писал(а): .......ногу mclr использовал как i/o(стоит кнопка), так что никаких резисторов на + не вешал.
........
все, вроде разобрался, ошиька была в том., что в прерывании поставил запись в ипром, что противоречиво


Так все таки код... :)))
Нога сброса может быть только ВХОДОМ. Поэтому приводить аббревиатуру in/out неправильно. Впрочем использована она у Вас правильно - как вход. И подтяжка какая то должна быть у этого пина (либо к питанию, либо к земле). Иначе кнопка работать не будет.


подтяжка через резистор стоит(так как внутренняя только на порт Б стоит). я читал даташит и в курсе, что это только вход(на это обратил внимании при синтезе схемы), просто сейчас я на это не обращаю внимание, так как забыл что за нога, вот и пишу что вход/выход.
а проблема действительно с кодом, удивительно что еще перепроверил

еще бы хотелось поинтересоваться как работать с PWRTE и BOREN, а именно BOREN, но в даташите написано, что обязательно в таком случае надо включать PWRTE.
Включил PWRTE и BOREN - мк в постоянном ресете ли тип того. надо чтото еще в коде делать или этого остаточно, тогда непонятно почему ресетит мк..
FFAMax
Родился
Сообщения: 11
Зарегистрирован: Вс ноя 14, 2010 16:23:22

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

Сообщение FFAMax »

Господа, касательно вопроса TWI (I2C), который был у меня выше.
Перечитывая всевозможные примеры, в частности на http://telestyle.ru/index.php?productID=2888, обратил внимание на повторную установку
TWCR = (1<<TWEN)|(1<<TWINT)
после передачи адреса с флагом чтения.

Получается такая суть должна быть:
TWDR = address|(1<<0)
TWCR = (1<<TWEN)|(1<<TWINT)
и еще раз после получения ACK
TWCR = (1<<TWEN)|(1<<TWINT)
для продолжения тактирования SCL, данные от EEPROM и потекут.
Конечно, опыт "копания" несомненно был полезен, там же еще узнал про нюансы со скоростями, про то, что на низких не все девайсы могут линию зажимать.
Ах да, поздравьте с приобретением АЙП usb3000, будем теперь 3Мгц дебажить :)


Повествование на этом закончилось... начались вопросы.. куда уж без них...
Это все к той же теме про ASM vs C..
значитс есть конструкция PORTA.0 = 1
а можно PORTA |= 1
а для сброса я использовал
PORTA &= ~(1<<0);
наравне с
PORTA.0 = 0;

я как-то попытался аналогичную конструкцию на PORTD (на ногах SCL SDA) использовать, одну ногу дергаю, а он другую тоже дергает, брр... подумал я.. благо usb3000 не позволил мне терять на этом много времени, сразу предупредив о неверном логе на второй ноге. Полез в ASMокод, сгенерированный CodeVisionAVR (можно обливать грязью и предлагать альтернативы, я на нем начинал, так и продолжаю), там CBI SBI используются в конечном счете.
А далее в даташите меги нашел строки, в которых про эти команды сказано, что установа бит с помощью этих команд может привести к изменению значение других бит, что и произошло с портом D и не происходило с портом A.
Таки возвращаясь к вопросу, понятно, что ввиду хардварных особенностей такое может быть, но я не нашел какие конкретно пины можно безопасно так дергать, а какие нет, может кто знает?

Ибо в свете всплывшего глюка (мегу 128 мучал, кстати), вижу один вариант - это присваивать значение порта переменной, ее изменять, а только потом всему порту присваивать значение переменной. Это какой-то не true-way, но должен спасти от подобных накладок. Кто что думает на этот счет? Кто как битами правит?

Правда ведь, что никакой proteus не воспроизведет эту проблему, она исключительно хардварная?
Аватара пользователя
DimanVIP
Мучитель микросхем
Сообщения: 474
Зарегистрирован: Вт июн 01, 2010 22:12:07
Откуда: Тольятти
Контактная информация:

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

Сообщение DimanVIP »

Особо ничего не понял, но похоже что проблема не хардварная и симулится везде.

Для управления отдельными битами (пинами порта) использую такие конструкции:

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

#define Bit(bit)  (1<<(bit))

#define ClearBit(reg, bit)       reg &= (~(1<<(bit)))
//пример: ClearBit(PORTB, 1); //сбросить 1-й бит PORTB

#define SetBit(reg, bit)          reg |= (1<<(bit))
//пример: SetBit(PORTB, 3); //установить 3-й бит PORTB

#define SetBitVal(reg, bit, val) do{if ((val&1)==0) reg &= (~(1<<(bit)));\
                                  else reg |= (1<<(bit));}while(0)
//пример: SetBitVal(PORTB, 3, 1); //установить 3-й бит PORTB
//     SetBitVal(PORTB, 2, 0); //сбросить 2-й бит PORTB

#define BitIsClear(reg, bit)    ((reg & (1<<(bit))) == 0)
//пример: if (BitIsClear(PORTB,1)) {...} //если бит очищен

#define BitIsSet(reg, bit)       ((reg & (1<<(bit))) != 0)
//пример: if(BitIsSet(PORTB,2)) {...} //если бит установлен

#define InvBit(reg, bit)     reg ^= (1<<(bit))
//пример: InvBit(PORTB, 1); //инвертировать 1-й бит PORTB
[img]http://nekuru.com/images/DimanVIP/t2.png[/img]
Ответить

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