Обсуждаем контроллеры компании Atmel.
Ответить

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

Чт мар 28, 2019 15:51:08

скажите а в CV возможно использовать структуру внутри объединения?

union TunionData
{
FATFS fat; // без этой строчки работает нормально

char buffer[BUF_SIZE];
unsigned char romCode[BUF_SIZE / 9][9];
unsigned char queue[BUF_SIZE];
};

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

Вс мар 31, 2019 12:19:21

в общем сам и отвечаю. в стандарте такая конструкция допустима, в IAR работает. в этом же недоделанном компиляторе нет.

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

Пн апр 01, 2019 19:16:19

У меня такая непонятка. Чтобы сконфигурировать выводы 0,1,2 порта на выход надо сделать так:
Код:
void main(void){
PORTB=0x00;
DDRB=0x00000111;
   
while (1)
      {        }
}     


Т.е. наоборот, не как на PIC контроллерах?

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

Пн апр 01, 2019 20:17:07

А чего у Вас так скобки дико пляшут? Если других запутать - тогда ладно, но себя-то пожалейте.

И да, в AVR биты DDR в единице = выход.

P.S. Помимо скобок, в коде ошибка.

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

Вт апр 02, 2019 08:15:50

WiseLord Ясно, спасибо. А где ошибка?
В принципе да, while(1){} там и не нужен оказался. И без него скомпилировалось - в железе тоже заработало.

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

Вт апр 02, 2019 08:36:39

Ошибка в том, что в 8-битный DDRB Вы пытаетесь записать как минимум 16-бит значение (0x0111). Вероятно, вместо этого имелось в виду 0x07.

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

Вт апр 02, 2019 08:38:16

это не ошибка

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

Вт апр 02, 2019 08:41:43

Ну.. опечатка. Не важно.

Такие вещи иногда сложно заметить, ведь всё "выглядит правильно". А в результате - не биты 0, 1, 2 в режиме выхода, а биты 0, 4.

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

Вт апр 02, 2019 09:15:12

Блин, точно. Хотел написать 0b00000111 , а в исходнике так и есть 0x07.

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

Вт апр 02, 2019 09:26:35

ещё раз подумайте, перед тем, как из майна while(1){} выкидывать

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

Чт июн 06, 2019 19:08:58

Помогите конвертировать Arduino Code в Codvision

digitalWrite(K_line_TX, HIGH), delay(300);
digitalWrite(K_line_TX, LOW), delay(25);
digitalWrite(K_line_TX, HIGH), delay(25);
Serial.begin(10400);
for(int i=0;i<5;i++) Serial.write(init_K[i]), delay (10);
delay(100);
}

char byfer[30];
n = Serial.available();
if (n > 0) { pac++;
for (int i=0;i<n;i++) byfer[i]=Serial.read();
String byte8 = String(byfer[8],DEC);
String byte10 = String(byfer[10],DEC);
if (n == 12 && byte8 == "193") {
Serial.flush();
for(int i=0;i<6;i++) Serial.write(temp1_K[i]), delay (10);
delay(100);
}

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

Сб июн 08, 2019 16:47:15

добрый день!
пытаюсь сформировать описание режима работы UART исходя из настроек в регистрах. но не могу прочитать UCSRC все время получаю 0 хотя UBRRL читается без проблем. в чем может быть дело?

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

Сб июл 06, 2019 15:11:39

Ребятки, такой вопрос хочу задать.
Только-что установил свежую CVAVR 3.37. И пока не могу привыкнуть к тому, как мастер генерирует код в плане описания регистров.
Например.
Было:

Стало:


С одной стороны информативнее благодаря названиям битов, с другой - как-то громоздко и не наглядно. А в описании портов и вовсе избыточно.

Может кто знает, можно ли вернуть старый стиль?

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

Сб июл 06, 2019 16:14:34

:) :) , а я наоборот в версии 2..... из первого вида во второй ручками перебиваю...
только немного не так, а с одними скобками и многобитные параметры в одну запись объединяю:
UCSRC=(1<<URSEL|0<<UMSEL|0<<UPM0|0<<USBS|3<<UCSZ0|0<<UCPOL);
а в описании портов: вначале назначаю дефайном (особенно это удобно в мелких тинях с одним портом) на какой ноге, какая периферия навешена а потом в инициализации:
PORTB=(1<<button|0<<led|0<<motor);
DDRB=(0<<button|1<<led|1<<motor);
и в коде потом использую имена а не номера ног и битов:
if (PINB&(1<<button)) {.....};
после этого, если мне понадобится перевесить периферию в пределах порта, то на изменение кода уйдет порядка 10 секунд... (дефайны в начале кода изменить)

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

