Например TDA7294

Форум РадиоКот • Просмотр темы - WinAvr в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пт янв 17, 2020 16:40:55

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2078 ]     ... , , , , 104
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб окт 13, 2018 22:51:40 
Друг Кота

Карма: 14
Рейтинг сообщений: 32
Зарегистрирован: Вс июл 24, 2011 11:38:09
Сообщений: 3028
Рейтинг сообщения: 0
Еслиб я был программистом, я бы искал проблемы в мелочах, а имея паяльник…

Оказалось всё проще
Код:
PROGRAMMER=stk500v2
PORT=com7
BitClock=1


…в общем я спалил програматор.

_________________
баланс сосёт


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Ср дек 19, 2018 12:17:02 
Открыл глаза

Зарегистрирован: Пн окт 01, 2018 11:33:59
Сообщений: 58
Рейтинг сообщения: 0
Друзья, такой вопрос! Задача - написать бутлоадер на 128 меге на с++.
Во всех статьях инструкции - менять строки, указывать адрес загрузочной секции в makefile. Но! в atmel studio 7.0 они пишутся автоматически, даже в заголовке стоит метка - не изменять. Изменение фьюзов Bootrst и bootsz результатов не принесло.


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вт янв 29, 2019 08:22:09 
Мудрый кот
Аватар пользователя

Карма: 24
Рейтинг сообщений: 285
Зарегистрирован: Чт июн 10, 2010 08:55:35
Сообщений: 1812
Откуда: Сибирские Афины
Рейтинг сообщения: 0
указывать адрес загрузочной секции в makefile. Но! в atmel studio 7.0 они пишутся автоматически
Они пишуться автоматически из настроек проекта в студии.
Пропишите в настройках проекта соответствующие параметры линковщику. Студия их потом в makefile пропишет.

_________________
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб фев 02, 2019 22:39:15 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14455
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
подскажите, кто знает, почему я не могу получить значение символа, заданного в скрипте линкера?

