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

Прошу помощи в настройке таймера ATMega128


Ушик

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

Здравствуйте, уважаемые. По традиции, снова лезу к вам за помощью :) 

Имеется процессор ATMega128L и прошу помочь с рыбой/шаблоном под AVR Studio 7 + WinAVR. Частота процессора 8МГЦ.

1. Нужно из процессорного фарша запустить один таймер с периодом 0,1 миллисекунды (10КГц) и вызывать прерывание, с которым я смогу уже работать.

2. Опционально - запустить интерфейс TWI для подключения LCD_I2C дисплейчика. Не получится - подключу кучей проводков, мне не жалко.

3. Опционально - для отладки интерфейс USART, мне же интересно, что там внутри творится.

С остальным, уж надеюсь, я сам справлюсь. 

Было бы просто сказочно здорово, если бы кто-то скинул пустой проект для студии с настроенными таймерами (ну и остальные мои хотелки :), по желанию). Спасибо за внимание и помощь.

 

Исторический экскурс в недавнее прошлое. Кут, как говорится, хере.

Есть микроконтроллер ATMega128L, на макетке. Как я его припаивал - это можно было книгу снимать и в Ералаш показывать  :wall::vava: Теперь задача усложнилась стократно - надо делать следующий шаг. Раньше все с ардуинами в основном игрался, там было легко, радостно и незамысловать: накидал 50 строк кода, скомпилил, получил. Это если скомпилилось и в проц влезло :) Сейчас интереснее - нужный проц ардуиной не поддерживаются, так что приходится морщить лоб и надувать щеки :) А не получается. И вот я тут.

Имею непреодолимое желание довести до ума станочек по вытяжке бутылок в филамент. Причем, в силу некоторых обстоятельств, на этом неудобном процесоре, ATMega128L. Тактирую его от внутреннего RC осциллятора, чтобы поменьше паять. Да и все равно нет у меня кварца на 8МГц (процессор-то с буковкой L).  Долго выбирал среду, чтобы и функционал имелся, и побесплатней, и чтоб разобраться смог. Остановился в итоге на связке AVR Studio 7 + WinAVR. Программатор к студии привязал, компилятор тоже. Ну, наверное привязал - вроде бы компилирует, а вроде бы и нет. Написал блинк на делаях - мигает. А имена регистров из интернетов - не принимает почти никогда. Или ругается хз на что.

Пробовал генерить код в кодевижене - он не компилируется, т.к. студия, зараза такая, не понимает имен регистров. Или я не понимаю студию, тоже вполне себе вариант. Пробовал весь проект в кодевижн запихать - там в пломатой демо версии не работает USART. Да и в 4К кода я точно не помещусь, я жирный :)  Пробовал настрочить во FlowCode - уперся в TWI. Правда, если не использовать эту шину, то FC мне очень и очень импонирует, как-то там все ясно и понятно, наглядно. Прошивал процессор всякими ардуинами, заточенными под 128 мегу - тоже лажа, таймеры не работают. 

 

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


 

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

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

Установи CodeVizion AVR. Там есть замечательный визард.

Если претит писать в этой IDE, то скопипасти получившийся код в студию.

Я не раздаю удочки. Я продаю рыбу.

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

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

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

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

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

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

https://static.chipdip.ru/lib/059/DOC000059753.pdf

Все, больше ничего не нужно.

И пусть судьба не справедлива, Жизнь игра - играй красиво!

И что б не кикнули тебя, Не злить Админа, юзверя!

Люблю "спасибки" :)

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

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

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

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

2 часа назад, солар сказал:

Установи CodeVizion AVR. Там есть замечательный визард.

Если претит писать в этой IDE, то скопипасти получившийся код в студию.

Помилуйте, CodeVision - чудесная среда! Особенно из-за этого генератора начального кода, для начинающих - это просто подарок. Более "нубофрендский" визард мне попадался однажды в одном продукте, на который так и не нашелся ключик. Уже забыл название, давно это было. Я генерю новый проект в Кодевижене - чисто посмотреть, как будет работать таймер, подергать светиком - проверить затею, так сказать. В генераторе кода включаю таймер (перебрал все три), TWI и USART0. На выходе получаю простыню в 2 листа и отказ компилироваться в демонстрационном режиме. Т.е. софтина таблетку не прохавала. Плюс так и не заработал USART из того же генератора кода и примера из встроенного хелпа. Если бы не это странное обстоятельство, то я писал бы там, а не тут :)  Попробую, пожалуй, поставить из другого источника.

Так что кода, в котором я бы просил помочь разобраться - не существует. Я прошу помочь стартовать в AVR Studio, привести небольшой пример на Си конкретно для моего процессора (ATMega128), чтобы я дальше уже сам мог копаться.

 

Дататашит читаю уже неделю, уже скоро до ерраты доберусь :) Есть мысль его воскурить после плотного ужина, но что-то сомневаюсь, что в меня влезет 400 страниц :) 

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

1 час назад, Ушик сказал:

Так что кода, в котором я бы просил помочь разобраться - не существует. Я прошу помочь стартовать в AVR Studio, привести небольшой пример на Си конкретно для моего процессора (ATMega128), чтобы я дальше уже сам мог копаться.

Это как? Если есть желание разобраться - человек разбирается, благо в сети тонны информации. Если нет желания - ... тут думаю понятно.

Ок. Допустим, у вас вызывает трудности "... Стартовать в AVR Studio ...".

#include <avr/io.h>
#include <avr/interrupt.h>

int main(void)
{
    /* Код инициализации таймера */
    
  	//TCCR1A = 
  	//TCCR1B = 
  	//TCCR1C = 
  	//OCR1A = 
    
  	/* Настройка прерываний */
  	
  	//TIMSK = 
  	
  	/* Глобальное разрешение прерываний */
  	
  	//sei();
  
  	while (1) 
    {
    }
}
  
ISR(TIMER1_COMPA)
{
	/* Выполнение действий в прерывании */
}

Вот вам структура. Вот еще ссылка на материал https://narodstream.ru/avr-urok-10-tajmery-schetchiki-preryvaniya/ . Но, если у вас сложности на таком этапе - тут не про конкретный контроллер (который, как и любой другой 8-битный AVR, вполне типовый), спрашивать нужно, а учить язык программирования. Про даташит я не просто так упомянул - в нем все расписано. Пройтись по закладкам в pdf занятие не долгое (и да, часто достаточно смотреть только назначение регистров).

P.S. AVR Studio 7 не существует в природе, есть AtmelStudio 7.

P.P.S. В AtmelStudio 7 используется компилятор avr-gcc, он же, в далеком прошлом - WinAVR. И что куда вы там подключали, а главное зачем, для меня большая загадка.

И пусть судьба не справедлива, Жизнь игра - играй красиво!

И что б не кикнули тебя, Не злить Админа, юзверя!

Люблю "спасибки" :)

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

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

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

Вот, как раз такой шаблон я и просил :) Спасибо. Скопировал его, отправил на компиляцию - получил ошибку "Severity    Code    Description    Project    File    Line
Warning        'TIMER1_COMPA' appears to be a misspelled signal handler, missing __vector prefix
". Я так понимаю, нужно указать где-то вектор на этот обработчик? Завтра снова буду отсиживать задницу в поисковиках.

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

 

Еще раз спасибо за шаблончик ;) 

П.С. Для меня оказалось открытием, что Студия использует ВинАвр "из коробки". В гуглях, посвященных старту со Студией почему-то сразу подключается внешний компилятор, программатор, а потом выкатывается блинк :) 

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

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

Доброого здровья, уважаемые, с вами снова доктор Уш и программа "Кто хочет побыть гуру?" :) 

Продолжаю играться с этим страшным процессором, ATMega128. Таймер худо-бедно одолел и он уже таймерит, кажется. Теперь у меня новый вопрос - ADC. Замучался камень перешивать, поэтому "собрал" макетку в Протеусе - пусть сперва заработает сферический процессор в вакууме, а там дальше будем посмотреть :)  Подключение - верх лаконичности: потенциометр между шинами питания, средний выход завожу на ножку PF0/ADC0, показания вывожу на LCD, тоже виртуальное. При изменениях положения рукоятки потенциометра напряжение на линии меняется - проверяю проеусовским измерителем. А в паршивке - всегда считывается 1023. Перелопатил кучу примеров. Пробовал в Кодевижене в генераторе начального кода проинициализировать ADC. Из даташита собирал тоже самое ручками. Бухал неделю, расширил сознание вдвое. Но все тщетно, все равно считывается 1023. А теперь вопрос знатокам - какого, понимаешь, хрена?

Вот такую инициализацию и чтение показаний заталкиваю в Atmel Studio 7, используется "нативный" компилятор си. Сигнал снимается с ножки 61 (PF0/ADC0). AVCC соединен с питанием.

 

 

Спойлер

//-----------------------------------------------------------------------------------------------------

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

//-----------------------------------------------------------------------------------------------------
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AVCC pin
void ADC_Init (void)
{
    ADMUX=ADC_VREF_TYPE;
    ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
    SFIOR=(0<<ACME);
}

//-----------------------------------------------------------------------------------------------------

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
// Voltage Reference: AVCC pin
//#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))
    ADMUX=adc_input | ADC_VREF_TYPE;
    // Delay needed for the stabilization of the ADC input voltage
    _delay_us (10);
    // Start the AD conversion
    ADCSRA|=(1<<ADSC);
    // Wait for the AD conversion to complete
    while ((ADCSRA & (1<<ADIF))==0);
    ADCSRA|=(1<<ADIF);
    return ADCW;
}

Буду признателен, если поможете запустить этот кусок проекта :) Спасибо.

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

38 минут назад, korsaj сказал:

Нога AVREF подключена?

Вот! Нет, эту ножку я оставил неподключенной. Подключил AREF и AVCC к питанию - и картинка ожила! Теперь эта часть проекта работает корректно. Спасибо :)

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

Да, согласен и признаю - невнимательность сгубила много чего хорошего. Забавно получилось: стоило вчера разместиь этот крик о помощи (разобраться с ADC), как буквально через час наткнулся на статью, где после обычной таблички с описанием битов регистров говорилось о необходимости подключения внешнего ИОНа, если он задействован. Прямым текстом, черным по-человечески - прямо мой вариант :) Но Ваше уточнение все равно очень четко и смачно ткнуло меня носом в самую суть проблемы, так что звание "заслуженный гуру форума" Вы полчаете вполне оправдано :) Еще раз спасибо :) 

 Дальше по идее проекта уже должно быть попроще - сиди и кодь алгоритм, настройки железа закончены. Прямо сплошная ардуина, тьфу ты, будь она неладна :) 

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

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

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

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

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

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

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

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

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

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

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