Мелкие вопросы по МК и ПЛИС.
-
Webspider163
- Родился
- Сообщения: 5
- Зарегистрирован: Чт фев 03, 2011 21:20:18
Re: Мелкие вопросы по МК и ПЛИС.
Ещё такой вопрос. у меня на контроллере висит кварц 8Мгц. Смотрю по даташиту, что передача с наименьшей ошибкой при BaudRate = 250k. Но во всех терминалах в стандартном ряду BaudRates не конкретно такого значения, а только 256k. Как быть?
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Кварц под нужную частоту поставить.
Не боды подгонять под кварц, а наоборот. Как все обычные люди.
Не боды подгонять под кварц, а наоборот. Как все обычные люди.
Docendo discimus
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
AVT-28 писал(а):я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
Возможно, слишком плавно напряжение проседает. Или не успевает просесть до лог. 0 до того как отрубается программатор.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
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 ;---//---
;---------- портов
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: Мелкие вопросы по МК и ПЛИС.
Код: Выделить всё
я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
1.контролировать нужно ацп, а не просто 0-1. Запись в еепром при пониженном напряжении - не самый легкий способ, нужно пакет обязательно закрывать контрольной суммой и дублировать его.
2. Выключить бор.
- slavokhire5
- Прорезались зубы
- Сообщения: 202
- Зарегистрирован: Пн сен 26, 2011 13:48:25
- Откуда: Харьков
Re: Мелкие вопросы по МК и ПЛИС.
подскажите пожалуйста, как сделать запись в двумерный массив в компиляторе winavr?
я думаю, как-то так. (но полюбому придется что-то допилить)
где - номера элемента массива и элемент для записи, соответственно
на сколько я далек от истины?
я думаю, как-то так. (но полюбому придется что-то допилить)
Код: Выделить всё
eeprom_write_byte(&date_mem[date_number][data_number], number);где
Код: Выделить всё
date_number, data_number, numberна сколько я далек от истины?
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
--------------------------
Пишу на Си за еду
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
AVT-28 писал(а):Как заставить проработать 16f887 еще 1-2 секунды после отключения питания устройства?
А 3 батарейки (SR626, например) от часов/калькуляторов поставить дозволяется?
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Что делать в таких случаях?
Код: Выделить всё
Error [141] C:\osa\osa.c; 37.16 can't open include file "OSA.h": No such file or directoryRe: Мелкие вопросы по МК и ПЛИС.
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: Мелкие вопросы по МК и ПЛИС.
Челюскин писал(а):Подскажите пожалуйста, у ATtiny 2313V чтобы пользоваться портом А( он трехразрядный!!!) нужно какие-то особенные команды для настройки на ввод-вывод, или все теже, что и для полноразрядных порты?
Ничего особенного не нужно.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
кто-нибудь собирал это: http://cxem.net/mc/mc9.php
Меня интересует прошивка МК, ну или хотя бы помощь в разработке, потому как с автором этого устройства у меня связатся не получается
Меня интересует прошивка МК, ну или хотя бы помощь в разработке, потому как с автором этого устройства у меня связатся не получается
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Не зная формата мелодии и протокола вписывания оной в мк, бяку придется делать с нуля.
Docendo discimus
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
ploop писал(а):Искать файл "OSA.h" видимо...
Дык он в той же папке прячется...
Re: Мелкие вопросы по МК и ПЛИС.
Имя файла точно заглавными буквами написано? Расширение точно .h ?
Этот пост оказался полезен? Не поленись, нажми
слева!

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>
Нужно ли подключать его в виде #include <osa.h>
Re: Мелкие вопросы по МК и ПЛИС.
urry писал(а):Код: Выделить всё
я контролирую выводом RA5 питание общей шины до этого диода.
И как тока там 0, прога за эти 1 сек записывает установки аппарата.
Если в ручную выдергивать перемычку и создавать 0 на выводе, то все работает.
1.контролировать нужно ацп, а не просто 0-1. Запись в еепром при пониженном напряжении - не самый легкий способ, нужно пакет обязательно закрывать контрольной суммой и дублировать его.
2. Выключить бор.
Я немного не понял наверное. У меня RA5 настроен как цифровой вход, не как аналоговый. Как понять АЦП контролировать?
Конденсатора сто пудово хватает на 3 сек до 2 вольт сажается.
До кондера и до диода падает мгновенно.
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
я через каждые 10 мс смотрю через ацп напряжение на конденсаторе до диода. Когда оно меньше порога, отключаю все нагрузки и веду запись.
Записываю 3 идентичных блока в еепром и каждый закрывается контрольной суммой.
при включении считаю контрольную сумму и если совпадает - результату верить
Еще - нагрузка кренки такой емкостью ведет к постепенному ее убиванию большим стартовым током (в момент включения). Нужно принимать определенные меры для защиты - скажем, резистор ом 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: Мелкие вопросы по МК и ПЛИС.
Chettuser писал(а):Осваиваю OSA для PIC'ов.
...
ЗЫ: Ах да! Компилятор у меня PRO mode. А в инструкции чтото писалось про STD.
В инструкции указано, что OSA не будет работать с ПРО-версиями компилятора (не важно, в PRO-mode или в STD-mode)
- testerplus
- Встал на лапы
- Сообщения: 130
- Зарегистрирован: Пн авг 24, 2009 10:41:16
- Откуда: SPb
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Chettuser писал(а):Без разницы - большими или маленькими, та же ошибка, на всякий случай исправил на маленькие. Точно osa.h.
Нужно ли подключать его в виде #include <osa.h>
Эти требования выполнены? (особенно п.4)
Re: Мелкие вопросы по МК и ПЛИС.
кто знает наверняка у PIC16F874 ROM=4 килобайта или килослова ??? 

Tell Me The Truth