скрипт (фрагмент):
Код:
  .text   :
  {
    *(.vectors)
    KEEP(*(.vectors))
    /* For data that needs to reside in the lower 64k of progmem.  */
     *(.progmem.gcc*)
    /* PR 13812: Placing the trampolines here gives a better chance
       that they will be in range of the code that uses them.  */
    . = ALIGN(2);
     __trampolines_start = . ;
    /* The jump trampolines for the 16-bit limited relocs will reside here.  */
    *(.trampolines)
     *(.trampolines*)
     __trampolines_end = . ;
    /* avr-libc expects these data to reside in lower 64K. */
     *libprintf_flt.a:*(.progmem.data)
     *libc.a:*(.progmem.data)
     *(.progmem*)
    . = ALIGN(2);
    /* For future tablejump instruction arrays for 3 byte pc devices.
       We don't relax jump/call instructions within these sections.  */
    *(.jumptables)
     *(.jumptables*)
    /* For code that needs to reside in the lower 128k progmem.  */
    *(.lowtext)
     *(.lowtext*)
     __ctors_start = . ;
     *(.ctors)
     __ctors_end = . ;
     __dtors_start = . ;
     *(.dtors)
     __dtors_end = . ;
    KEEP(SORT(*)(.ctors))
    KEEP(SORT(*)(.dtors))
   
    /* Внедрение моих секций для таблиц */
    __my_tbl_start = __dtors_end ;
    *(.my_table)
    __my_tbl_end = . ;
    KEEP(SORT(*)(.my_table))
    /* Конец моих секций для таблиц */
определил два символа __my_tbl_start и __my_tbl_end

в программе делаю так:
Код:
extern int __my_tbl_start;
extern int __my_tbl_end;

printf("%04X %04X", __my_tbl_start, __my_tbl_end);
получаю 0x0000 0x0000
хотя в map-файле эти символы нулю, естественно, не равны:
Код:
                0x0000069e                __my_tbl_start = .
 *(.my_table)
 .my_table      0x0000069e        0x2 ./alarm-main.o
                0x0000069e                _A0_DATA28
 .my_table      0x000006a0        0x2 ./alarm.o
                0x000006a0                _A0_DATA22
 .my_table      0x000006a2        0x2 ./timers.o
                0x000006a2                _A0_DATA121
                0x000006a4                __my_tbl_end = .
 SORT(*)(.my_table)


что я делаю не так? как в программе получить значения этих символов дл доступа к моей таблице?

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Контроль в спящем режиме: повышение КПД батарейного питания с помощью DC/DC MAX17225 nanoPower

В статье описан практический опыт разработчика, применившего повышающий DC/DC-преобразователь MAX17225. В результате ряда практических экспериментов, потребовавших существенного обновления технической базы компании-разработчика, автор убедительно доказывает преимущества выбранного компонента и схемотехнической реализации. Увеличенное на 50% время автономной работы лучше других аргументов говорит об эффективности конвертеров MAX17225, а также о важности предварительной оценки элементной базы.

Читать статьи>>
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб фев 02, 2019 22:51:39 
Друг Кота
Аватар пользователя

Карма: 78
Рейтинг сообщений: 826
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4176
Откуда: Минск
Рейтинг сообщения: 0
А сами таблицы (массивы, как я понимаю) объявлены с "__attribute__((__section__(".my_table")))"?

И ещё немного непривычно (хотя не уверен, что неправильно), что по сути, если верить скрипту, эта секция объявлена внутри .text. Я в своё время экспериментировал (правда, с STM32, но не суть важно) - так я отдельно в MEMORY {} добавлял MY_TABLE - нужную область памяти (по адресам - в конце FLASH), а саму область FLASH "обрезал" на это же число. И уже отдельно секцию объявлял, типа
Код:
.my_table :
  {
    . = ALIGN(4);
    __my_tbl_start = .;
   *(.my_table*)
    __my_tbl_end = .;
  } > MY_TABLE

Вполне работало.


Вернуться наверх
 
Руководство для разработчика приложений на базе STM32WB55

Представив двухъядерные беспроводные микроконтроллеры STM32WB для IoT-приложений, компания STMicroelectronics предлагает разработчикам экосистему, включающую в себя отладочные платы, примеры кода для микроконтроллера, готовое ПО всех уровней и большой массив документации.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб фев 02, 2019 22:58:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14455
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
элементы таблицы объявлены именно с указанием секции. смысл этих телодвижений - создать некий аналог массива во FLASH, элементы которого разбросаны по отдельным модулям проекта - где нужно объявить, там и объявляется, а в итоге все эти разрозненные объвления оказываются в одном массиве. но надо как-то узнать адрес начала этого массива и его длину, для чего два этих символа и объявляю...

это первый мой опыт со скриптами, плохо понимаю, что делаю... но по образцу найденного в интернете: https://stackoverflow.com/questions/397 ... le-for-avr

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс фев 03, 2019 07:26:43 
Друг Кота
Аватар пользователя

Карма: 78
Рейтинг сообщений: 826
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4176
Откуда: Минск
Рейтинг сообщения: 0
А зачем такие сложности, на самом деле? Объявите массивы const PROGMEM (то есть, самым что ни на есть стандартным образом), и компилятор разберётся сам.

Я в моём случае пытался задействовать лишние 64кБ Flash-памяти на STM32F103C8, которых у него якобы нет. А какова у Вас причина не отдать это на откуп компилятору?


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс фев 03, 2019 08:08:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14455
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
сложности?
задача стоит такая: парсить входную строку, и по её первым нескольким (количество разное) символам вызывать ту или иную функцию.
то есть в начале строки идет текстовая команда и надо её выполнять.
как такие задачи решаются в avr-gcc?
описывается структура типа
Код:
typedef struct{
   void (*funcptr)(char *);
   const __flash char cmd[];
} item_t;
заметьте, что в конце структуры указатель на сроку во FLASH.
затем описываются все ключевые строки:
Код:
const __flash char str1[] = "CMD1";
const __flash char str2[] = "CMD2";
const __flash char str3[] = "CMD3";
затем определяются все функции обработки и массив во FLASH из этих структур
Код:
static void func1(void){
}

static void func2(void){
}

static void func3(void){
}

const __flash item_t table[] = {
   {.funcptr = func1, .cmd = str1},
   {.funcptr = func2, .cmd = str2},
   {.funcptr = func3, .cmd = str3},
}

ну а уж потом в цикле можно перебирать элементы массива, сравнивать начало строки с полем cmd и при совпадении вызывать соответствующую функцию.


согласны, что так принято делать? удобно ли это? это ужасно неудобно!

во-первых, надо отельно описывать строки, т.к. avr-gcc не может сразу помещать во FLASH строку, указанную в инициализации структуры.
во-вторых, все функции должны быть описаны до массива в том же модуле
в-третьих, если по ходу пьесы приходит на ум изменить количество элементов массива, то надо править сразу в трех местах...


с другой стороны, в avr-gcc имеется возможность в любом месте в любом модуле описать обработчик прерывания, и они все из разных мест будут собраны линкером в одну таблицу! вот аналогичный подход я и хочу реализовать:
Код:
#define tbl_entry(s) static const __flash char s[] = # s ; \
                     static void CONCAT(func_, s)(void); \
                     static const __flash __attribute__((section(".my_table"))) item_t CONCAT(item_, s) = {.funcptr = CONCAT(func_, s), .cmd = s}; \
                     static void CONCAT(func_, s)(void)
а затем в любом месте моего проекта(т.е. в любом месте любого исходника!) я напишу так
Код:
tbl_entry(CMD1){
  // обработка команды
}
и вуаля! линкер соберет все эти разрозненные "входы" в таблицу, останется лишь узнать адрес её начала и... понимаете?
согласитесь, что это просто очень удобно! и какой простор по применению этого метода при создании меню! красота ведь!

кстати, по моему конкретному вопросу: ночью приснилось - утром проверил. адрес __my_tbl_start как раз правильный! то есть printf("%04X %04X", &__my_tbl_start, &__my_tbl_end); выводит то, что надо. но выглядит это каким-то грязным хаком...

Добавлено after 8 minutes 1 second:
единственное, о чем следует помнить при таком подходе, так это об уникальности всех "команд". нельзя допускать, чтобы существовали команды, совпадающие с первыми символами другой команды, т.е. "CMD" недопустимо, если существует "CMD1". потому как линкер отсортирует элементы таблицы так, что "CMD" всегда будет попадаться при переборе первой, и сравнение начала входной строки с этой командой будет происходить всегда, даже если в строке указана команда "CMD1"...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Распродажа паяльных станций ATTEN и аксессуаров!
Индукционная паяльная станция AT315D - 3 977 ₽, станция паяльная AT80D – 2177 ₽, станция паяльная AT936b – 1000 ₽!

Заходите в раздел акции и спецпредложения на сайте prist.ru, покупайте измерительные приборы, инструмент и паяльно-ремонтное оборудование по специальным ценам.
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс фев 03, 2019 09:08:09 
Друг Кота
Аватар пользователя

Карма: 78
Рейтинг сообщений: 826
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4176
Откуда: Минск
Рейтинг сообщения: 0
ARV писал(а):
в avr-gcc имеется возможность в любом месте в любом модуле описать обработчик прерывания, и они все из разных мест будут собраны линкером в одну таблицу!
Так-то да, но в случае прерываний задача попроще. Всё-таки имена этих функций-прерываний фиксированы. И Вы, да, помещаете их где угодно в коде, но назвать "от балды" их не можете.

А вот эта задачка, когда сами имена функций отличаются - это уже сложнее. И, ещё, как указатели на эти функции, в каком порядке, будут выстроены в этой таблице? Где гарантия, что он не нарушится при добавлении новой?

Имхо, такое стремление к "красоте" кода, делает его уж слишком непереносимым.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс фев 03, 2019 09:30:11 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14455
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
для поиска вхождений подстрок в строке не принципиально, в каком порядке сравнивать, поэтому порядок размещения строк-функций в массиве не важен. конечно, могут быть исключения, и тогда о красоте придется забыть, но, в частном случае моих задумок это не важно на самом деле.

на счет переносимости у меня такое мнение: во-первых, я надеюсь, GCC работает с секциями одинаково для всех платформ, и LD, по идее, тоже. значит, проблема переносимости будет заключаться только и исключительно в правильном выборе секций и корректировке скрипта линкера под конкретную платформу. я так понимаю, это нормально. во-вторых, лично меня прблема переносимости волнует мало, т.к. я не профессионал.

теперь снова о личном.
я моем проекте DIGILIGHT я сделал, как мне казалось на тот момент, гибкую систему сборки прошивки с разными модулями-эффектов. однако, на деле это вылилось в следующее: каждый модуль эффекта сам себя "регистрировал" при помощи специальной функции. регистрация эта заключалась в том, что в массив фиксированной величины, размещенный в ОЗУ, заносились адреса интерфейсных структур модуля. т.е. все недостатки проявились в полной мере: расход ОЗУ, необходимость "регистрировать" модуль вручную... а ведь при помощи секций и линкера все это можно было сделать гибче и проще, и ОЗУ напрасно не тратить. да и в случае необходимости никто не запретит и в ОЗУ массивы делать за счет усилий компоновщика! гибкость получается высочайшая!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс фев 03, 2019 15:55:22 
Мудрый кот
Аватар пользователя

Карма: 24
Рейтинг сообщений: 285
Зарегистрирован: Чт июн 10, 2010 08:55:35
Сообщений: 1812
Откуда: Сибирские Афины
Рейтинг сообщения: 0
что я делаю не так? как в программе получить значения этих символов дл доступа к моей таблице?

Думается в программе именно к этим символам доступ не получить никак - это же линковщик.
Надо действовать обычными путями.
Исходя из моего понимания можно:
1) задать фиксированный адрес секции при линковке, а адрес передавать через дефайн в исходники;
2) в основной программе, точнее в первом модуле при общей сборке, объявить в той же секции переменную, она будет там первая - взять её адрес.
3) создать асемблерный (.S) файл, где разместить глобальную метку в нужной секции, в общую линковку ставить этот файл первым, в исходнике через extern.

