Например TDA7294

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





Текущее время: Ср апр 17, 2024 01:33:03

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8273 ]     ... , , , 402, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 10, 2019 13:55:14 
Родился

Зарегистрирован: Пн май 25, 2009 14:00:02
Сообщений: 10
Рейтинг сообщения: 0
спасибо Oxford.

вот тут собственно изначальный архив с рабочей моделью протеуса:
https://drive.google.com/open?id=1UsX8r ... _E2kVJ9fbb

тут готовый проэкт для codevision с кучами ошибок (только в место main.c переименовал в menu_01.c).
https://drive.google.com/open?id=1Of-MS ... u9nvFrqGg8

тут со всеми что сумел "напортачить". думаю в "исправленных ошибок или несогласиях" которых я проделал будут кучи моих ошибок, потому лучше чтобы опытные пользователи началибы портирование с хотабы с предыдущего архива :) например с ругания компилятора о том чтобы "This library requires AVR-GCC 3.3 or later, update to newer AVR-GCC compiler !" я просто закоментировал. потом еше codevision выдавал ошибку ссылавшего на файл pgmspace.h, в место него воткнул в папку AVR-GCC-овский файл pgmspace и назвал его avr_pgmspace и т.д.
https://drive.google.com/open?id=1CEmjv ... OEhwjAKlHg


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 17, 2019 14:57:53 
Родился

Зарегистрирован: Пн май 25, 2009 14:00:02
Сообщений: 10
Рейтинг сообщения: 0
упростил вопросс, убрал все лишнее (может не все), остались 2 ошибки на данный момент. зачем ругается компилятор ?

Error: D:\C prog\cvavreval\MY PROJ\tests\test_328_2\generator.c(86): a value of type 'flash pchar flash *' can't be used to initialize an entity of type 'f_get_txt'
Error: D:\C prog\cvavreval\MY PROJ\tests\test_328_2\generator.c(126): incompatible return expression of type 'unsigned char [16]', expect a 'flash pchar'

вот собственно код:


#include <mega328.h>
#include <delay.h>
#include <string.h>
#include <stdlib.h>
#ifndef NULL
#define NULL (void*)(0)
#endif
#define PSTR(str) (str)

#define item_sim(t, v) { \
.id = M_SUBMENU + v, \
.item.smi.text = t, \
.item.smi.sub_cnt = 0, \
.item.smi.subm = NULL}

#define item_opt(f, d, o) { \
.id = M_OPTMENU, \
.item.omi.get_text = f, \
.item.omi.data = d, \
.item.omi.optid = o}

static char tr[16];
typedef char flash *pchar;
typedef enum{
EV_NONE = 0,
EV_PREV = 1,
EV_NEXT = 2,
EV_ENTER = 3,
EV_ESCAPE = 4
} EVENT;

static pchar ed_uint(void* data, unsigned char v, unsigned char ch);

flash char mmm1[] = "ONE LINE";
flash char mmm2[] = "MULTI LINE";
#define menu_one 1
#define menu_multi 2
static unsigned int number1 = 100;
typedef char prog_char;
typedef char* (*f_get_txt)(void*, unsigned char , unsigned char);
unsigned int edit_uint (unsigned char y, prog_char *msg, unsigned int val, unsigned int min, unsigned int max);
typedef struct Node* tag_menu;
typedef unsigned char byte;
typedef struct {
int a;
char b[5];
} struct_type;

typedef enum {
M_SUBMENU = 0x00,
M_OPTMENU = 0x80
} MENU_ITEM_TYPE;

typedef struct {
pchar text;
unsigned char sub_cnt;
tag_menu subm;
} MENU_SUB_ITEM;


typedef struct {
f_get_txt get_text;
void* data;
unsigned char optid;
} MENU_OPT_ITEM;

typedef union{
MENU_SUB_ITEM smi;
MENU_OPT_ITEM omi;
} MENU_ITEM;

typedef struct Node{
MENU_ITEM_TYPE id;
MENU_ITEM item;
} t_menu;



flash t_menu m_mode[] = {
item_sim(mmm1,menu_one),
item_sim(mmm2,menu_multi)
};

flash t_menu m_edit[] = {
item_opt(ed_uint, &number1, 0)
};

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif


// Global enable interrupts
#asm("sei")

while (1)
{
// Place your code here
PORTC.0 = 1;
#asm("nop")
#asm("nop")

PORTC.0 = 0;
}
}

