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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Webspider163
Родился
Сообщения: 5
Зарегистрирован: Чт фев 03, 2011 21:20:18

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

Сообщение Webspider163 »

Ещё такой вопрос. у меня на контроллере висит кварц 8Мгц. Смотрю по даташиту, что передача с наименьшей ошибкой при BaudRate = 250k. Но во всех терминалах в стандартном ряду BaudRates не конкретно такого значения, а только 256k. Как быть?
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

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

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

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

AVT-28 писал(а):я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.

Возможно, слишком плавно напряжение проседает. Или не успевает просесть до лог. 0 до того как отрубается программатор.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

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

Сообщение Челюскин »

Подскажите пожалуйста, у ATtiny 2313V чтобы пользоваться портом А( он трехразрядный!!!) нужно какие-то особенные команды для настройки на ввод-вывод, или все теже, что и для полноразрядных порты? Вот так например правильно будет:
;---------- портов
ldi temp, 0b00000111 ;
out DDRA, temp ;порт А на вывод
ldi temp, 0 ;
out DDRB, порт Б на ввод
out DDRD, порт Д на ввод
out PORTA, temp ;вывод в порт А лог. 0
ldi temp, $FF ;
out PORTB, temp ;включ. резисторы
out PORTD, temp ;---//---
Лень - двигатель прогресса!
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

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

я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.

1.контролировать нужно ацп, а не просто 0-1. Запись в еепром при пониженном напряжении - не самый легкий способ, нужно пакет обязательно закрывать контрольной суммой и дублировать его.
2. Выключить бор.
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

подскажите пожалуйста, как сделать запись в двумерный массив в компиляторе winavr?
я думаю, как-то так. (но полюбому придется что-то допилить)

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

eeprom_write_byte(&date_mem[date_number][data_number], number);

где

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

date_number, data_number, number
- номера элемента массива и элемент для записи, соответственно
на сколько я далек от истины?
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Chettuser

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

Сообщение Chettuser »

AVT-28 писал(а):Как заставить проработать 16f887 еще 1-2 секунды после отключения питания устройства?

А 3 батарейки (SR626, например) от часов/калькуляторов поставить дозволяется?
Chettuser

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

Сообщение Chettuser »

Что делать в таких случаях?

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

Error   [141] C:\osa\osa.c; 37.16 can't open include file "OSA.h": No such file or directory
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Chettuser писал(а):
AVT-28 писал(а):Как заставить проработать 16f887 еще 1-2 секунды после отключения питания устройства?

А 3 батарейки (SR626, например) от часов/калькуляторов поставить дозволяется?

Смотря какая нагрузка, а то и электролита хватит.

Chettuser писал(а):Что делать в таких случаях?

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

Error   [141] C:\osa\osa.c; 37.16 can't open include file "OSA.h": No such file or directory

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

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

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

Челюскин писал(а):Подскажите пожалуйста, у ATtiny 2313V чтобы пользоваться портом А( он трехразрядный!!!) нужно какие-то особенные команды для настройки на ввод-вывод, или все теже, что и для полноразрядных порты?

Ничего особенного не нужно.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Likus
Родился
Сообщения: 3
Зарегистрирован: Пт окт 14, 2011 09:38:22

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

Сообщение Likus »