Добавлено after 2 hours 25 minutes 1 second:
Kavka писал(а):
Думается в программе именно к этим символам доступ не получить никак
Мои представления были не точны. :?

ARV, это ж адрес! Метка сама по себе не резервирует память. Поэтому тип указанный в extern в упомянутом случае смысла не имеет, нужен именно адрес.

printf("%04X %04X", &__my_tbl_start, &__my_tbl_end);

PS: Да, сначала разобрался, а потом прочитал ваше сообщение, где уже проверили этот вариант... :)

_________________
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс фев 03, 2019 17:34:39 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14455
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
благодарю за желание помочь :) я уже вовсю пользуюсь этим методом - мне нравится.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн фев 04, 2019 16:55:10 
Мудрый кот
Аватар пользователя

Карма: 24
Рейтинг сообщений: 285
Зарегистрирован: Чт июн 10, 2010 08:55:35
Сообщений: 1812
Откуда: Сибирские Афины
Рейтинг сообщения: 0
линкер отсортирует элементы таблицы так, что "CMD" всегда будет попадаться при переборе первой, и сравнение начала входной строки с этой командой будет происходить всегда, даже если в строке указана команда "CMD1"...
Хм... Если я правильно понимаю, то строки объявлены как ASCIIZ, а сравнение строк осуществляется в написанной программе. И если это так, то частичное совпадение в начале имени команды может быть проблемой только при определённом способе сравнения. Если проверять строку полностью (с учётом их длины), то это не должно быть проблемой.
Или тут опять какие-то подводные грабли? :)

ARV писал(а):
благодарю за желание помочь :) я уже вовсю пользуюсь этим методом - мне нравится.
Для этого, ведь, тут и тусуемся :) :beer:

_________________
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн фев 04, 2019 19:13:03 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14455
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Kavka писал(а):
Для этого, ведь, тут и тусуемся
я тут дальше продолжаю думать в направлении секций памяти... по-моему, отличные перспективы автоматизации рутины открываются!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 12, 2019 11:35:36 
Мучитель микросхем

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 435
Рейтинг сообщения: 0
А есть какие то ньюансы по использованию _delay_ms()? воткнул в начало прошивки - и прошивка не стартует в мк, хотя далее по тексту в самой прошивке процедура задержки используется и используется успешно. Удаляешь строку с паузой и все норм.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 12, 2019 11:47:36 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 83
Рейтинг сообщений: 1536
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 14455
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
никаких нюансов нет.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...

клавиатура частенько сбоит - пропускает буквы. так что прошу простить, если что...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт май 17, 2019 20:08:59 
Мучитель микросхем

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 435
Рейтинг сообщения: 0
Есть плата. Долго рассказывать, но смысл в том что мне надо что бы она "стартовала" с небольшой задержкой, иначе происходит ложное срабатывание датчика. После ряда инициализаций втыкаю паузу _delay_ms() и прошивка умирает. В протеусе в симуляторе все работает, то есть пауза и понеслось. Куда смотреть то? В чем может быть дело? Пробовал по разному, в разных местах....

