Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Закрытая тема
Опции темы
Непрочитано 06.10.2012, 10:01   #911
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от ut1wpr Посмотреть сообщение
3. "Увидеть" изменение аналоговой величины можно ТОЛЬКО имея АЦП включенным.
Если использовать связку АЦП-ЦАП одной разрядности с общей опорой и два компаратора на дельта- и дельта+, то можно именно увидеть эту дельту во сне.

OFF. Каким кофе пользуетесь для определения чужой задачи?
Реклама:
omercury вне форума  
Непрочитано 06.10.2012, 18:47   #912
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от omercury Посмотреть сообщение
Если использовать связку АЦП-ЦАП одной разрядности с общей опорой и два компаратора на дельта- и дельта+, то можно именно увидеть эту дельту во сне.
Эк куда занесло. Кто ж против такой схемы возражает? Удобно. Если ЦАП внешний и будет держать пороги на время сна МК. Меня тут вроде одернули Мегой изначально автором оговоренной, мол не выдумывай про иные МК. Я и отошел. А тут... Два компаратора! Фиксация опоры после каждого измерения! Круто! Как раз для этой Меги.

Цитата:
OFF. Каким кофе пользуетесь для определения чужой задачи?
Дык без кофе шаманим. Казус (вернее отдельные его мемберы) нас всех постепенно ясновидящими делает.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 06.10.2012, 19:03   #913
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Вообщем понятно что дело дрянь((
Соль задачи и вправду экономить акум, ...
и пробудится при изменении положения обьекта, среагировать на движение.
Нашол статейку о цифровых ACC с микропотреблением и способностью генерировать преривание, тоисть с сигнальным выводом при начале движения, может кто подскажет чего о этом звере
MMA8450Q
нашол в продаже, и что то у него не большая разница с тем что я думал юзать
ADXL325JCP
Судя по прикидках могу уснуть, предварительно запрограмировав по I2c, и пробудится от внешнего преривания
Может кто с таким зверем работал, Может и библиотечка завалялась))
papa_n вне форума  
Непрочитано 06.10.2012, 19:38   #914
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от papa_n Посмотреть сообщение
Вообщем понятно что дело дрянь((
Зачем так торопиться с выводами? Объясните, что за задача? Транспортное средство? Хотите отловить начало движения или именно "изменение положения"? Решения-то разные.
Если задача - отловить начало движения, то какое ускорение нужно отловить? Каковы требования к точности отлова координат и времени начала движения? Не космические же там точности нужны...
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 08.10.2012, 11:15   #915
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Задача определить начало движения.
Но, будет 2 режима, первый это в активном состоянии отслеживать есть или нету движения, и второй когда устройство выключается полностью, а МК спит, нужна максимальная экономия аккумулятора.
papa_n вне форума  
Непрочитано 08.10.2012, 17:49   #916
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от papa_n Посмотреть сообщение
Задача определить начало движения.
И какие ускорения ожидаются? Это автомобиль, ракета, велосипед?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 09.10.2012, 12:10   #917
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от tempora Посмотреть сообщение
И какие ускорения ожидаются? Это автомобиль, ракета, велосипед?
Надо универсальное устройство: и человек и автомобиль и возможно и велосипед)
Завтра должон получить цифровой ACC MMA8450, хотя в устройстве думаю юзать 8453, но увы это будет через неделю... сейчас собираю библиотеку для этого девайса.
У него есть 2 выхода для формирования прерывания, которые можно запрограммировать через I2c.
Если у кого есть библиотека для работы с такими "зверями", поделитесь пожалуйста)
Мерси боку!
papa_n вне форума  
Непрочитано 30.11.2012, 23:15   #918
С.М.С
Гражданин KAZUS.RU
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Доброго времени суток. Продолжаю крутить проект Mega32+3’TFT+SD за основу работы с SD картой взят проект http://www.radiolocman.com/shem/sche....html?di=65357
Инициализация проходит, читает 512байтные сектора. Сейчас стоит вопрос работы с FAT. И вот при обработки прочитанных данных Boot сектора возникают проблемы. Сами байты читаются правильно, в процедуре разделения на переменные типа: firstDataSector, rootCluster, totalClusters, bytesPerSector, sectorPerCluster, reservedSectorCount и.т.д. часть переменных присваивается правильно, часть нет, хотя объявлены в одной строчке. В частности правильно присваевается количество байтов на сектор, не правильно количество секторов на кластер, количество резервных секторов, следовательно и дальше неработают процедуры с root.
Переменные объявляются во внешнем хидере:

Код:
//************* external variables *************
volatile unsigned long firstDataSector, rootCluster, totalClusters;
volatile unsigned int  bytesPerSector, sectorPerCluster, reservedSectorCount;
unsigned long unusedSectors, appendFileSector, appendFileLocation, fileSize, appendStartCluster;