static pchar ed_uint(void* data, unsigned char v, unsigned char ch){
char ts[6];
if(ch){

*(unsigned int*)data = edit_uint(0,PSTR("Unsigned: "),*(unsigned int*)data,50,20000);
}

strcpyf(tr,PSTR("UINT EDIT "));
ltoa((unsigned int)(*(unsigned int*)data),ts);
strcat(tr,ts);
return tr;
}

unsigned int edit_uint(unsigned char y, prog_char *msg, unsigned int val, unsigned int min, unsigned int max)
{
return 1;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн окт 28, 2019 13:46:43 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Делал свою систему распределения времени подзадач вот что у меня вышло...(пример для опроса DS18b20)
Спойлер
Код:
#define DDRTEMP           DDRD                                    // Установить порт к которому подключен датчик температуры на выход
#define PINTEMP           PIND                                    // Установить порт к которому подключен датчик температуры на вход
#define BT                   0                                    // Пин порта к которому подключен датчик температуры
#define Speed_temp       0.122                                    // частота таймера в кГц

//#define StartDelay(x,t)  if (t) {(t)--;} else {switch (x){case 0: (t)=-1;
#define StartDelay(x,t)  if (t) {if (~(t)) (t)--;} else {switch (x){case 0: (t)=-1;
#define Delay(num,te,x,t)  (x)=(num); (t)=(te)*Speed_temp; break; case(num): (t)=-1;
#define EndDelay(te,x,t) (t)=(te)*Speed_temp; default: (x)=0;};};
//переменные:
//num - порядковый номер задержки (пока не придумал как автоматизировать), главное чтобы не повторялись внутри одной группы задержек
//te  - время задержки в миллисекундах
//x   - статик переменная, хранит адрес возврата (номер точки)
//t   - статик переменная, счетчик задержки

void GetTemp(void)    //процедура получения температуры
 {
 static   unsigned char DelyGetTemp = 1000*Speed_temp;                         //задержка перед первым измерением 1 сек.
 static   unsigned char  StepGetTemp = 0;     
 static   unsigned char TermH, TermL;
 StartDelay(StepGetTemp,DelyGetTemp)                        //это разделители, чтобы подпрограмма не выполнялась слишком долго, а перезапускалась и при перезапуске продолжалась с места остановки
 DS18B20_init();                                            // Инициализация DS18B20   
 Delay(1,0,StepGetTemp,DelyGetTemp)                                             
 write_18b20(0xCC);                                         // Проверка кода датчика
 Delay(2,0,StepGetTemp,DelyGetTemp)
 write_18b20(0x44);                                         // Запуск температурного преобразования                                         
 Delay(3,850,StepGetTemp,DelyGetTemp)                       // Пауза >750 мс
 DS18B20_init();                                            // Инициализация DS18B20
 Delay(4,0,StepGetTemp,DelyGetTemp)                                           
 write_18b20(0xCC);                                         // Проверка кода датчика
 Delay(5,0,StepGetTemp,DelyGetTemp)
 write_18b20(0xBE);                                         // Считываем содержимое ОЗУ
 Delay(6,0,StepGetTemp,DelyGetTemp)
 TermL = read_18b20();                                      // Читаем младший байт блокнота
 Delay(7,0,StepGetTemp,DelyGetTemp)
 TermH = read_18b20();                                      // Читаем старший байт блокнота     
 Delay(8,0,StepGetTemp,DelyGetTemp) 
 Temperature=((((TermH<<8)+TermL)*10)>>4)+Corr;
 if (OK_Flag != 0) {Temperature = -2000; Count=0;};   
 Count+=(~Count)? 1:0;                                     //это моё- счет правильныхъ измерений - для исключения ложных переключений компрессора
 EndDelay(150,StepGetTemp,DelyGetTemp)                     //задержка перед следующим измерением до 1сек
 }
при развертывании дефайнов код разворачивается в обычный свитч-кейс...
_____
я уже выкладывал эту идею на обозрение на этом форуме - меня попросили избавиться от ГОТО (я избавился) и предложили идею как узнавать текущий программ каунтер - через стек (он сохраняется в стеке при вызове подпрограммы) - пошел по этому пути, т.к. считаю, что на подзадачах код будет более компактным (а для тини это важно)
но у меня ничего не вышло...
_____
пробовал через указатели - не получается в указатель загрузить данные из регистра SP... пишет про несоответствие типов
пробовал через ассемблерные вставки - не получается вставке передать метку (из С кода) и как параметр метку тоже применить не получилось (чтобы взять адрес из неё)
пишу здесь, т.к. работаю в КВАВР и если возможно, предпочел бы (но не обязательно) получить подсказку по нюансам именно этого компилятора ...
может есть у кого какие наработки или мысли... :cry:


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 12:06:34 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Сделал на подпрограммах - вроде всё понял... и квавр уже не ругается и 100 слов кода сэкономилось... но... ничего не работает и не понятно почему... :dont_know:
весь код остался прежним, изменилось содержимое дефайнов:
Спойлер
Код:
#pragma warn- // this will prevent warnings
void Set_PC(unsigned int x)
{
#asm
    ;ldd   R26,Y+1    ;R26=xL  загрузка параметра в X
    ;ld    R27,Y     ;R27=xH
    ;закомментировал, т.к. значение х уже в этих регистрах
    in    R30,SPL  ;загрузка SPL в Z
    ;in    r31,SPH  ; для меги
    clr   R31      ; для тини
    ADIW  r30,0x01 ;Z=Z+1       
    st    Z+,r26    ;обновляем точку перехода в ОЗУ
    st    Z, r27   
#endasm
}

unsigned int Get_PC(void)
{
#asm
    IN    R26,SPL    ;SP->X
    ;IN    R27,SPH    ;SP->X для мег
    CLR   R27       ;для тини
    ADIW  r26,0x01  ;X=X+1 
    LD    r30,X+    ;результат из ОЗУ по X
    LD    r31,X   
#endasm
}
#pragma warn+ // enable warnings

#define StartDelay(x,t)  if (t) {if (~(t)) (t)--; goto Label##x;} else {if ((x)) Set_PC((x)); (t)=-1;};
#define Delay(num,te,x,t)   (t)=(te)*Speed_temp; (x)=Get_PC(); (t)=-1; goto Label##x;
#define EndDelay(te,x,t) (t)=(te)*Speed_temp; (x)=0; Label##x:;
описание подпрограмм:
Set_PC(х) - получает параметр и записывает его в ячейку памяти, по которой осуществится переход при завершении подпрограммы (аналог JMP но по переменной, а не по метке)
Get_PC() - возвращает значение PC точки, откуда был вызван
StartDelay(x,t) - проверяет вышло ли время ожидания, и если вышло - переходит по сохраненному адресу, если нет переходит к концу программного блока
Delay(num,te,x,t) - записывает время в переменную ожидания, адрес в переменную возврата и выходит из блока...
(num теперь не нужна, но пока осталась для совместимости со старым кодом)
EndDelay(te,x,t) - обозначает конец программного блока (метка), + добавлена задержка следующего запуска блока кода

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Последний раз редактировалось Ivanoff-iv Чт окт 31, 2019 13:03:20, всего редактировалось 1 раз.

Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 12:57:33 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ivanoff-iv, Вы изобретаете велик.
Любая ОС делает всё это более экономней, и код получается прозрачней.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 13:00:10 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да, я знаю, что любая ОС это делает, но не любая ОС влезет в тини, чтобы ещё и место полезное осталось...

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 13:05:09 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А у Вас цель - впихнуть невпихуемое ? Задача в целом какая ?

PS: Ёжики плакали, рыдали, но продолжали есть кактусы...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 13:17:19 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Почему невпихуемое? уже несколько проектов шустро крутятся на тини 2313... например термостат, на DS18b20 и семисегментнике, с настройкой уставок, коррекции измерения датчика, и плавным изменением яркости индикатора, с высоким приоритетом пользовательского интерфейса (нет ни малейшего подмаргивания экрана, четкие измерения длительности нажатия клавиш... хотел ещё в меню вывести направление регулирования, но флеш предательски закончился... если я заведу свой новый код - влезет и он и ещё место останется...), неужели ради простого термостата или таймера обязательно мегу или стм покупать?

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 13:29:18 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ivanoff-iv писал(а):
Почему невпихуемое?
потому, что
Ivanoff-iv писал(а):
флеш предательски закончился...

И Вы пытаетесь что-то изобретать, дабы впихнуть невпихуемое :)

