VladimirYU
-
Постов
426 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные VladimirYU
-
-
Стрелочки то туда направили? :)
А если серьезно? :)
-
А вы точно пробуете cout, а не cin? Вроде как read используется для чтения, а вам нужна запись.
В том то и дело, что точно cout, у меня самого этот вопрос возник :-(
-
Форумчане, подскажите, пожалуйста, как заставить cout выводить в UART. C printf вроде разобрался, переопределил в своем проекте putchar и все заработало. Захотелось использовать cout, но получаю ошибку линкера. IARAVR 4.12
Error[e46]: Undefined external "__read" referred in ?getchar ( D:\IAR Systems\EW4_12A\avr\LIB\DLIB\dlAVR-3s-ec-n.r90 )
-
То-есть Вы хотите сказать что все библиотеки которые выкладываются производителями чипов дерьмо. А программы нужно писать самому и с нуля и тогда будет все супер?
Нет же вам этого не говорили, просто использование подобных "волшебников" затеняет понимание сущности, и далеко не всегда генерируемый ими код соответствует требованиям решаемой программистом задачи. По аналогии это непонятного качества полуфабрикат в сравнении с приготовленным самостоятельно продуктом.
-
старая байка, уже давно не актуальная
тем не менее IAR при стандартных настройках 0-ую ячейку ЕЕПРОМ не пользует.
-
Нет, обычный, комнатной температуры.
Я вставил на макетку щупы мультимедиа и замеряю с помощью него напряжение между ресетом и землей. Изначально напряжение 3.93, а если его начать шить, то оно падает до 2.93 в. кто-нибудь знает процесс сбрасывания мк, какое напряжение подается??
В режиме программирования на ножке Reset напряжение должно быть 0В(потенциал "земли" питания).
-
ModbusPoll
-
Добавил в Linker->Extra options
-y(CODE)
-Ointel-extended,(XDATA)=$EXE_DIR$\$PROJ_FNAME$.eep
Сам код инициализации
__eeprom unsigned char erm[15]="Demo STRing";
или так
__eeprom char erm1=0x55;
Компилится нормально, но файл *.ерр фактически пустой, и не меняется, даже если я выкину строку инициализации из кода.
содержимое файла epp ниже. В чем может быть проблема?
:040000031000F000F9
:00000001FF
при объявлении переменных ЕЕПРОМ добавьте ключевое слово
__root __eeprom unsigned char erm[15]="Demo STRing";
в вашем случае скорей всего их выкинул компилятор, м.б. вы их не используете?
-
Уважаемые коллеги,
Есть задумка сделать бесколлекторный двигатель постоянного тока на 1 кВт. Причем с питанием в 500В. (или 250В для начала. Брать из розетки).
Вопрос в том как его запитать-законтроллировать?
Я так понимаю, что проще всего вставить датчики Холла в мотор, подальше от обмоток. И от их сигналов включать нужные обмотки с ШИМ регуляцией.
Кто может предложить подходящую схему?
Или где можно найти подобную?
У вас две взаимосвязанные задачи
1. двигатель
2. управление
Посмотрите в сторону AT90PWM3, это специализированный контроллер для управления
двигателями, в том числе и вентильными, там есть примеры его использования как раз для двигателей с встроенными датчиками Холла. Есть пример программы, он правда с глюками, но за основу подойдет. Силовую часть сразу делайте на 3-х фазных мостах от IR, основные защиты там уже аппаратно реализованы. Программные сделаете сами. По поводу двигателя с такими параметрами готового решения подсказать сразу не могу. Но если брать за основу мощность 1кВт, то для 48В получается 20А, это мне видится более реальным.
-
Вы же написали:
Tobj* obj = new Tobj; int main() { .......... }
Именно это в таком виде не может работать.
Вы путаете объявление объекта и его создание.
Tobj* obj; // объявление указателя на объект, указателя с глобальной вивдимостью int main() { obj = new Tobj; // создание объекта (вызов конструктора, в данном случае) // и передача адреса созданного обьекта указателю с глобальной видимостью .......... }
Последний вариантом я всегда и пользовался, см. предыдущий мой пост. Не работает он в конкретном случае и я не могу понять почему, игра с "кучей" и стеками результатов не дала. В map файле ничего криминального не увидел, предупреждений ни кампилятор, ни линкер не выдает. Работает только глобальный статически созданный объект. А первое Ваше утверждение весьма спорно.
в глобальной области строка
Tobj* obj = new Tobj;
включает в себя и объявление и создание объекта.
-
А что именно не работает? Память не выделяется? Конструктор не вызывается? Указатель на неверный адрес указывает?
Что-то типа int *a = new int[10]; работает?
Судя по всему не вызывается коструктор. Так ведь в куче проектах работает именно третий вариант, указатель на объект глобальный а требуемый конструктор, определяемый например по опросу ключа, вызывается в main. Если я правильно понимаю, что если бы были проблемы с недостатком памяти не работал бы и глобальный объект.
Автор хочет, чтобы это работало до main(). A это невозможно. Внутри любой функции - пожалуйста.Поясните, почему, хочется глобальным иметь указатель на объект, а конструктор вызывать где надо и удалять объект (по необходимости ) где надо.
-
Вопрос к знатокам. Компилятор IARAVR v4.12. Столкнулся со следующим эффектом,в случае объявления объекта глобальным статическим все нормально работает
Tobj obj;
int main()
{
..........
}
А если объявить его так:
Tobj* obj = new Tobj;
int main()
{
..........
}
не работает. Естественно методы в этом случае вызываются через указатели.
Игра настройками HEAP, CSTACK, RCTACK ни к чему не приводит. Впервые на такое налетел.
Подскажите где я туплю. В map. файлах все практически одинаково, предупреждений нет.
Нужно по структуре программы работать через указатели.
По смыслу примерно так (конструктор вызывается в теле:
Tobj* obj ;
int main()
{
..........
obj = new Tobj;
..........
}
-
Народ кто пробовал сварганить АЦП на МЕГЕ с помощью ШИМ.
Охота 16-битную ацепуху дешево и сердито.
Идея такова: Берем ATMega-16, с ШИМа через RC-цепь на внутенний компоратор и мереем с дискретностью 16-битную.
Кто то реально пробовал?
Поставленная задача таким способом не решаема.
-
А если уменьшить частоту сети в 2 раза, типа - положительный период сети- пропуск отрицательного полупериода, пропуск положительного полупериода, отрицательный полупериод , опять 2 пропуска полупериодов, положительный полупериод.., и так далее.
Как посчитать в таком случае фазосдвигающий конденсатор? И будет ли работать такая схема?
Боюсь, что нет. 1) могут быть проблемы с пуском; 2) При частотном регулировании f и U
меняют по определенному закону, простейший U/f = const => снижение момента в неизбежно. Иначе
рост потерь, перегрев двигателя выход его из строя. Логичней было бы использовать коллекторный
двигатель по типу тех, что в ручном инструменте.
-
Добрый день.
Скачал добрый десяток программ для работы с ком-портом, но ни одна не отправляет в шестнадцатиричном виде, все кидают в кодировке ACSII.
Несколько программ правда имели функцию передачи в HEX, но текст вставлять нельзя, только набирать ручками (мне необходимо передать 80кбайт).
Может кто-нибудь встречал подобные программы?
Спасибо.
Realterm + драйвер для доступа к портам DLPortIO, если под WINDOWS.
-
Попался контроллер ATmega88-15AZ у которого вместо сигнатуры считываются все единицы. Все остальное работает нормально - шьется программа, фьюзы, EEPROM. А сигнатура не считывается. Встречал ли кто такое и насколько это может быть опасно в работе?
Когда то давно, такое было у меня с мегой 103. Если ничего не путаю в ранних версиях PONYPROG даже опция была типа "забить на сигнатуру". Приборы с теми мегами без проблем вот уже больше 10 лет работают.
-
Ну так а чем
char __flash * __flash pMSG[] = { "String1", "String2", "String3" };
не устраивает?
Выдает ошибку
Error[be009]: memory attributes not allowed on auto variables or parameters
-
Полагаю, что платите Вы за полную потребляемую из сети мощность W, но в эенергопреобразовании
в двигателе участвует только активная составляющая. Реактивная составляющая необходима для создания
магнитного потока в зазоре, без него, создание момента невозможно.
-
-
Не подскажите может где-то в форуме описана процедура организации прерываний?
А почему обязательно в форуме? В любом букваре по микропроцессорной технике.
-
ИМХО изначыльно "бег в мешке". Куда проще AD7705 + МК с UART + преобразователь ТТЛ в RS232 далее в PC.
-
-5V это опечатка? ИМХО для коммутации тока светодиода ничего делать не надо, т.к. нагрузка практически чисто активная и ток небольшой. Иначе RC согласно рекомендации sera_os.
-
:unsure: Подсккажите, пожалуйста, как определить время минимальное между поочередными пусками асинхронного двигателя (через магнитный пускатель)? Двигатели АИС56В4У3 и 3ДСТР-135-1.6-150-У2.
Через тепловые потери, пусковые токи асинхронного двигателя гораздо больше номинальных. Расчитать средние потери для номинального режима, и обеспечить чтобы средние потери в Вашем случае не превосходили номинальных. Из этого условия определить минимальное время между последовательными пусками.
-
Здравствуйте. Что то я совсем запутался с кейлом :( Создаю h файл и пытаюсь написать класс, компилятор ругается "identifier "class" is undefined" . Переношу этот же объявление класса в с++ файл, там все нормально компилится. Подскажите , пожалуйста, что надо настроить, чтобы объявить класс в хэдере.
Примерно так, в хидере
#ifndef MY_INCLUDE #define MY_INCLUDE // подключить необходимые хидеры class Myclass { private: // здесь закрытые члены public: // открытый интерфейс, не забыть про конструктор protected: // защищенные члены }; #endif //MY_INCLUDE
В файле CPP
#include "My_include.h" // Далее реализация методов класса Myclass::Myclass( ) // если надо с параметрами { ........... } void Myclass::Func1(int par1, char par2) { ............ } ........... ...........
Помогите найти ошибку в коде. UART, ATMega32U4
в MCS51, AVR, PIC, STM8, 8bit
Опубликовано · Пожаловаться
Именно ругался, а не предупреждал о том, что ничего не знает об их поведении?