Перейти к содержанию

    

laryc

Участник
  • Публикаций

    55
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о laryc

  • Звание
    Участник
  • День рождения 21.01.1958

Информация

  • Город
    комсомольск на амуре
  1. устройство TWI

    Добрых Всем начинаний! Прошу вразумлений по части работы TWI. Два процессора ATmega общаются по по TWI. Обработчик TWI vect; не используем , обмен данными пишем в функциях кои общаются с модулем TWI из основного цикла. В программе есть обработчики прерываний (таймеры, АЦП). Внимание вопрос! Будет ли TWI во время обмена данными влиять на работу обработчиков? Или же будет вести себя подобно ШИМу? то есть никак не тянуть время на себя во время работы
  2. Уважаемые форумчане! Будьте добры подсказать транзистор npn по параметру пробоя обратным напряжением эмиттер-база. 15 - 20 вольт..ток коллектора 100 - 300 mA. Параметр редко используемый. Среди российских была какая-то КТшка, но я забыл и старые справочники выбросил и вспомнить не могу какая. В нете теоретическая лабуда есть , а вот подобрать по параметру - ничего!
  3. flash память

    исправил... платформа IAR AVR 6.12 char tt; __flash const char Sound[] = {0,1,2}; tt = Sound[2]; компилируем имеем Error[Pe077]: this declaration has no storage class or type specifier C:\pistol\main.h 14 Error[Pe147]: declaration is incompatible with "char tt" (declared at line 11) C:\pistol\main.h 14 Error[Pe028]: expression must have a constant value C:\pistol\main.h 14 Error while running C/C++ Compiler Total number of errors: 3 Три ошибки в слове х..... многовато даже для двоешника причем порядок ключевых слов при объявлении массива компилятор пропускает в любом порядке ,но как только константу из флеша присваиваю переменноц так три ошибки одну ошибку извел объявив переменную int __flash const char Sound = 6; int tt; tt = Sound; имеем Error[Pe077]: this declaration has no storage class or type specifier C:\pistol\main.h 14 Error[Pe028]: expression must have a constant value C:\pistol\main.h 14 Error while running C/C++ Compiler Total number of errors: 2 Total number of warnings: 0
  4. flash память

    Добрый писать и День! Нигде не могу найти подходящую информацию как и извлекать информацию из флешь памяти (есть такая насущность) в IAR. На ассемблере таких проблем почемуто не возникало. #include <pgmspace.h> ....................... unsigned char tt; const char __flash Sound[3] = {0,1,2}; ...включаем компилятор - всё ОК! .......... далее хочу взять константу из flash ... пишу tt = Sound[2]; ( .....пробовал _flash Sound[3] ..и по всякому менял синтаксис) компилятор выдаёт ошибку: Ошибка [Pe077]: эта декларация не имеет класса хранения или спецификатор типа Ошибка [Pe147]: декларация несовместима с "неподписанные символ ТТ" Ошибка [Pe028]: выражение должно иметь постоянное значение
  5. linker IAR 6.12 выдаёт ошибку

    Цитата(aiwa @ Feb 15 2017, 06:17) Вы внесли "-Ointel-standard.(CODE)=.hex" не в той вкладке: нужно в "Linker->Extra Options", а Вы внесли в "Linker->#define" спасибо помогло файл с расширением .еер появился- дальше опять не понятные тормоза непонятного свойства __eeprom unsigned int nabcorr; - объявил переменную Кодvoid  EEPROM_WriteByte(__eeprom unsigned int *nabcorr, unsigned int value) { ucha save; while (EECR & (1<<EEPE));                                     //????? EEAR =(unsigned int) nabcorr; EEDR =value; save = SREG; SREG &= ~(1 <<7); EECR |= (1<<EEMPE); EECR |= (1<<EEPE); SREG = save; } окомпилировал (регистр ATmega324) - ошибок не выдает попытка что нибудь записать в ЕЕПРОМ EEPROM_WriteByte(__eeprom &nabcorr, 5) ; получаем Error[Pe029]: expected an expression C:\pistol\main.c 127 Error while running C/C++ Compiler
  6. linker IAR 6.12 выдаёт ошибку

    Добрыйй ,День! Помогите решить проблему. Есть необходимость поработать с ЕЕПРОМом Как я понимаю нужно открыть файл с расширением .еер Нашёл рекомендации (с картинками) на :http://chipenable.ru/index.php/programming-avr/item/158-avr-rabota-s-eeprom-na-si.html У меня IAR 6/12/1 начал выдавать следующую ошибку: Fatal Error[e163]: The command line symbol ".hex" in -D-Ointel-standard.(CODE)=.hex is not defined. Error while running Linker Не могу понять... наверно нужно прицепить в заголовок типа //#include <avr/eeprom.h>.......но типа eeprom.h файлов поисковик не находит
  7. Подобную задачу (нагрева) мне удалось решить... Инженеры-подельники были в восторге. Берём нихром или фехраль приличного сечения (я применял проволку 8мм сечения и не боимся применять ещё толще). Притуляем сварочный трансформатор и прибор регулировки температуры ,что то типа ТРМ конторы "Овен" с ПИД регулятором ,прилаживаем симистор (если там его нет ,лучше обойтись без 3-х фазки) и греем. Какие плюсы? Компактно , безопасно, просто в осуществлении ибо напруга несколько вольт и не требуется изощрённая изоляция накрайняк шамот пойдёт и что очень важно безгеморойно
  8. Индуктор не может находиться "внутри" ... нагреваемый объект должен быть внутри катушки индуктора.... стоматологический индуктор 2-2.5 кВт... прикиньте мощность для своей задачи! .. стало быть водяное охлажение.. оно Вам надо?
  9. Всем спасибо, вразумили и направили! Обязательно проработаю эту тему несмотря на то что решил решать проблему в лобешник.... поставлю Р-канальный ФЕТ IRFH9310 - сделал для себя небольшое открытие 4,6 мОм D-S и в продаже есть и недорогой вот бы ещё входную ёмкость поменьше.
  10. Цитата(MegaVolt @ Jan 19 2017, 23:16) MOSFET какой проводимости? N - типа ... применять Р-тип не очень хочется. В учебниках случай МОСФЕТА в истоковом повторителе найти не могу.... ну так чтобы с формулами - только на пальцах разводят... ну вроде как напряжение должно быть на затворе выше чем на стоке. (Как пишет уважаемый Herz) А почему? ..ведь гальванической цепи как в случае биполярника нет! .. ну разве что в динамике пока ёмкость затворная заряжается Да вот ещё! ... неоднократно находил в импульсных блоках питания (понижающих) выход с общим истоком.. то есть разработчик как -то не особенно заморачивается - берёт транзистор N-типа и тулит его ибо он у него в ведре лежит
  11. Друзья! В исток MOSFETа включаем эл. мотор . На затвор подаём напряжение то же что и на сток (12 Вольт). Могу ли я полагать что канал D - S откроется полностью? Вроде как истоковый повторитель должен повториться до напряжения на затворе .... ?
  12. трабл с WEH000802al

    Раз никто не ответил мне то отвечу себе сам . Всё дело было в том что устанавливал флажок на разрешение 5х10 дот, а выводило всё равно 5х8 и при этом вторая строка не инициировалась. Мораль: Верить написанному нельзя...Не верь китайцам дары приносящим!
  13. трабл с WEH000802al

    биты которые отличаются относятся к набору символов. а вот с инициацией второй строки - проблема... не зажигается совсе и не мельтишит! Если есть рабочий кусок кода для двухстрочной WEHи то просьба поделиться именно для 8-битной шины. Пишут что проблем с инициацией на 8 битах нет ...а у меня есть У меня вопрос к тем кто плавал. Обязательно ли проверять флаг D7 BUSY? Мож когда переводим R\W на чтение там что нибудь за одно и переводится и защёлкивается ? На HD44874 тоже эта процедура упоминается , но я никогда этого не делал просто давал задержку и всегда всё получалось
  14. трабл с WEH000802al

    Други, С Новым Годом! ...а меня поздравьте с Новым Геморрроем! Решил пересесть на OLED ранее с HD44874 проблем не испытывал. Купил парочку WEH000802al WINSTAR запуснаю 8-битовой шиной инициирующая последовательность ( 0х3е,0х06, 0х01,0х04), но зажигается только верхняя счтрока (индикаторы перепаивал то бишь менял) флаг по готовности не проверяю даю приличную паузу, во всяком случае на HD44874 пролазило. Ранее угробил WEH0001202al но на 4-х битной шине там кокоето время наблюдал две строки - затем нижняя погасла навсегда...мо чо в консерваториях не так? если есть библиотека то поделитесь у меня уже обглоданная и глаз должно быть замылился
  15. Цитата(esaulenka @ Feb 5 2016, 18:39) Какие-то не те книжки Вы читаете. Берём гугл. Ищем "алгоритм crc8". Первая же ссылка - wikibooks. Копируем "Пример программы расчёта CRC8 на языке Си". Вызываем: Кодdouble myDouble = 1.23; unsigned char crcResult = Crc8 ((unsigned char *) &myDouble, sizeof(myDouble)); Проверяем. Не сходится. Внимательно читаем, выясняем, что Вам нужен полином 0x07, а тут используется далласовский 0x31. Меняем ОДНУ цифру 0x31 на 0x07, правим комментарий, повторяем проверку. PS не силён в double'ах AVR-компиляторов. Но фразу "в сообщении 5 байт" с 8-байтовым double'ом связаны как-то слабо. попытка не увенчалась успехом .. посмотрите код ..что не так? //делаем переменную из пяти байт unsigned long long myDouble = 0;//double не позволяет сдвигать берём long long myDouble = myDouble+number[0]; myDouble = myDouble<<8; myDouble = myDouble+number[1]; myDouble = myDouble<<8; myDouble = myDouble+number[2]; myDouble = myDouble<<8; myDouble = myDouble+number[3]; myDouble = myDouble<<8; myDouble = myDouble+number[4]; number[5] = Crc8 ((unsigned char *) &myDouble, sizeof(myDouble)); unsigned char Crc8(unsigned char *pcBlock, unsigned int len) { unsigned char crc = 0xFF; unsigned int i; while (len--) { crc ^= *pcBlock++; for (i = 0; i < 8; i++) crc = crc & 0x80 ? (crc << 1) ^ 0x07 : crc << 1;//0x31 } return crc; } мож я действительно как-то не так мыслю... задача у меня такая : принимаю по USARTу пять байт и считаю CRC - 8 по полиному 0х07.. я согласно учебникам решил сделать 40 битовое число чтобы не заморачиваться с массивами и посчитать crc для одного числа .. честно сказать я не очень понимаю как работают указатели - всю жизнь обходился без них (уровень достаточного дилетанта)