Вы хотите сделать красивый линейный код, изобретая обёртки, которые разворачиваются в ужасные switch-case'ы.
Подглядите, как это делают в элементарных кооперативных ОС. Откроете для себя кое-что новенькое :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 13:36:32 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
обёртки, которые разворачиваются в ужасные switch-case'ы.
ну... уже не разворачиваются...
Подглядите, как это делают в элементарных кооперативных ОС...
Если порекомендуете, куда глянуть, буду благодарен... :beer:

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 13:48:34 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
OSA


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 20:35:27 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт окт 31, 2019 22:27:11 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Каждому своё...
Много лет уже ей пользуюсь и ни разу в ней не разочаровался...
На сколько помню, ты был слишком требователен к искомой ОСи. Не забывай, OSA - простая и кооперативная ОСь !

Да и разговор был не совсем об операционках и их качествах. А о том, что человек делает планировщик, только через одно место. В то время, когда уже давно придумали другой способ реализации подобных алгоритмов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт ноя 01, 2019 11:32:26 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
OSA - штука интересная, но для тини немного крупновата... (почитал доки, пошарил коды, поставить пока не вышло...)
_____
Мой код не заработал... я нашел и убрал свои косяки... но, если задержек больше одной, то оптимизатор код так закручивает, что функции Гет и Сет РС оказываются на разных уровнях вложенности и перескок из одной в другую оказывается невозможен... :(

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 05, 2019 08:02:31 
Потрогал лапой паяльник

Зарегистрирован: Ср янв 26, 2011 17:00:30
Сообщений: 396
Рейтинг сообщения: 0
Как в CVAVR выключить оптимизатор кода ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 05, 2019 08:17:06 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 2030
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Сообщений: 6618
Откуда: Сердце Пармы
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
#pragma optsize-
или в настройках проекта

_________________
Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт ноя 05, 2019 08:23:28 
Потрогал лапой паяльник

Зарегистрирован: Ср янв 26, 2011 17:00:30
Сообщений: 396
Рейтинг сообщения: 0
Цитата:
или в настройках проекта
искал в настройках, но не нашел отключения. Только способ оптимизации и уровень оптимизации.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Сб ноя 09, 2019 17:35:25 
Открыл глаза

Зарегистрирован: Вт сен 10, 2019 16:18:33
Сообщений: 64
Рейтинг сообщения: 0
Здравствуйте профессионалы,помогите пожалуйста новичку,только начал изучать программирование,начал с камня атмега 16,попробовал зажечь светодиод,потом как и все,попробовал зажечь светодиод через кнопку,все получилось,только вот беда,контролер запитан у меня через программатор усбас,при подаче питания на микроконтроллер сразу без нажатия кнопки загорается светодиод и тухнет-это из за чего такое?
Спойлер#include <mega16.h>
#include <delay.h>


void main(void)
{
PORTB=0x02;//вторая ножка порта В установлена как выход 00000010
DDRB=0x01;//на первой ножке порта В +5(высокий сигнал 1)00000001

while (1)
{
if(PINB.1==0)//если на ножке 1 порта В подключили землю(0 потенциал),
//то выполняется код в фигурных скобках
//выполнение кода в фигурных скобках
{
PORTB.0=1;//включился
delay_ms(100);//задержка
PORTB.0=0;//выключился
delay_ms(100);//задержка

PORTB.0=1;//включился
delay_ms(1000);//задержка
PORTB.0=0;//выключился
delay_ms(1000);//задержка
}
}
}


Добавлено after 7 minutes 33 seconds:
Еще подскажите пожалуйста,также начал осваивать протеус,по началу светодиоды мигали,а потом перестали,может я что-то натыкал,как это исправить?


Вложения:
Комментарий к файлу: Схема в протеусе
1111111111111111.jpg [43.66 KiB]
Скачиваний: 246
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн ноя 11, 2019 10:09:41 
Родился

Зарегистрирован: Пн ноя 11, 2019 09:53:41
Сообщений: 1
Рейтинг сообщения: 0
Товарищи, помогите не сойти с ума.
Имею простенький проект на аттини25, тактируюсь PWM.

Спойлер#include <tiny25.h>

#include <delay.h>

// Declare your global variables here
unsigned char TIM1;
unsigned char TIM2;
unsigned char TIM3;
unsigned char AVAR;
unsigned char HALF;
unsigned char DLIT;
unsigned char CIKL;
unsigned char MINUS;
unsigned char TYPE;




// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
if (HALF) {
#asm("NOP");
PORTB.1=0;
HALF=0;
goto _ENDINT;
};

PORTB.1=1;
HALF=1;
if (AVAR) {
goto _ENDINT;
};
DLIT++;

if (MINUS) {

if (DLIT>254) {
DLIT=0;
OCR0A--;
CIKL++;

if (CIKL>39) {
MINUS=0;
CIKL=0;
};

};

goto _ENDINT;
};

if (DLIT>254) {
DLIT=0;
OCR0A++;
CIKL++;

if (CIKL>19) {
MINUS=1;
};

};

_ENDINT:
}

