Страница 368 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт сен 01, 2016 07:05:25
COKPOWEHEU
Я почему спросил мне хочется как то это дело изменить и сделать доступ к пину по индексу типа PORTD[indx] иди как то так
Скорее всего, не выйдет. Либо это окажется слишком сложно.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт сен 01, 2016 08:15:30
lkote68
COKPOWEHEU Постом выше вашего, мой ответ, что все получилось и все работает и не сложно :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт сен 01, 2016 16:34:26
COKPOWEHEU
Я говорил про вашу задачу - обращение к любому биту как к элементу массива. Естественно, если вывод известен на момент компиляции никаких проблем нет.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс сен 04, 2016 12:20:53
DataLife
Всем доброго дня.

Может у кого завалялся код диммера для тини2313 или мега8 ? Схема будет с распознованием нуля. На основе этой:

Изображение

Перерыл весь инет, что-то толкового не могу найти ничего. Только готовые HEX'ы. А мне допилить "под себя нужно".

Задумка весьма проста и такова: через UART получать значения в процентах (ну или 0-256, если это удобней) и выставлять соответственную мощность лампы. Ничего лишнего.

Помогите, пожалуйста, тыкните меня ссылкой (Cи под CVAVR) ...

PS. или на пальцах обьясните принцип, а то чесно говоря некотрые нюансы я не понял...

1) выход детектора на внешнее прерывание. Ок.
2) Настраиваем таймер. Предположим 1 "тик" за 1 мс.
3) Настраиваем переполнение таймера совпадению с параметром (берём данные из UART)
4) Одна полу-волна = 10 мс.
5) По срабатыванию детектора - обнуляем таймер. Выключаем симистор.
6) Включаем таймер до переполнения (все те же значения из UART)
7) При переполнении включаем симистор.

Что-то на правду похожее есть?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс сен 04, 2016 12:57:55
Аlex
DataLife писал(а):А мне допилить "под себя нужно".
Почему бы под себя не сделать весь код ? :dont_know:

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс сен 04, 2016 13:39:41
Z_h_e
Я бы сделал так:

1. Настраиваем таймер, чтобы считал один тик - 0,1 мс.
2. Настраиваем прерывание при совпадении таймера с регистром (OCRB чтоли называется, ДШ не хочу смотреть).
3. Настраиваем внешнее прерывание от детектора фазы.
4. Настраиваем прерывание по приему UART

Обработчик внешнего прерывания сбрасывает счетчик.
Обработчик совпадения дает короткий управляющий импульс на симистор.
Обработчик UART загружает регистр сравнения новым значением.

Конечно тут не учтены всякие "мелочи" типа задержка включения оптопары и точность таймера, но это все решаемо по ходу задачи.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пн сен 05, 2016 14:53:05
lkote68
Привет котам и котятам

Народ не подскажете куда собственно это кладется puts("тра ля ля");
по идее во флэш. По идее там 16К и таких строк должно быть не мало :)
по идее у меня занято пол памяти Program size: 4644 words (9288 bytes), 56,7% of FLASH

Bit variables area: 0x2 to 0x2
Bit variables size: 1 byte(s)
Data Stack area: 0x60 to 0x15F
Data Stack size: 256 byte(s)
Estimated Data Stack usage: 175 byte(s)
RAM Global variables area: 0x160 to 0x431
RAM Global variables size: 722 byte(s)
Hardware Stack area: 0x432 to 0x45F
Hardware Stack size: 46 byte(s)
Heap size: 0 byte(s)
EEPROM usage: 0 byte(s), 0,0% of EEPROM
Program size: 4644 words (9288 bytes), 56,7% of FLASH

Я никогда не интересовался что есть Hardware Stack area. И вот обнаружил что при добавлении еще
10 строк типа puts("тра ля ля"); codevision сообщил что не хочет компилировать и беда вроде в
том что Hardware Stack size превысила Hardware Stack area.

Data Stack area: 0x60 to 0x15F
Data Stack size: 256 byte(s)
Estimated Data Stack usage: 175 byte(s)
RAM Global variables area: 0x160 to 0x509
RAM Global variables size: 938 byte(s)
Hardware Stack area: 0x50A to 0x45F
Hardware Stack size: -170 byte(s)
Heap size: 0 byte(s)
EEPROM usage: 0 byte(s), 0,0% of EEPROM

Что я не так понимаю ? Или мои текстовые константы хранятся не в памяти программ?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср сен 21, 2016 00:04:56
realm
Вопрос к знатокам.
В ATXmega32 есть модуль DES шифрования/дешифрования.
Все вроде просто - Записываем в регистры R0 ... R15 Данные и ключ, выставляем флаг, делаем команду DES и получаем в R0...R7 результат. Вот только загвостка есть. В хелпе написано, что регистры с 2 по 21 не доступны для ассемблерных вставок.
The registers R0, R1, R22, R23, R24, R25, R26, R27, R30 and R31 can be freely used in assembly routines.

Вопрос такой - Как собственно обойти это ограничение?

А если есть рабочий пример под DES, было б вообще замечательно.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср сен 21, 2016 07:25:33
COKPOWEHEU
Для ассемблерных вставок доступно вообще все. В даташите указано что регистры кроме указанных нужно обязательно восстанавливать после использования.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 24, 2016 09:16:20
mixon46
позволительно ли так писать?

PORTB=digits[discharge]

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб сен 24, 2016 12:29:34
COKPOWEHEU
Да, если типы правильные - беззнаковые, целочисленные.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб окт 01, 2016 17:14:20
Fedorini
Ребята, помогите разобраться,"Программа была написана с использованием Code Vision AVR версии 1.24.8d, версия 2.05.5 дает более компактный код.
Fuse Bits необходимо выставить для работы с внешним кварцевым резонатором
SKSEL0 = 1 (галочка снята)
SKSEL1 = 1 (галочка снята)
SKSEL2 = 1 (галочка снята)
SKSEL3 = 1 (галочка снята)
SUT0 = 1 (галочка снята)
SUT1 = 1 (галочка снята)"
Не знаю как биты выставить. Буду благодарен за помощь

Вопрос по CodeVisionAVR.

Добавлено: Чт окт 06, 2016 17:54:44
alex 54
Здравствуйте,создаю CodeVisionAVR cwx проект в CodeVision,далее при сохранении cwx должно выскочить окошко,(нижняя картинка)где будет предложено создание решения для Atmel Studio,
но оно почему то не выскакивает.Пробовал студии Atmel Studio 6.1,Atmel Studio 6.2,никакой разницы.
Подскажите,кто знает,в чем дело,т.к.я начинающий,а точнее начинающий понимать.

Спасибо за внимание.

CodeVisionAVR.jpg
(69.46 КБ) 220 скачиваний

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс окт 09, 2016 04:46:51
kotriks
Народ помогите с некой инициализацией в юарт. Имею две функции например
botoff();
и
birr();

Код: Выделить всё

interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSR0A;
data=UDR0;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) {
if (data=='1') {botoff();} 
if (data=='2') {birr();} 
}
как находясь в
birr();
отключить
botoff();
чтобы UART не вызывал
botoff();
при нажатии на 1 так как у меня в
birr();
будет ещё подменю с вызовом нажатий 1 и 2.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс окт 09, 2016 11:49:05
Аlex
Флаги заведите.
Или машину состояний реализуйте, что в дальнейшем упростит Вам реализацию подобных алгоритмов.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс окт 09, 2016 18:32:09
kotriks
где поглядеть почитать что это вообще такое? или пример где есть? какую машину завести буггати или ламборджини :))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс окт 09, 2016 18:35:49
RusikOk
kotriks писал(а):где поглядеть почитать что это вообще такое? или пример где есть? какую машину завести буггати или ламборджини :))
https://ru.wikipedia.org/wiki/%D0%A4%D0%BB%D0%B0%D0%B3_(%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F_%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт окт 28, 2016 14:10:21
12val12
кто то может такую процедуру задежки
имеется ATmega8-16- 128 с тактовой 20мГц (50 нсек цикл)

Delay_cycle ( unsigned long delay_var)
{..... }

при входящем параметре 0 (ноль) задержка скажем 2 мкс( можно и 5 не суть важно)
нужно чтобы при приросте параметра на 1 задержка увеличивалась на 50нСек
должна быть обеспечена непрерывность роста задержки до 24 битных значений

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт окт 28, 2016 14:25:51
Vov123
Буквы русские, понять не могу смысла.
Понял что товарищ хочет mega разогнать до 20 МГц.
Спрошу: и, что, работает?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Пт окт 28, 2016 14:47:01
WiseLord
Ну, работать-то оно будет. Не такой уж и сильный разгон.

Вопрос в том, что товарищ хочет шаг изменения задержки в 50нс, или в один такт.

В принципе, в функции напрашивается что-то вроде

Код: Выделить всё

volatile uint32_t x = 20UL + delay_var; // 20UL - некая константа, задающая нужную задержку при delay_var = 0;
while(--x);
Правда,
1) не уверен, что не будет скачков длительности при переполнениях байтов числа-задержки.
2) сложность в том, что на декремент 32битного числа понадобится, судя по всему, минимум 4 такта процессора. Так что шаг 50нс - это вряд ли, думаю.