CodeVision AVR в вопросах и ответах
Re: CodeVision AVR в вопросах и ответах
подскажите как провернуть такое. допустим происходит чтение ds18b20. в это время наступает прерывание в котором читаются кнопки. допустим кнопка нажата, как сделать так чтоб при выходе из этого прерывания, прекращалась текущая процедура чтения ds18b20 и выполнялся код который идет после чтения?
мне это нужно для того чтоб реакция на нажатие кнопки была незамедлительна, а не ждать пока отработает чтение датчика.
мне это нужно для того чтоб реакция на нажатие кнопки была незамедлительна, а не ждать пока отработает чтение датчика.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
to ValBag:
никто не запретит вам создать union с вашим битовым полем, для которого так же будет выделены битовые поля для доступа к каждому биту... только нафига весь этот огород?!
to neon-f:
во-первых, чтение датчика занимает примерно 16 миллисекунд - это ж какая у вас реакция, что нажатие кнопки при этом так задерживается?! человек должен быть резче, чем детский утренний понос, чтобы заметить запаздывание реакции на нажатую кнопку в 16-20 миллисекунд!!! тем более, что для кнопки надо дребезг подавлять - а это минимум 10 миллисекунд.
во-вторых, почему бы не продолжать спокойно дочитывание информации из датчика, отработав прерывание от кнопки (если уж так нетерпится)? почему надо обязательно завершать процедуру чтения?
наконец, в-третьих, чтение инфы из датчика ведется явно в цикле - почему бы в этом цикле не проверять дополнительно какой-то флаг, который устанавливается в обработке вашей супер-резкой кнопки? если флаг установлен - return и точка.
никто не запретит вам создать union с вашим битовым полем, для которого так же будет выделены битовые поля для доступа к каждому биту... только нафига весь этот огород?!
to neon-f:
во-первых, чтение датчика занимает примерно 16 миллисекунд - это ж какая у вас реакция, что нажатие кнопки при этом так задерживается?! человек должен быть резче, чем детский утренний понос, чтобы заметить запаздывание реакции на нажатую кнопку в 16-20 миллисекунд!!! тем более, что для кнопки надо дребезг подавлять - а это минимум 10 миллисекунд.
во-вторых, почему бы не продолжать спокойно дочитывание информации из датчика, отработав прерывание от кнопки (если уж так нетерпится)? почему надо обязательно завершать процедуру чтения?
наконец, в-третьих, чтение инфы из датчика ведется явно в цикле - почему бы в этом цикле не проверять дополнительно какой-то флаг, который устанавливается в обработке вашей супер-резкой кнопки? если флаг установлен - return и точка.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
не, не так.
есть прерывание обслуживающее динамическую индикацию. также внутри этого прерывания производится чтение кнопок(их у меня 12 шт(про антидребезг не забыл)) и переменной bytton присваиваю значение состояния кнопок. потом по выходу из прерывания происходит какое то действие в зависимости от того какая кнопка нажата. так вот, если кнопка нажата когда началось чтение датчика(а он опрашивается раз в 5сек) то по выходу из прерывания произходит дочитывание датчика, а уж потом проверяется значение bytton и производится определенное действие. а чтение ведь почти секунду длиться, и следовательно периодически я получаю неприятные "затыки" реакции кнопок.
есть прерывание обслуживающее динамическую индикацию. также внутри этого прерывания производится чтение кнопок(их у меня 12 шт(про антидребезг не забыл)) и переменной bytton присваиваю значение состояния кнопок. потом по выходу из прерывания происходит какое то действие в зависимости от того какая кнопка нажата. так вот, если кнопка нажата когда началось чтение датчика(а он опрашивается раз в 5сек) то по выходу из прерывания произходит дочитывание датчика, а уж потом проверяется значение bytton и производится определенное действие. а чтение ведь почти секунду длиться, и следовательно периодически я получаю неприятные "затыки" реакции кнопок.
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
neon-f писал(а):а чтение ведь почти секунду длиться, и следовательно периодически я получаю неприятные "затыки" реакции кнопок.
Чтение длится несколько десятков миллисекунд. Секунда нужна датчику для преобразования температуры. Но, не обязательно же заставлять МК тупо простаивать эту секунду, можно в это время занять его другим, более важным делом. А датчик опрашивать когда-нибудь там в цикле, готов он отдать температуру или нет.
Re: CodeVision AVR в вопросах и ответах
я только за, научите как.
- sema
- Мудрый кот
- Сообщения: 1708
- Зарегистрирован: Ср апр 23, 2008 17:44:56
- Откуда: Россия, г. Нижний Новгород
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
neon-f писал(а):я только за, научите как.
пишем в CVAVR? научится можно глянув в хелп к этому компилятору
заодно и размер *.hex уменьшится немножко
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Re: CodeVision AVR в вопросах и ответах
да, в CVAVR?
к сожалению с нулевым английским смотреть туда бесполезно. может подбросите кусочек кода.
к сожалению с нулевым английским смотреть туда бесполезно. может подбросите кусочек кода.
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
neon-f писал(а):я только за, научите как.
После подачи команды на преобразование температуры (0x44), периодически отсылайте датчику команду чтения данных (0xBE), как только датчик перестанет отвечать нулём - можно делать сброс и читать температуру. Разумеется, т.к. датчику приходится просаживать линию в ноль, паразитное питание - невозможно.
- sema
- Мудрый кот
- Сообщения: 1708
- Зарегистрирован: Ср апр 23, 2008 17:44:56
- Откуда: Россия, г. Нижний Новгород
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
а делается это низкоуровневыми коммандами...
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Re: CodeVision AVR в вопросах и ответах
А подскажите пожалуйста как можно програмно сбросить контроллер ATmega. (ног свободных нет)
Токо сильно носом тыкать не надо ежели обсуждалось уже где
Токо сильно носом тыкать не надо ежели обсуждалось уже где
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Могу ошибаться, но вроде как единственный способ программного сброса МК - ватчдок.
Re: CodeVision AVR в вопросах и ответах
AI_Disable
sema
так это надо библиотеку править??? или что? я пока только вершки си осилил, а остальное для меня темный лес. если не тяжело, может кусок готового кода, или пример дадите, который я смогу в свою СИ программу вставить.
sema
так это надо библиотеку править??? или что? я пока только вершки си осилил, а остальное для меня темный лес. если не тяжело, может кусок готового кода, или пример дадите, который я смогу в свою СИ программу вставить.
- sema
- Мудрый кот
- Сообщения: 1708
- Зарегистрирован: Ср апр 23, 2008 17:44:56
- Откуда: Россия, г. Нижний Новгород
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
вот:
The 1 Wire Functions are:
unsigned char w1_init(void)
this function initializes the 1 Wire devices on the bus.
It returns 1 if there were devices present or 0 if not.
unsigned char w1_read(void)
this function reads a byte from the 1 Wire bus.
unsigned char w1_write(unsigned char data)
this function writes the byte data to the 1 Wire bus.
It returns 1 if the write process completed normally or 0 if not.
unsigned char w1_search(unsigned char cmd,void *p)
this function returns the number of devices connected to the 1 Wire bus.
If no devices were detected then it returns 0.
The byte cmd represents the Search ROM (F0h), Alarm Search (ECh) for the DS1820/DS18S20, or other similar commands, sent to the 1 Wire device.
только что скопипастил из хелпа к CVAVR 2***
перевести описание функций элементарно
The 1 Wire Functions are:
unsigned char w1_init(void)
this function initializes the 1 Wire devices on the bus.
It returns 1 if there were devices present or 0 if not.
unsigned char w1_read(void)
this function reads a byte from the 1 Wire bus.
unsigned char w1_write(unsigned char data)
this function writes the byte data to the 1 Wire bus.
It returns 1 if the write process completed normally or 0 if not.
unsigned char w1_search(unsigned char cmd,void *p)
this function returns the number of devices connected to the 1 Wire bus.
If no devices were detected then it returns 0.
The byte cmd represents the Search ROM (F0h), Alarm Search (ECh) for the DS1820/DS18S20, or other similar commands, sent to the 1 Wire device.
только что скопипастил из хелпа к CVAVR 2***
перевести описание функций элементарно
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
- evgeniy66
- Нашел транзистор. Понюхал.
- Сообщения: 151
- Зарегистрирован: Пт май 01, 2009 08:58:42
- Откуда: г. Коломна
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
AI_Disable писал(а):Могу ошибаться, но вроде как единственный способ программного сброса МК - ватчдок.
Можно еще использовать безусловный переход на начало проги (в СИ - это функция main), но если прога зависнет, данный способ конечно не сработает.
Re: CodeVision AVR в вопросах и ответах
Ну на счёт сторожевого таймера понятно, просто както не очень удобно, Думал может есть какая функция на Си или вставка на асме. Неужели ничего такого нет. 
[img]http://i053.radikal.ru/1102/71/0a0346d3a067.gif[/img]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
[size=85]Ты думаешь ты думал как ты думаешь? (с)[/size]
Re: CodeVision AVR в вопросах и ответах
Помогите, добрые коты! где найти как написано в руководствах "в свойствах проекта CVAVR надо указать float для sprintf"
Имеется компилятор WinAVR-20090313 и AVR Studio 4.14. ПРобовал, как написано http://winavr.scienceprog.com/avr-gcc-tutorial/using-sprintf--function-for-float-numbers-in-avr-gcc.html - Не работает почемуто, может еще где-то корявка...
Имеется компилятор WinAVR-20090313 и AVR Studio 4.14. ПРобовал, как написано http://winavr.scienceprog.com/avr-gcc-tutorial/using-sprintf--function-for-float-numbers-in-avr-gcc.html - Не работает почемуто, может еще где-то корявка...
...Им бы пить и жрать в три горла день и ночь,
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
tuco2009 писал(а):Помогите, добрые коты! где найти как написано в руководствах "в свойствах проекта CVAVR надо указать float для sprintf"
Имеется компилятор WinAVR-20090313 и AVR Studio 4.14. ПРобовал, как написано http://winavr.scienceprog.com/avr-gcc-tutorial/using-sprintf--function-for-float-numbers-in-avr-gcc.html - Не работает почемуто, может еще где-то корявка...
вообще-то об WinAVR есть совсем отдельная тема... но пока модераторы не видят, подскажу:
то есть добавьте нужные параметры в свойства вашего проекта (в AVR Studio открываете свойства проекта и переходите на закладку Custom Options, там в параметрах линкера вводите нужную строчку) и добавьте соответствующую библиотеку для компоновки... кстати, по вашей ссылке это и написаноПримечания: полная реализация всех возможностей форматирования требует больших затрат программной памяти. С целью минимизации ресурсов существует 3 варианта реализации функции vfprintf(), выбираемых компоновщиком во время сборки проекта:
- обычная (по умолчанию) – реализует все виды преобразований, кроме предназначенных для чисел с плавающей точкой;
- усеченная – реализует только базовые преобразования форматов целых чисел и строк, кроме того, может применяться только префикс # (см. Спецификация строки формата для функций форматированного вывода);
- полная – реализующая полную спецификацию форматов.
Усеченная версия выбирается следующими параметрами компилятора:
-Wl,-u,vfprintf -lprintf_min
Полная версия выбирается следующими параметрами компилятора:
-Wl,-u,vfprintf -lprintf_flt -lm
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
ARV писал(а):... там в параметрах линкера вводите нужную строчку) и добавьте соответствующую библиотеку для компоновки... кстати, по вашей ссылке это и написанопоздно увидел
Вот поэтому и пишу, что не работает
Я уже все облазил, при билде вылазит
Код: Выделить всё
avr-gcc.exe -mmcu=atmega8 -Wl,-u,-vfprintf -lm -Wl,-Map=tonometr.map tonometr.o -lprintf_flt -lm -o tonometr.elf
Т.е. вроде нормально, параметры заданы, библиотеки тоже подключил - ан нет, не работает...
Уже даже все файлы в папке поудалял, кроме проэктного и .с, думаю, пусть заново все пересоздаст - не хотит выводить ФЛОАТ
В чем может быть загогулина? Уже 3-й день простейшую прогу сделать не могу. В int все считать не получится, там три не очень простые формулы с делением и умножением...
...Им бы пить и жрать в три горла день и ночь,
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
внимательно посмотрите, как должны вводиться опции:
у вас
надо
у вас
-Wl,-u,-vfprintf
надо
-Wl,-u,vfprintf
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: CodeVision AVR в вопросах и ответах
уже пробовал и -Wl,-u,vfprintf и
-Wl,-u,-vfprintf
а также все это с -lm и без него - результат один - пустой массив. Вот сильно упрощенный код.
-Wl,-u,-vfprintf
а также все это с -lm и без него - результат один - пустой массив. Вот сильно упрощенный код.
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdio.h>
unsigned char ADCOut [16];
float Mean;
float StandartDeviation;
Mean = 12.45;
StandartDeviation=25.25;
for (;;){
sprintf (ADCOut,"%2.2f+-%2.2f", Mean,StandartDeviation);
}
...Им бы пить и жрать в три горла день и ночь,
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем
Будь ты трижды гений - им нельзя помочь...
\\Ария\\Игра с огнем