MillyVolt2 Опубликовано 7 марта, 2016 Поделиться Опубликовано 7 марта, 2016 ;FREQUENCY 1.2MHz .include "tn13adef.inc" .def temp=r16 .def delay=r17 .def count=r18 .def flag=r19 .def cycle=r20 .org 0x0000 rjmp Reset .org 0x0006 rjmp TIM0_COMPA .org 0x0009 rjmp ADC_CC .org 0x000A Reset: ldi temp, low(RAMEND); out SPL,temp ldi temp,0b00000100 ;разрешение прерывания по совпадению out TIMSK0,temp ;compare match A ldi temp,23 out OCR0A,temp ldi temp,0b00000010 ;CTC mode out TCCR0A,temp ldi temp, 0b00000101 ;запуск таймера0, out TCCR0B, temp ;предделитель 1/1024 ldi temp, 0b00100010 ;задействуем ADC2(PB4), ADLAR=1 out ADMUX, temp ;Vсс used as analog reference sbi ADCSRA, 7 ;ADC ON sbi ADCSRA, 3 ;ADC interrupt enable sbi ADCSRA, 2 ; ADC frequency=75kHz sei clr count clr flag clr delay sbi DDRB,3 cbi PORTB,3 Main_cycle: rjmp Main_cycle TIM0_COMPA: inc count sbrc flag,0 rjmp time_delay sbi ADCSRA,6 ;start single convertion sbr flag,0b00000001 ;производим одну конверсию АЦП ;задержка между включением МК и конверсией 20мс reti time_delay: cp count,delay brsh on_relay ;перейти если больше или равно reti on_relay: sbi PORTB,3 reti ADC_CC: in delay,ADCH reti Убрал лишний цикл. "Глюк" с нулём решился заменой команды breq на brsh и заменой местами переменных delay и count (в первом варианте проги был cycle вместо count). Просто в случаях, когда delay был меньше cycle должен был пройти полный цикл, соотвествующий 5с. Если можно как то упростить прогу, буду признателен, если покажете 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
LexSancho Опубликовано 8 марта, 2016 Поделиться Опубликовано 8 марта, 2016 (изменено) добрый день! float q1=5/2.3; вот такой код дает результат 2.17, т.е с остатком все в порядке float q1=5/2 а вот такой код дает результат 2.теряет остаток.подскажите,как исправить?оптимизации отключены вопрос снят Изменено 8 марта, 2016 пользователем LexSancho 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Alexeyslav Опубликовано 8 марта, 2016 Поделиться Опубликовано 8 марта, 2016 Пиши 2.0 вместо 2. Или спецификатор какой-то надо указывать хотябы для одного из чисел, иначе компилятор видит целые числа - использует целочисленное деление, потом приводит результат к вещественному... 0 Учение - изучение правил. Опыт - изучение исключений. Ссылка на комментарий Поделиться на другие сайты Поделиться
Особенности хранения литиевых аккумуляторов и батареекПотеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
LexSancho Опубликовано 8 марта, 2016 Поделиться Опубликовано 8 марта, 2016 спасибо,уже разобрался. тип переменных флоат указал,вместо инт и все правильно теперь считает 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
DmitryS Опубликовано 10 марта, 2016 Поделиться Опубликовано 10 марта, 2016 День добрый ! Подскажите , оператор sizeof( ) с какой библиотекой подключается ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 10 марта, 2016 Поделиться Опубликовано 10 марта, 2016 Никакой. Это макрос, встроенный в сам язык. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
DmitryS Опубликовано 10 марта, 2016 Поделиться Опубликовано 10 марта, 2016 Тогда я чего то не догоняю , студия ругается какими то не понятными матюгами , хотя там все вроде бы правильно . Вот строка if(!RX_STATE) break; а вот ругательство Severity Code Description Project File Line Error expected ')' before 'break' AnalizATmega16 C:\Users\Dmitry\Documents\Atmel Studio\7.0\AnalizATmega16\AnalizATmega16\main.c 52 , типа пропущена скобка , но все скобки на месте . 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 10 марта, 2016 Поделиться Опубликовано 10 марта, 2016 Значит что-то не так либо со студией либо, что вероятнее, с кодом. Однако этот код, вероятно, был вырезан цензурой вместе с матюками, и на форум удалось проникнуть только одной строке. Раз уж цензура не пускает ваш код на форум, попробуйте перепроверить наличие лишних открывающих скобок (в том числе внутри макросов). Иногда они оказываются в довольно неожиданных местах. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
DmitryS Опубликовано 10 марта, 2016 Поделиться Опубликовано 10 марта, 2016 (изменено) Да не с цензурой усе впоряде , да и матюков в коде нет , а так фиг его знает это я собираю приемник сигналов килок и старлайн . Ворота я сделал , в качестве ДУ старенькая сигналка и один брелок , а надо 3 , вот есть желание сделать свой приемник , а внего записать 3 серийник от 3 сигналок и ворота будут открываться брелками от машин . В коде есть аналогичная строка , но на неё студия не ругается . Изменено 10 марта, 2016 пользователем DmitryS 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 10 марта, 2016 Поделиться Опубликовано 10 марта, 2016 А RX_STATE - это что ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 (изменено) в самой строке то скобка не пропущена, но такие ругательства запросто бывают на строки выше. Вот там вот скобка возможно и была пропущена и ожидалась она вплоть до break. А как только компилятор встретил его, он понял, что положение безнадега и выкинул ошибку которая собсна и говорит, что гдето до оператора break ожидалась закрытая скобка. Изменено 11 марта, 2016 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
DmitryS Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Alex RX_STATE как я понял из описания алгоритма это уровень пина к которому подключен приемник , Почему понял , а не точно ? Потому что полностью кода нет , а есть описание с приведением кусков кода . Самого #define RX_STATE хххххх нет , но пологике он как бы должен быть такой #define RX_STATE (PIND &(1<<RX) , Ну блин и смех и грех , Вот и нашел эту грёбаную скобку в процессе написания сего поста , не хватает там скобочки одной с права . Всё откомпилировалось . Спасибо Alex ! Вы просто колдун-эккстрасенс . Откомпилировалось то оно откомпилировалось , но у меня осталась непонятка . функция приема в описании идет с параметром void process_keeloq(unsigned int p_len) а в прерывании где она вызывается с параметром process_keeloq(len); , это надо понимать , как p_len = len; т.е. функция примет значение len , присвоит его p_len и дальше будет работать с ним ? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 (изменено) в обьявлении функции имени переменной вообще можно не ставить и значения оно по сути не имеет никакого. Только тип А вот в описании имя уже конкретно используется в теле функции (метода). Так что на void process_keeloq(unsigned int p_len) внимания можно вообще не обращать можно вообще в прототипе написать void process_keeloq(unsigned int) и ничего не поменяется, потому как компилятору при обьявлении прототипа нужно знать только имя саой функции, тип возвращаемого ей значения (если возвращается) и размеры (типы) аргументов. То есть по сути - сколько места этому вызову зарезервировать в стеке. Все. Можно кстати стек и не резервировать, если функция мелкая. Явно назначив ее встраиваемой. inline void process_keeloq(uint16_t) к примеру. Код функции будет просто подставлен в место вызова как макрос. Это если конечно нет требований к размеру кода и важно сэкономить вычислительные ресурсы ядра и время И да - лучше в качестве типа использовать переопределенные типы процессора с явным указанием длинны. Например uint8_t, uint16_t итп. А иначе не будет известно заранее, сколько именно места компилятор выделит именно под unsigned int для данной конкретной платформы. Улучшает портируемость кода и вообще читабельность Изменено 11 марта, 2016 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
BiBOX Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Решил я,что самоучка и чтение форумов,это нормально.Но лучше все же умнеть при помощи чтения книг. Немного поясню,что бы было понятнее о чем я. Научился я на чужих примерах настраивать ацп,уарты,таймеры и т.д.,но чуть влево или вправо от чужого кода,вылезают проблемы с пониманием.Скачал книгу Б.В. Керниган, Д.М. Ричи. Язык С.Читаю. Решил поступить,как и написано в книге-изучать язык,программируя на нем. Там есть примеры по ходу текста(пока я на 16 странице всего) и скачал Visual studio 2013,что бы писать в нем.И тут я уперся в тупик. В книге написано программа печати "HELLO, WORLD" на языке "C" имеет вид: MAIN () PRINTF("HELLO, WORLD\N"); А в примерах для В.студио using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace урок1в2 { class Program { static void Main(string[] args) { Console.WriteLine("HELLO, WORLD \n "); Console.ReadKey(); } } } Почему так?Или я совсем не с того начал? Просто хочу еще и научится писать программы для компа,что бы видеть по ходу работы МК,значение его переменных.Типа график АЦП,данные уарта и т.д. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Классы - это уже С++ Для ПК, конечно же, лучше С++ учить, но в голове может образоваться каша. Так что, учите сначала чистый Си, а потом уже на С++ перейдёте. Для МК на плюсы не заглядывайте. По крайней мере, пока не будете свободно и без напрягов писать для них на Си. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BiBOX Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Странно,а почему вылезли классы,хотя я выбирал C#. А в какой тогда программе изучать Си? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 C# - это "Си Шарп". Это немного не то. В той же студии должна быть возможность создавать проекты на Си. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
BiBOX Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 (изменено) Вроде нет такого языка (Си) в студии. Изменено 11 марта, 2016 пользователем BiBOX 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
BiBOX Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Нашел ответ как это сделать) Чтобы писать на C (а не C++/C#) не нужно принимать каких-либо лишних телодвижений. Достаточно просто не использовать библиотеки C++, а писать именно так, как необходимо по стандарту C. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MillyVolt2 Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Для ПК LabView и не надо учить лишние языки программирования 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 11 марта, 2016 Поделиться Опубликовано 11 марта, 2016 Уж лучше учить языки программирования, чем пользоваться labview. Страшная штука, хорошо что не слишком долго пришлось с ней общаться. Единственное достоинство - низкий порог вхождения - не перевешивает недостатки: громоздкость блок-схемы, долгое время ее составления, привязанность к среде, медленная работа (и это небольшая часть того, что встретилось лично мне). Для ПК, конечно же, лучше С++ учить, но в голове может образоваться каша. Так что, учите сначала чистый Си, а потом уже на С++ перейдёте.Некоторые считают, что так делать не стоит. С++ реализует объектный подход, а Си - процедурный. Переучиваться с одного на другой может быть непросто. Теоретически, для контроллеров можно достаточно эффективно писать и на С++, там есть несколько удобных механизмов, но при этом надо очень четко представлять себе работу компилятора, иначе собраться это может в дикую кашу из указателей и работы со стеком вместо двух ассемблерных команд. Если хотите, могу поискать статью, где как раз приводили пример преимущества плюсов.Ну и традиционно, осваивать контроллеры лучше снизу, с ассемблера. Но и знания "компьютерной" стороны Си тоже пригодятся. 1 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 12 марта, 2016 Поделиться Опубликовано 12 марта, 2016 (изменено) для писанины на плюсАх под контроллеры можно обойтись и без указателей, если очень захочется. Хотя они вполне простой и очень удобный инструмент, который при грамотном использовании не отжирает ресурсы, а скорее наоборот. Но это все лирика. До перехода на использование ОС в своих проектах писал на С++. Личные впечатления - по сравнению с процедурным С код получается стройнее и более гибкий чтоли. Изменения и дополнения вносить гораздо проще, особенно близкие к глобальным. С использованием операционки все еще проще и быстрее и не нужен С++. Но ОС к сожалению не всем пойдет, да и С++ для 8-биток не нужен совершенно. Обьемы кода не те На счет заучивания и переучивания. Пожалуй да, нюансы есть. Кое что придется понять при переходе на С++. Это и свое пространство имен и кое какие макросы специфические, опять же классы и наследование и кучка прочих мелочей, вылезающих там и сям. Но один раз выучил и потом совсем несложно ни вверх ни вниз. Так что каши в голове не получится. Но и пользы будет не шибко, потому как GCC и многие другие эмбеддерские компиляторы С++ не поддерживают. Изменено 12 марта, 2016 пользователем mail_robot 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 12 марта, 2016 Поделиться Опубликовано 12 марта, 2016 Я имел в виду, при бездумном использовании полиморфизма код превращается в неявное использование указателей, а для восьмибиток это накладно. На счет красоты и гибкости кода - не спорю, С++ позволяет не меньше, чем Си, но вот использовать это надо с умом, что не всем под силу. GCC и многие другие эмбеддерские компиляторы С++ не поддерживаютЗато g++ поддерживает, а он, насколько я знаю, портирован туда же, куда и gcc. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
MillyVolt2 Опубликовано 12 марта, 2016 Поделиться Опубликовано 12 марта, 2016 Уж лучше учить языки программирования, чем пользоваться labview. Страшная штука, хорошо что не слишком долго пришлось с ней общаться. Единственное достоинство - низкий порог вхождения - не перевешивает недостатки: громоздкость блок-схемы, долгое время ее составления, привязанность к среде, медленная работа (и это небольшая часть того, что встретилось лично Может глючную версию юзали из старых, 6-8 например? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 12 марта, 2016 Поделиться Опубликовано 12 марта, 2016 g++ то поддерживает, но прикрутить его тулчейн туда же куда и GCC-шный, это надо ооочень постараться.... как то взялся прикрутить его к кокосу, проклял все. В итоге пришлось грохнуть все вместе с кокосом и поставить заново. А потом я узнал, что есть Кейл. И все 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.