//global flag to keep track of free cluster count updating in FSinfo sector
unsigned char freeClusterCountUpdated;
Процедура чтения Boot сектора:
Код:
unsigned char getBootSectorData (void)
{
struct BS_Structure *bpb; //mapping the buffer onto the structure
struct MBRinfo_Structure *mbr;
struct partitionInfo_Structure *partition;
unsigned long dataSectors;


unusedSectors = 0;

SD_readSingleBlock(0);


bpb = (struct BS_Structure *)buffer;

if(bpb-›jumpBoot[0]!=0xE9 && bpb-›jumpBoot[0]!=0xEB)   //check if it is boot sector
{
transmitString_F (PSTR("not found EB"));
TX_NEWLINE;

  mbr = (struct MBRinfo_Structure *) buffer;       //if it is not boot sector, it must be MBR
  
  if(mbr-›signature != 0xaa55) return 1;       //if it is not even MBR then it's not FAT32
  	
  partition = (struct partitionInfo_Structure *)(mbr-›partitionData);//first partition
  unusedSectors = partition-›firstSector; //the unused sectors, hidden to the FAT
  
  SD_readSingleBlock(partition-›firstSector);//read the bpb sector
  bpb = (struct BS_Structure *)buffer;
  if(bpb-›jumpBoot[0]!=0xE9 && bpb-›jumpBoot[0]!=0xEB) return 1; 
}


bytesPerSector = bpb-›bytesPerSector;
transmitString_F (PSTR("bytesPerSector ="));
transmitHex(INT, bytesPerSector); transmitByte(' ');//



sectorPerCluster = bpb-›sectorPerCluster;
transmitString_F (PSTR("sectorPerCluster ="));
transmitHex(CHAR, sectorPerCluster); transmitByte(' ');//



reservedSectorCount = bpb-›reservedSectorCount;
transmitString_F (PSTR("reservedSectorCount ="));
transmitHex(INT, reservedSectorCount); transmitByte(' ');//



rootCluster = bpb-›rootCluster;// + (sector / sectorPerCluster) +1;
transmitString_F (PSTR("rootCluster ="));
transmitHex(LONG, rootCluster); transmitByte(' ');//

if (bpb-›FATsize_F16 !=0)
firstDataSector = bpb-›hiddenSectors + reservedSectorCount + (bpb-›numberofFATs * bpb-›FATsize_F16);
else
firstDataSector = bpb-›hiddenSectors + reservedSectorCount + (bpb-›numberofFATs * bpb-›FATsize_F32);

transmitString_F (PSTR("firstDataSector ="));
transmitHex(LONG, firstDataSector); transmitByte(' ');//


dataSectors = bpb-›totalSectors_F32
              - bpb-›reservedSectorCount
              - ( bpb-›numberofFATs * bpb-›FATsize_F32);
transmitString_F (PSTR("dataSectors ="));
transmitHex(LONG, dataSectors); transmitByte(' ');//

totalClusters = dataSectors / sectorPerCluster;
transmitString_F (PSTR("totalClusters ="));
transmitHex(LONG, totalClusters); transmitByte(' ');//



if((getSetFreeCluster (TOTAL_FREE, GET, 0)) › totalClusters)  //check if FSinfo free clusters count is valid
     freeClusterCountUpdated = 0;
else
	 freeClusterCountUpdated = 1;
return 0;
}
Скажите, что может быть не так. Почему часть переменных объявленные даже в одной строчке работает, часть нет. В том числе даже если присвоить неработающим переменным в процедуре 0. Затем в этой процедуре же прочитать, то нуля уже не будет, а будет какое-то левое значение, хотя и постоянное при каждом запуске МК. Пока не смелюсь грешить на компилятор.
С.М.С вне форума  
Непрочитано 30.11.2012, 23:51   #919
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Я б проверил выход за размеры массива, не "шутит ли где" #pragma pack c выравниванием структур.
Boba_spb вне форума  
Непрочитано 01.12.2012, 01:12   #920
С.М.С
Гражданин KAZUS.RU
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 843
Сказал спасибо: 156
Сказали Спасибо 378 раз(а) в 190 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Да вроде нет, со структуры читается верно, если переменную объявить внутри процедуры, далее этой переменной присваивать значение элемента структуры. Но вот если использовать задуманные автором переменные, то вместо sectorPerCluster =0x08 получается = 0x09 при присваивание этой переменной, типа
sectorPerCluster = 0x00;
считывается 0x01. Т.е. как будто проблема с переменными, а не структурами, как их правильно глобально объявить?
С.М.С вне форума  
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки dosikus Микроконтроллеры, АЦП, память и т.д 61 23.01.2012 21:06
Видео уроки (flash) Proteus 7.1 fmssp Proteus 5 13.08.2007 03:56
AVR уроки Рюмика chipic128 Proteus, KiCAD и другие ECAD 9 07.03.2007 21:46
уроки от LABCENTRE(PIC12F675+C) dosikus Микроконтроллеры, АЦП, память и т.д 22 09.10.2006 10:16


Часовой пояс GMT +4, время: 20:14.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot