Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Основной раздел > Микроконтроллеры

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 24.04.2018, 21:07   #1
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,201
По умолчанию от простого к сложному Блинк на AtmelStudio

Мануал

1.0. чтобы соорудить радио приёмо-передающее устройство с одновременным анализом сигнала подключенного к компу/сматрфону через USB или фавлю ( а по простому USB/WiFi - кодграбер) надо топать от простого к сложному.
Для начала , код писать будем на С++ ( это типа Си, только с двумя жирными плюсами) для: attiny2313 - тахионовский USB-кодграббер, atmega328P - камень в Ардуине, это потом плавно перепрыгнем на HC-12 (si4463+STM8S003F3)
На данный момент надо только две вещи:
-Atmel Studio 7 - здеся будем писать горе-код;
-Proteus 7 - здеся будем симулировать.

1.1. Короче поехали:
Как обычно, начинаем со стандарного Блинка, только мигать будем по взрослому
Задача№1: создать глушилку, а именно меандр 1500 микросек.

1.2. ВАЖНО: многие вещи будут пока упущенны, такие как: WDT, энергосбережение, компораторы и т.д. и т.п.
Это чтоб не заблудиться в трёх соснах.

1.3. создаем новый проект GromMega328P.cpp
.cpp - значит прогить будем на С++.
Во вкладке Tool* выберем Simulator
Вот такую хрень выдаст студия, но уже с моими коментариями

Код:
#include <avr/io.h>

// вот сюда запишем глобальные переменные, функции и дефайны


int main(void) // начало главной программы
{
  
// вот сюда запишем начальные установки необходимой переферии/

    while (1) // а это мля главный цикл
    {
// сюда пока ничего не запишем
    }
}
// сюды будем записывать функции прерываний.
Это типа наша структура кода.


1.4. Задача ясна, думаем об алгоритме.

CPU = 8000000МГц. - внутренняя частота генератора по дефолту.

1.4.1. настраиваем ногу №27 - PC4 - это типа передатчик, обзавём её TX0_PIN. , а инициализация портов и ног будет в функции portsInit();
1.4.2. настраиваем таймер Timer1 - он у нас будет отсчитывать микросекунды, в функции timerInitTimer1_Prescaler1_8(int adjustment);
1.4.3. внутри функции ISR(TIMER1_COMPA_vect) {...} прерывания таймера в режиме CTC каждые 1500 микросекунд, уровень на ноге TX0 будет инвентироватся ( меандр 1500 мкс) с помощью дефайна
#define INV_BIT(reg, bit) reg^=(1<<bit);

1.5. вот такой код получается

PHP код:

// Program Memory Usage     :    226 bytes   0,7 % Full

#include <avr/io.h>
#include <avr/interrupt.h>  // эта чытоби прерывания работали


#define F_CPU 8000000L //Clock Config

// инвертируем бит в регистре
#define INV_BIT(reg, bit)           reg^=(1<<bit)


// наш будущий предатчик PC4
#define TX0_PIN 4   


// обзавём порт по своему
#define TX_DDR DDRC
#define TX_PORT PORTC
#define TX_PIN_PORT PINC



// функция инициализация портов
inline void portsInit (void)
{
    
// в данном случае ногу PC4 (TX0_PIN) настраиваем на выход записав 1 в регистр DDRC(TX_DDR)
    // это типа ардуиновская функция digitalWrite(PC4, HIGT)
    
TX_DDR=(1<<TX0_PIN); //порт на выход
}

/*
* так как CPU=8000000, а прескалер 8, то тикать он будет 8000000/8=1000000MГц, т.е.  каждую 1 микросекунду
* соответсвенно, если у нас adjustment=1500, то в режиме CTC - через 1500мкс, сработает прерывание
*/


void timerInitTimer1_Prescaler1_8(int adjustment)
{
    
    
adjustment=adjustment-1// в нашем случае 1500-1=1499, почему 1499, а потому что отсчет идёт с нуля, т.е. 0,1,2,3 ...1499 насчитаем ровно 1500
    
TCCR1B|=(1<<WGM12);//CTC mode - режим сравнения 
    
TIMSK1|=(1<<OCIE1A); //разрешаем прерывание
    
OCR1AH=adjustment>>8;// счетчик 16-битный, здесь половинку числа в записываем в старший байт
    
OCR1AL=adjustment// другую половинку числа в записываем в младший байт, НАПРИМЕР число 1499  в двоичном коде  OCR1AH =0b00010100,  OCR1AL=0b10011001
    
TCCR1B|=(1<<CS11);// прескалер, делит CPU на 8
    
    // CS12 CS11 CS10
    // 1/1:    001
    // 1/8:    010
    // 1/64:   011
    // 1/256:  100
    // 1/1024: 101
        

}



int main(void)
{
   
portsInit();
   
timerInitTimer1_Prescaler1_8(1500);
   
sei(); // глобальное разрешение прерываний
    
while (1
    {
    }
}


// прерывание при сравнению канала A  таймера TIMER1, мля ОСНОВНАЯ ИДЕЯ ЗДЕСЬ!!!!!!
ISR(TIMER1_COMPA_vect)
{
        
INV_BIT(TX_PORTTX0_PIN);    // инвертируем пин

1.6. Во вложении шаблон GromMega328P.zip - который мона загрузить через атмел студию
1.7. Во вложении схема симулятора Протеза

GromMega328P.zip
Grom328.rar



////////////////////

Короче чё не понятно, говори
EPA вне форума   Ответить с цитированием
Старый 24.04.2018, 21:20   #2
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,201
По умолчанию Re: от простого к сложному Блинк на AtmelStudio

1.8. Скромненько тихо -тихо допишем в

Код:
#define ADC_OFF ACSR=1<<ACD

...
int main(void) // начало главной программы
{
  ADC_OFF;
...
sei();
    while (1) // а это мля главный цикл
    {
...
    }
...

}
Это мы отключим ADC, чтоб зря не жрал электроэнергию

Последний раз редактировалось EPA; 24.04.2018 в 21:44.
EPA вне форума   Ответить с цитированием
Старый 25.04.2018, 03:50   #3
DIVER_SANT Меню Пользователя
Модератор
 
Аватар для DIVER_SANT
 
Регистрация: 27.03.2011
Сообщений: 2,204
По умолчанию Re: от простого к сложному Блинк на AtmelStudio

Похвально.Но уже для тех,кто разбирается как минимум как работают порты и разбирается в битовых операциях ))
Авр студия на моем lenovo g505 ,как чурюпаха крутится)
__________________
Правильно поставленный вопрос-на половину полученный ответ;)
++++++++++++++++++++++++++++++++++++++
[url]http://www.youtube.com/watch?v=ktnn-s3ebzw[/url]
DIVER_SANT вне форума   Ответить с цитированием
Старый 25.04.2018, 07:50   #4
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,201
По умолчанию Re: от простого к сложному Блинк на AtmelStudio

Эта студия и на моём компе где оперативка 8гигов долго запускается, а потом работает быстро. Проверенно на планшете, для которого твой леново505 -космический корабль.
А по портам и битовым операциям -это основа основ. Здесь нужно неполенится и вплотную разобратся.

Добавлено через 29 минут
Кстати я тот раз скидывал ссылку на книгу, где очень хорошо написано про эти порты и битовым операцияМ. Про протез и АВР студию.
Прокопенко В.С. "Программирование микроконтроллеров на языке С"

Добавлено через 1 час 48 минут
вот ссылка на книгу
Содержание:
-среда разработки WinAVR
-среда разработки AVR Studio ( это дедушка Atmel Studio )
-имитатор схем Proteus

и со страницы 20 по 30 -очень хорошо написано про битовые операции. Через час, если понапрягать мозг, то навсегда в черепушке отложится понятие битовых операции

Последний раз редактировалось EPA; 25.04.2018 в 05:51.
EPA вне форума   Ответить с цитированием
Старый 25.04.2018, 08:13   #5
DIVER_SANT Меню Пользователя
Модератор
 
Аватар для DIVER_SANT
 
Регистрация: 27.03.2011
Сообщений: 2,204
По умолчанию Re: от простого к сложному Блинк на AtmelStudio

Цитата:
Сообщение от EPA
Эта студия и на моём компе где оперативка 8гигов долго запускается, а потом работает быстро. Проверенно на планшете, для которого твой леново505 -космический корабль.
А по портам и битовым операциям -это основа основ. Здесь нужно неполенится и вплотную разобратся.

Добавлено через 29 минут
Кстати я тот раз скидывал ссылку на книгу, где очень хорошо написано про эти порты и битовым операцияМ. Про протез и АВР студию.
Прокопенко В.С. "Программирование микроконтроллеров на языке С"

Добавлено через 1 час 48 минут
вот ссылка на книгу
Содержание:
-среда разработки WinAVR
-среда разработки AVR Studio ( это дедушка Atmel Studio )
-имитатор схем Proteus

и со страницы 20 по 30 -очень хорошо написано про битовые операции. Через час, если понапрягать мозг, то навсегда в черепушке отложится понятие битовых операции

ВФот не плохо расписано https://ph0en1x.net/81-howto-work-wi...ontroller.html
__________________
Правильно поставленный вопрос-на половину полученный ответ;)
++++++++++++++++++++++++++++++++++++++
[url]http://www.youtube.com/watch?v=ktnn-s3ebzw[/url]
DIVER_SANT вне форума   Ответить с цитированием
Старый 25.04.2018, 09:15   #6
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,201
По умолчанию Re: от простого к сложному Блинк на AtmelStudio

ДА ! Как говорится Гугл в Помошь, есля приспичило )))
Я там по быстрому накатал статью между перекурами про универсальную передачу пакетов ( типа либы RFSWICH), тоже типа апноутами. Это чтобы не запутаться. Типа часть2. Ща скину

Последний раз редактировалось EPA; 25.04.2018 в 09:18.
EPA вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 06:06. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика