Перейти к содержанию

Cvavr


serg

Рекомендуемые сообщения

Тем кто интересуется программированием AVR контроллеров на языке высокого уровня (СИ). По моему перспективное зантие, считаемое контролеров и самого языка.

Давайте вместе разбираться что к чему :)

yourdevice.net

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Предисловие.

Я одно время программировал в Algorithm Builder"е, которые позволял и прошивать контроллеры с помощью простейшего адаптера в виде шлейфа и 3 диодов и 7 резисторов. И эта простота меня очень радовала. Насколько я понял, это называется внутрисхемным программированием через SPI порт.

Но пришло время переходить на Codevision AVR...

Вопрос.

Есть ли такая же простая схема программатора для внутрисхемного программирования, для использования с Codevision AVR ?

В Programmer Settings, где можно выбрать тип используемого программатора, можно выбрать Atmel STK500/AVRISP и Atmel AVRProg(AVR910), кто знает, что это такое и не является ли одно из них тем самым простым внутрисхемным программатором через SPI.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Предисловие.

Я одно время программировал в Algorithm Builder"е, которые позволял и прошивать контроллеры с помощью простейшего адаптера в виде шлейфа и 3 диодов и 7 резисторов. И эта простота меня очень радовала. Насколько я понял, это называется внутрисхемным программированием через SPI порт.

Но пришло время переходить на Codevision AVR...

Вопрос.

Есть ли такая же простая схема программатора для внутрисхемного программирования, для использования с Codevision AVR ?

В Programmer Settings, где можно выбрать тип используемого программатора, можно выбрать Atmel STK500/AVRISP  и  Atmel AVRProg(AVR910), кто знает, что это такое и не является ли одно из них тем самым простым внутрисхемным программатором через SPI.

Пользуюсь Понипрог, попробуй.

К стати немного разобралсья с СVAVR, задавайте вопросы если что попробую отвеить :)

yourdevice.net

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

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

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Рекомендую сходить суда, и скачать всё что касается CVAVR. Я был в восторге. http://www.enigma2004.nm.ru/

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

В принцепе все операторы и команды совпадают да там их и не так много. Короче щас на Си стараюсь писать, в принцепе прикольно, быстро проги пишутся, более читабельней становятся, меньше строк (Сишных конечно). На счёт оптимизации кода............незнаю, пока за это голова не болит Рекомендую короче!!!

yourdevice.net

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Прикреплять файлы мне почему-то нельзя, поэтому рекомендую самому найти журнал радио за 2004г, номер 3, там описан программатор Dontronics DT006, который прекрасно работает с CVAVR, состоит из 3-х резисторов по 300 ом и кварца (если исп внутрисхемное программирование, кварц не нужен). Проще сделать не получиться! Дерзай.

Электронщики всего мира объеденяйтесь!

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Доброе время суток всем!

Меня интересует такой вопрос:

Решил изучить прогу Cvavr 1.25.3 pro нашел примеры и задачи в инете и сразу же с первой задачи начились непонятки, по условию все должно пройти гладко, но не тут то было, при попытки скомпилировать проект мне пишет ошибку и указывает на 1066 строку .asm файла где написано " JMP _main" и в сообщении об ошибки пишет "Error:бла бла бла путь к файлу .asm неопределённый символ:_main"

Подскажите в чем косяк что не так написано?

Изменено пользователем ilmeko
Ссылка на комментарий
Поделиться на другие сайты

Вопрос.

Есть ли такая же простая схема программатора для внутрисхемного программирования, для использования с Codevision AVR ?

Схема есть. Для CAVR нужный тип программера: Settings/Programmer/Kanda Systems STK 200+/300.

Пользуясь случаем хочу спросить: кому нибудь удалось "скрестить" Proteus и CAVR? При симуляции Proteus отображает переменные и ... все! Дебаг не получается - сof-файл СAVR не нравится Proteus-у (хотя ругается на*_.с). Никто лекарства не знает?

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...
Есть ли такая же простая схема программатора для внутрисхемного программирования, для использования с Codevision AVR ?

Есть и еще ПРОЩЕ ! вообще без компонентов - просто 5 проводов. Почитайте - "Все о прошивке микроконтроллеров AVR" - там действительно есть всё и с картинками о том как и чем прошить AVR ATmega ATtiny. Как работать в CVAVR и симуляторе PROTEUS. Где их скачать и как установить, подлечить.

Там есть и книги по электронике и по CVAVR и есть простой программатор на USB - AVR910.

Доброе время суток всем!

Меня интересует такой вопрос:

Решил изучить прогу Cvavr 1.25.3 pro нашел примеры и задачи в инете и сразу же с первой задачи начились непонятки, по условию все должно пройти гладко, но не тут то было, при попытки скомпилировать проект мне пишет ошибку и указывает на 1066 строку .asm файла где написано " JMP _main" и в сообщении об ошибки пишет "Error:бла бла бла путь к файлу .asm неопределённый символ:_main"

Подскажите в чем косяк что не так написано?

Косяк в том что CVAVR у вас не вылечен. Скачайте там на заглавной с лекарством CVAVR 1.25.9 а вот CVAVR 2 не советую пока.

Кстати там начинать рекомендуют с того что на заглавной странице а не с 1 задачи. Т.е. до задач еще поработать надо - почитать и поделать !

Для проверки CVAVR просто скомпильте любой его собственный пример.

Proteus отображает переменные и ... все! Дебаг не получается - сof-файл СAVR не нравится Proteus-у (хотя ругается на*_.с). Никто лекарства не знает?

Лекарство простое - скачайте CVAVR 1.25.9 правильно подлеченый и скачайте PROTEUS свежий с првильным лекарством и дебажте всласть.

Ссылка на комментарий
Поделиться на другие сайты

Лекарство простое - скачайте CVAVR 1.25.9 правильно подлеченый и скачайте...

Вы ж на дату посмотрите! :)

Косяк простой там был. Кода не видно, потому что протеус просто его не открывает сразу - надо руками самому выбрать в выпадающем списке *.cof и проблем нет...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

  • 7 месяцев спустя...

Народ - помогите кто шарит! Надо последовательно вывести по одному проводу 8 бит переменной char bufer

Я хотел постоянно сдвигать биты этой переменной и при передаче проверять нулевой бит этой переменной этим кодом:

if (bufer.0==1) //Если надо вывести 1 - выводим и защелкиваем сигналом клок

{

DAT=1;

Clock2=1;

delay_us(10);

Clock2=0;

}

if (bufer.0==0) //Если надо вывести 0 - выводим и защелкиваем сигналом клок

{

DAT=0;

Clock2=1;

delay_us(10);

Clock2=0;

}

но кодевижн матерится на эти строки

if (bufer.0==1)

if (bufer.0==0) я так подозреваю что нельзя проверять бит в переменной? если можно то скажите как)

I love AVR;

Народ! все кто с города Кременчуг добавляйтесь в друзья!

Ссылка на комментарий
Поделиться на другие сайты

если можно то скажите как)
if (bufer.0==1)

if(buffer&(1<<0)...

if (bufer.0==0)

if(!(buffer&(1<<0))...

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

спасибо большое щас попробую)

Чёт оно не работает((( пишет undefined simbol 'bufer'

Все понял там у меня переменная с одной буквой ф была а у вас с двумя

Изменено пользователем Гуня

I love AVR;

Народ! все кто с города Кременчуг добавляйтесь в друзья!

Ссылка на комментарий
Поделиться на другие сайты

Всё заработало! всем спасибо)

Изменено пользователем Гуня

I love AVR;

Народ! все кто с города Кременчуг добавляйтесь в друзья!

Ссылка на комментарий
Поделиться на другие сайты

А может ктото обьяснить посимвольно что значат эти строки:

(buffer&(1<<0)

(!(buffer&(1<<0))

в СИ я пока плохо шарю поэтому ненаю шо оно значит)) а в асм файле оно на месте этих строк ставит команды SBRS и SBRC соответственно!

I love AVR;

Народ! все кто с города Кременчуг добавляйтесь в друзья!

Ссылка на комментарий
Поделиться на другие сайты

Это логические операции сдвига!!! Учите азы !!!! И не задавайте совсем глупых вопросов!!! Это даже под уровень начинающего.. Это уровень в конец обленившегося...

Ссылка на комментарий
Поделиться на другие сайты

Раз это операции сдвига значит должен быть сдвиг)) а кодевижн ставит в асм файл команды SBRS и SBRC!

Формат команды: SBRS REG,Bit и SBRC Reg,Bit что буквально переводится как: проверить заданый бит рабочего регистра и пропустить следующую команду если он установлен/сброшен! Так причем тут сдвиг????? А в СИ я совсем начинающий) и пожалуйста, не нужно меня банить, просто скажите где задавать такие вопросы? а вопрос у меня в тему, про кодевижн)

I love AVR;

Народ! все кто с города Кременчуг добавляйтесь в друзья!

Ссылка на комментарий
Поделиться на другие сайты

Можно на многих языках писать, и конкретно с этим оператором ни разу не сталкиваться :) Так что возмущение напрасно... (другое дело, что человек мог погуглить... и то, гуглить два "<" затруднительно :) ).

Кстати, какой смысл несёт операция 1<<0? Ведь это сдвиг на 0 бит... Т.е. возвращает оно ту же единицу.

Ссылка на комментарий
Поделиться на другие сайты

Кстати, какой смысл несёт операция 1<<0? Ведь это сдвиг на 0 бит... Т.е. возвращает оно ту же единицу.

Смысл в том, что можно написать и так:

if(buffer&(1<<1))...

Но сакральная истина кроется в этом:

...
#define INPUT_PORT PORTD
#define INPUT_BIT 3
...
if(INPUT_PORT&(1<<INPUT_BIT))...

...

Изменено пользователем Goodefine

Любой, заслуживающий внимания, опыт приобретается себе в убыток...

Ссылка на комментарий
Поделиться на другие сайты

Добрый вечер!

Что-то не получается записать и прочитать данные из eeprom 24С164 я использую эти функции:

#asm

.equ __i2c_port=0x18

.equ __sda_bit=3

.equ __scl_bit=4

#endasm

/* now you can include the I2C Functions */

#include <mega16.h>
#include <i2c.h>

/* function declaration for delay_ms */
#include <delay.h>

#define EEPROM_BUS_ADDRESS 0xa0

/* read a byte from the EEPROM */
unsigned char eeprom_read(unsigned char address) {
unsigned char data;
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_start();
i2c_write(EEPROM_BUS_ADDRESS | 1);
data=i2c_read(0);
i2c_stop();
return data;
}

/* write a byte to the EEPROM */
void eeprom_write(unsigned char address, unsigned char data) {

i2c_start();
i2c_write(EEPROM_BUS_ADDRESS);
i2c_write(address);
i2c_write(data);
i2c_stop();

/* 10ms delay to complete the write operation */
delay_ms(10);
}

Но ничего не записывается или не считывается, eeprom подклчил правильно, SDA к SDA, SCL к SCL и подтянул обе этих ноги резисторами на 10 к к "+". Контроллер atmega16, может в коде ошибки? Подскажите плз

Изменено пользователем GROMIT

все детали работают на белом дыме, но когда он из них выходит - деталь перестаёт работать  

Ссылка на комментарий
Поделиться на другие сайты

а каким образом вы узнаете передаются ли байты в микросхему и приходят ли обратно???? В коде идваси я плохо шарю, но могу посоветовать собрать все в протеусе, паралельно шине и2с подсоеденить и2си-терминал (есть такой в протеусе) и глянуть шо он покажет

I love AVR;

Народ! все кто с города Кременчуг добавляйтесь в друзья!

Ссылка на комментарий
Поделиться на другие сайты

да я не умею им пользоваться, немного подправил сообщение

все детали работают на белом дыме, но когда он из них выходит - деталь перестаёт работать  

Ссылка на комментарий
Поделиться на другие сайты

Ну а как вы всетаки узнаете работает ли схема???? к контроллеру кроме микры памяти подключен какойто индикатор???? или светодиоды? да и в коде у вас нету вывода результата хоть куданибудь! И еще, самый простой способ это подпаять светодиод к свободному пину, в проге создать две переменных и в первую занести любое значение, потом код передачи в микросхему памяти, потом соответственно прием с микры памяти во вторую переменную, а потом проверка на равенство значений в обоих переменных - если равно - зажечь светодиод!

Изменено пользователем Гуня

I love AVR;

Народ! все кто с города Кременчуг добавляйтесь в друзья!

Ссылка на комментарий
Поделиться на другие сайты

Конечно индикация есть, светодиод на PB4

unsigned char i;
DDRD.4 = 0xFF; 
PORTD.4 = 0x00; 

i2c_init();
eeprom_write(0xaa,0x55);
i=eeprom_read(0xaa);
if(i==0x55)
{
PORTD.4 = 0xFF;
}
while(1);

Все, разобрался, на радиокоте нашел другой код, немного изменил его и все работает :lol:

#define TWINT 128
#define TWSTA 32
#define TWSTO 16
#define TWEN  4 
#define TWEA  64
#define EEPROM_BUS_ADDRESS 0xa0

//Fuctions' prototypes
char ee_read(unsigned int);
char twi_read(char);
void twi_write(char);
void twi_start(void);
void twi_stop(void);	 

char twi_read(char ACK)
{ 
	if(ACK) TWCR=TWINT|TWEA|TWEN;
	else TWCR=TWINT|TWEN;
	while(!(TWCR&(TWINT)));
	return TWDR;		 
}
void twi_write(char data)
{			   
	TWDR=data;
	TWCR=TWINT|TWEN;
	while(!(TWCR&(TWINT)));
}   
void twi_start(void)
{
	TWCR=TWINT|TWSTA|TWEN;
	while(!(TWCR&(TWINT)));
}
void twi_stop(void)
{ 
	TWCR=TWINT|TWEN|TWSTO;
}
char ee_read(unsigned int adress)
{ 
	char data;
	twi_start();
	twi_write(EEPROM_BUS_ADDRESS);
	twi_write((unsigned char)(adress));
	twi_start();
	twi_write(EEPROM_BUS_ADDRESS|1);
	data=twi_read(0);
	twi_stop();
	return data;	   
} 					 
void ee_write(unsigned int adress, unsigned char data)
{
  twi_start();
  twi_write(EEPROM_BUS_ADDRESS);
  twi_write(adress);
  twi_write(data);
  twi_stop();
  delay_ms(10);
}

Изменено пользователем GROMIT

все детали работают на белом дыме, но когда он из них выходит - деталь перестаёт работать  

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
    • А что нить из ассортимента активных щупов производства СССР..))
×
×
  • Создать...