// Voltage Reference: AVCC pin
#define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<REFS2) | (0<<ADLAR))

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=0b00001011;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=In Bit2=In Bit1=Out Bit0=Out
DDRB=(0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit5=T Bit4=P Bit3=P Bit2=T Bit1=0 Bit0=0
PORTB=(0<<PORTB5) | (1<<PORTB4) | (1<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 16000,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Disconnected
// OC0B output: Disconnected
// Timer Period: 6,9375 us
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00);
TCNT0=0x00;
OCR0A=0x6E;
OCR0B=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x10;

// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Bipolar Input Mode: Off
// ADC Reverse Input Polarity: Off
// ADC Auto Trigger Source: Free Running
// Digital input buffers on ADC0: On, ADC1: On, ADC2: Off, ADC3: Off
DIDR0&=0x03;
DIDR0|=0x18;
ADMUX=0b00001011;
ADCSRA=0xA4;
ADCSRB&=0x58;


// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/1024k
// Watchdog timeout action: Reset
#pragma optsize-
#asm("wdr")
WDTCR=0x1E;
WDTCR=0x0E;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Globally enable interrupts
#asm("sei")

while (1)
{
TIM1++;
TYPE=PINB;
TYPE&=0b00010000;
if (TIM1>20) {
TIM1=0;
TIM2=0;
TIM3=0;
};
read_adc (1);

if (TYPE==16){
if (ADCW>40) {
if (AVAR) {
goto _ENDPR;
};
TIM2++;
if (TIM2>14) {
TIM3=0;
AVAR=1;
PORTB.0=1;
};
goto _ENDPR;
};

if (AVAR) {
TIM3++;
if (TIM3>14) {
AVAR=0;
TIM1=0;
TIM2=0;
TIM3=0;
PORTB.0=0;
};
};
}
else
{


if (ADCW>520 | ADCW<40) {
if (AVAR) {
goto _ENDPR;
};
TIM2++;
if (TIM2>14) {
TIM3=0;
AVAR=1;
PORTB.0=1;
};
goto _ENDPR;
};

if (AVAR) {
TIM3++;
if (TIM3>14) {
AVAR=0;
TIM1=0;
TIM2=0;
TIM3=0;
PORTB.0=0;
};
};

};


_ENDPR:
};



}