Сб июл 06, 2019 22:23:40

Ну, кнопки я тоже дефайнами назначаю и ифы получаются еще короче и проще. А байты привык записывать в двоичном виде (ручками переписываю из шестнадцатеричных). Может по-школьному совсем, но моему мозгу так проще)

В 3 версии компилятор подсказывать начал, варианты предлагать. Это прикольно. Но компиляция кода проходит раза в два дольше. Ну и мой вопрос в прошлом сообщении.
Прям и не знаю теперь, на какой версии остаться :)

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

Ср июл 17, 2019 09:36:30

Всем молока!

Друзья, помогите, пожалуйста.
Программка очень простая, но работает не корректно.
На словах: МК - AtTiny13A. Проблема в реализации задержки на таймере (мне так сдаётся).
При включении МК смотрит на лог-уровень ноги "SIGNAL_PIN" и в зависимости от увиденного выполняет opening(); или closing();
Эти подпрограммы действуют так: подают на ноги PB3 и PB4 (OUT_PIN_1 и OUT_PIN_2) лог.1 и лог.0 (открытие) и лог.0 и лог.1 (закрытие). Далее должна идти задержка на таймере (2.5 сек) и после выставляет высокий уровень на обеих ногах.

В основном цикле программы идёт анализ флага (который меняется от внешнего прерывания по любому изменению) и в зависимости от него снова "открытие" или "закрытие".

Что вижу в Протеусе:
1. при включении - на обеих выходах OUT_PIN_2 и OUT_PIN_1 - высокий уровень (он, конечно настроен в инициализации порта, но перед тем как зайти в основной цикл - должно всё поменяться...)
2. при изменение уровня на ноге внешнего прерывания - происходит изменение уровня на OUT_PIN_n, но задумка такова, что через 2500 мСек снова должен измениться уровень и стать высоким на обеих ногах. Этого не происходит...

Видится мне, что проблема в строчке while (time);. Вроде бы тут мой delay должен "висеть" пока в прерываниях от переполнения таймера time не станет 0.
Код ниже:



PS. таймер настроен на срабатывания раз в 1 мСек. Частота МК 4,8 МГц.

Что не так? о.О

Во вложении весь проект в CVAVR.
Вложения
Tiny13A.zip
(58.83 KiB) Скачиваний: 83

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

Ср июл 17, 2019 09:51:55

он на строчку
time = time--;
не ругается?
просто
time--;
уже не катит?
или даже
time-=(time)? 1:0;
так он дойдет до 0 и остановится

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

Ср июл 17, 2019 10:24:57

он на строчку
time = time--;
не ругается?
просто
time--;
уже не катит?
или даже
time-=(time)? 1:0;
так он дойдет до 0 и остановится

Большое спасибо! Попробовал написать по другому: time = time-1; и чудо случилось! Таймер работает, вот только теперь не совсем корректно работает отклик на изменение уровня входящего сигнала... UPD: помогло добавление case 2: break; Но всё же иногда состояние портов выхода зависает при быстром переключении входного уровня...

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

Чт окт 10, 2019 12:20:12

доброе время суток.
хотелось портировать следуюший проэкт на codevision.
http://arv.radioliga.com/content/view/180/38/
http://arv.radioliga.com/component/opti ... ect/id,30/

Создал проэкт в codevision и прикрепил файлы. как ожидалось пошли сообшения об ошибках. постепенно исправил несогласия в исходниках между AVRGCC и codevision,
но в определенном месте не смог исправить. в сылках есть готовый проэкт в протеусе. если кто зайнтересуется могу выложить все что имею, все шаги праделанные и нынешную ошибку. (можно ли прикрепить архивы тут ? )

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

Чт окт 10, 2019 12:45:02

на гугл диск выложи, а сюда ссылку на файлы
Ответить