кто-нибудь собирал это: http://cxem.net/mc/mc9.php
Меня интересует прошивка МК, ну или хотя бы помощь в разработке, потому как с автором этого устройства у меня связатся не получается :(
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Не зная формата мелодии и протокола вписывания оной в мк, бяку придется делать с нуля.
Docendo discimus
Chettuser

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

Сообщение Chettuser »

ploop писал(а):Искать файл "OSA.h" видимо...

Дык он в той же папке прячется... :?
Аватара пользователя
*Trigger*
Друг Кота
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

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

Сообщение *Trigger* »

Имя файла точно заглавными буквами написано? Расширение точно .h ?
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Chettuser

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

Сообщение Chettuser »

Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

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

Сообщение AVT-28 »

urry писал(а):

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

я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.

1.контролировать нужно ацп, а не просто 0-1. Запись в еепром при пониженном напряжении - не самый легкий способ, нужно пакет обязательно закрывать контрольной суммой и дублировать его.
2. Выключить бор.

Я немного не понял наверное. У меня RA5 настроен как цифровой вход, не как аналоговый. Как понять АЦП контролировать?
Конденсатора сто пудово хватает на 3 сек до 2 вольт сажается.
До кондера и до диода падает мгновенно.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

я через каждые 10 мс смотрю через ацп напряжение на конденсаторе до диода. Когда оно меньше порога, отключаю все нагрузки и веду запись.
Записываю 3 идентичных блока в еепром и каждый закрывается контрольной суммой.
при включении считаю контрольную сумму и если совпадает - результату верить
Еще - нагрузка кренки такой емкостью ведет к постепенному ее убиванию большим стартовым током (в момент включения). Нужно принимать определенные меры для защиты - скажем, резистор ом 10 последовательно с диодом.

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

extern   gVarsSave_ gVarsSave; 
#define EE_ADR0 10
#define EE_ADR1 40
#define EE_ADR2 70
#define TEST0  0
#define TEST1  1
#define TEST2  2
#define TEST_ALL  ((1<<TEST0) + (1<<TEST1) + (1<<TEST2))
//       прототипы функций
void fnEpReadArr(unsigned char cAdr);
void fnEpSaveArr(unsigned char cAdr);
//----------
unsigned char fnCalcCrc (unsigned char *cArr, unsigned char cCount)
{
   unsigned char i,data,crc,fb,st_byt;
   st_byt=0;
   crc=0;
   do{
      data=cArr[st_byt];
      for (i=0;i<8;i++)// счетчик битов в байте
      {
         fb =crc  ^ data;
         fb&=1;
         crc >>= 1;     
         data >>=1;
         if (fb == 1)crc^=0x8c;// полином, dallas
      }
      st_byt++;
   }while  (st_byt != cCount);// счетчик байтов в массиве
   return crc;
}
//----------

void fnEepRead(void)
{
   volatile   unsigned char cAdr;
   volatile   unsigned char crcL,crcRez;
   //----------
   crcRez=0;
   // проверка 1 записи
   cAdr=EE_ADR0;
   fnEpReadArr(cAdr);
   crcL=Read_b_eep(EE_ADR0+gVarMax);
   if((fnCalcCrc (gVarsSave.cArr,gVarMax) == crcL))
   {
      BITSET(crcRez,TEST0);
   }
   // повторяем  для всех трех записей
   cAdr=EE_ADR1;
   fnEpReadArr(cAdr);
   crcL=Read_b_eep(EE_ADR1+gVarMax);
   if((fnCalcCrc (gVarsSave.cArr,gVarMax) == crcL))
   {
      BITSET(crcRez,TEST1);
   }
   // повторяем  для всех трех записей
   cAdr=EE_ADR2;
   fnEpReadArr(cAdr);
   crcL=Read_b_eep(EE_ADR2+gVarMax);
   if((fnCalcCrc (gVarsSave.cArr,gVarMax) == crcL)) 
   {
      BITSET(crcRez,TEST2);
   }

   if(!crcRez)
   {
      gVarsSave.Var.lSoftMax=lSoftMaxDef;
      gVarsSave.Var.lHardMax=lHardMaxDef;
      gVarsSave.Var.TmSoftMax=TmSoftMaxDef;
      gVarsSave.Var.TmHardMax=TmHardMaxDef;
      gVarsSave.Var.lCurSoft=lCurSoftDef;
      gVarsSave.Var.lCurHard=lCurHardDef;
      gVarsSave.Var.lCap=lCapDef;
      fnEepSave();
   }
   if(crcRez == TEST_ALL){return;}// все хорошо считалось, переписывать не нужно
   else
   {
      if(BITTST1(crcRez,TEST0))
      {
         cAdr=EE_ADR0;
         fnEpReadArr(cAdr);
         fnEepSave();
         return;
      }

      if(BITTST1(crcRez,TEST1))
      {
         cAdr=EE_ADR1;
         fnEpReadArr(cAdr);
         fnEepSave();
         return;
      }
      if(BITTST1(crcRez,TEST2))
      {
      cAdr=EE_ADR2;
      fnEpReadArr(cAdr);
      fnEepSave();
      return;
      }
   }
}
//----------
void fnEpReadArr(unsigned char cAdr)
{
   unsigned char i;
   for(i=0;i<gVarMax;i++)
   {
      gVarsSave.cArr[i]=Read_b_eep(cAdr+i);
   }
}
//----------
void fnEpSaveArr(unsigned char cAdr)
{
   char crc;
   unsigned char i;
   for(i=0;i<gVarMax;i++)
   {
      Write_b_eep(cAdr+i, gVarsSave.cArr[i]);
   }
   crc=fnCalcCrc (gVarsSave.cArr,gVarMax);
   Write_b_eep(cAdr+gVarMax, crc);
}
//----------
void fnEepSave(void)
{
   unsigned char cAdr;
   cAdr=EE_ADR0;
   fnEpSaveArr(cAdr);
   cAdr=EE_ADR1;
   fnEpSaveArr(cAdr);
   cAdr=EE_ADR2;
   fnEpSaveArr(cAdr);
}
//----------
Аватара пользователя
testerplus
Встал на лапы
Сообщения: 130
Зарегистрирован: Пн авг 24, 2009 10:41:16
Откуда: SPb
Контактная информация:

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

Сообщение testerplus »

Chettuser писал(а):Осваиваю OSA для PIC'ов.
...
ЗЫ: Ах да! Компилятор у меня PRO mode. А в инструкции чтото писалось про STD.

В инструкции указано, что OSA не будет работать с ПРО-версиями компилятора (не важно, в PRO-mode или в STD-mode)
Аватара пользователя
testerplus
Встал на лапы
Сообщения: 130
Зарегистрирован: Пн авг 24, 2009 10:41:16
Откуда: SPb
Контактная информация:

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

Сообщение testerplus »

Chettuser писал(а):Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>

Эти требования выполнены? (особенно п.4)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

кто знает наверняка у PIC16F874 ROM=4 килобайта или килослова ??? :dont_know:
Tell Me The Truth
Ответить

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