Код в начале вот такой:

Код:
unsigned char    butt_on_state=WAVE_ALW_ON_LOW,
            butt_off_state=WAVE_ALW_OFF_LOW,
            st_t=0;

         int   tmrLo=0,      //счетчик таймера понижения яркости
            tmrOff=0,      //счетчик таймера включения/отключения света
            tmrTun=0;      //счетчик таймера настройки света
unsigned char   is_tune=0,      //признак того что регулируют яркость и не надо выключать свет
            state_butt;      //Состояние главного конечного автомата кнопки (общий для двух)


DDRA=0x00;
DDRB=0x07;
DDRD=0x01;
PORTD=0x00;

for (unsigned char i=0;i<SP_COUNT;i++) arSteps[i]=0;

TCNT0=0;
TCCR0B = (0<<CS02)|(0<<CS01)|(1<<CS00);
TIMSK |= (1<<TOIE0); // разрешаем прерывание по переполнению таймера (ШИМ)

sei();

TCNT1=0;
TCCR1B = (0<<CS12)|(0<<CS11)|(1<<CS10);
TIMSK |= (1<<TOIE1); // разрешаем прерывание по переполнению таймера

/*задержка в одну секунду что бы датчики в себя пришли*/
_delay_ms(1000);

MCUCR = (1<<ISC00)|(0<<ISC01)|(1<<ISC10)|(0<<ISC11); // прерывания по изменению уровня INT0 или INT1
GIMSK = (1<<INT0)|(1<<INT1);

state=IDLE;
state_butt=BUTTON_NOT_PRESS;


PS тинька2313, sut=10 пробовал - мало


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт май 17, 2019 21:27:53 
Друг Кота
Аватар пользователя

Карма: 78
Рейтинг сообщений: 826
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4176
Откуда: Минск
Рейтинг сообщения: 0
А значение F_CPU определено в программе?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2078 ]     ... , , , , 104

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Александр61213, Volodiatel, Тихий демон и гости: 8


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y