Пытаюсь по сигналу на PB4 бегать по разным веткам
СпойлерTIM1++;
TYPE=PINB;
TYPE&=0b00010000;
if (TIM1>20) {
TIM1=0;
TIM2=0;
TIM3=0;
};
read_adc (1);

if (TYPE==16){
if (ADCW>40) {
if (AVAR) {
goto _ENDPR;
};
TIM2++;
if (TIM2>14) {
TIM3=0;
AVAR=1;
PORTB.0=1;
};
goto _ENDPR;
};

if (AVAR) {
TIM3++;
if (TIM3>14) {
AVAR=0;
TIM1=0;
TIM2=0;
TIM3=0;
PORTB.0=0;
};
};
}
else
{


if (ADCW>520 | ADCW<40) {
if (AVAR) {
goto _ENDPR;
};
TIM2++;
if (TIM2>14) {
TIM3=0;
AVAR=1;
PORTB.0=1;
};
goto _ENDPR;
};

if (AVAR) {
TIM3++;
if (TIM3>14) {
AVAR=0;
TIM1=0;
TIM2=0;
TIM3=0;
PORTB.0=0;
};
};

};

, но что-то идет не так. как будто всегда висит ноль на входе (в железе уровень меняется).
Что я делаю не так? Помогите

Вопрос снят, разобрался. Предшественник выключил цифровой буфер на входе.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн ноя 25, 2019 11:59:45 
Опытный кот
Аватар пользователя

Карма: 8
Рейтинг сообщений: 33
Зарегистрирован: Чт ноя 08, 2012 22:28:05
Сообщений: 794
Откуда: Ижевск
Рейтинг сообщения: 0
Здравствуйте! Задумался над тем, как авторы часов на ВЛИ и ГРИ реализуют различные спец эффекты, к примеру скроллинг цифр в разные стороны, затухание и подобные. Могли бы рассказать как все это работает, особенно сочетание с динамической индикацией... Думал думал и никак не соображу, очень хочется сделать это в своих часах. Изучал исходники, но мало что понял, свой код то писать сложно, а уж понять чужой.

Единственная мысль которая возникла, это массив с набором параметров каких то, но до конца мысль сформировать не могу. Буду благодарен за помощь. В первую очередь интересно не готовое решение, а сам принцип. Хочу понять досконально как оно работает.

Спасибо!


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


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

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


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