Mx-f01 радиомаяк

Тема в разделе "Закажу проект", создана пользователем Kot26ru, 15 ноя 2021.

  1. a1000

    a1000 Гуру

    Конечно смогу. Как я понял надо переменной i присвоить значение 22?
     
  2. Airbus

    Airbus Радиохулиган Модератор

    Да! Буду признателен
     
  3. a1000

    a1000 Гуру

    Код (C++):
    #define F_CPU 9600000UL
    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    #include <math.h>
    #include <stdlib.h>

    int i=22;

    #define DELAY 200            // настройка скорости (частоты)

    #define RF_PORT PORTB        // порт передачи
    #define RF_PIN  PINB        // порт чтения
    #define RF_DDR  DDRB

    #define OUT_PIN 0        // линия передачи
    #define IN_PIN  1            // линия чтения

    // функции с модулем RF

    #define SET(r, b) (r |= (1 << b))  // установка бита порта
    #define CLR(r, b) (r &= ~(1 << b)) // сброс бита порта

    #define OUT_LOW  (CLR(RF_PORT, OUT_PIN))  // низкий уровень CE
    #define OUT_HIGH (SET(RF_PORT, OUT_PIN))  // высокий уровень CE


    void RF_init()
    {
        /*настройка входа и выхода*/
        RF_DDR  = (1<<OUT_PIN)|(0<<IN_PIN);
        RF_PORT = (1<<OUT_PIN)|(1<<IN_PIN);
    }


    // передача байта
    void RF_write(unsigned char data){

        unsigned char i;


        for(i = 0; i < 8; i++){ // передача данных

            if(((data >> 7) & 1)) { // получение одного бита для передачи
                OUT_HIGH; // передача единицы
                } else {
                OUT_LOW;  // передача нуля
            }

           
            _delay_us(DELAY);

           
            data <<= 1;
        }
    }


    // чтение байта
    unsigned char RF_read(void){

        unsigned char  res = 0;
        unsigned char i;


        for(i = 0; i < 8; i++){ // прием данных

            res <<= 1;
            if((RF_PIN >> IN_PIN) & 1){ // получение бита
                res |= 1; // получили 1, иначе запишется 0 на предыдущем шаге
            }

           
            _delay_us(DELAY);
        }

       
        return res;
    }


    int main(void)
    {

        while (1)
        {

            //for (i=0; i<256; i++) {

                for (int j=0; j<80; j++) {
                    RF_write (0b10110010);

                    RF_write (i);
                }

                _delay_ms(350);

            //}
        } // конец while(1)
    } // конец main
     
     

    Вложения:

    • Debug.zip
      Размер файла:
      12,6 КБ
      Просмотров:
      104
  4. Kot26ru

    Kot26ru Гик

    Подскажите, Тиньку то удалось прошить?
     
  5. Airbus

    Airbus Радиохулиган Модератор

    Прошить удалось но все собрать в кучу и протестировать пока не успел. Кстати этот код компилиться средой Ардуино IDE и сразу можно им Тиньку прошить. Надо только добавить плагины для Тини 13 и сделать шилд для прошивки,хотя это не обязательно но желательно. Тинек ведь 50 штук будет?
     
  6. a1000

    a1000 Гуру

    Так Bootloader всёравно через программатор лить надо. Зачем двойную работу делать, сразу прошивку лить и всё.
     
  7. Airbus

    Airbus Радиохулиган Модератор

    В Тини бутлоадер не прошивается-там ему попросту нет места а только обычный НЕХ файл. В настройках надо выбрать Ардуино as ISP соответственно плата Тини13. Я так давно их прошиваю. Через Ардуино IDE пишу и сразупрошиваю.Типа так

     
    Последнее редактирование: 19 ноя 2021
    Andrey12 нравится это.
  8. a1000

    a1000 Гуру

    Метод знакомый, сам так загрузчики шил раньше. Но по моему автор немного не верно в конце скетч заливал. Если нажать стандартную кнопку "Загрузка", IDE попытается залить компилируемый скетч в UNO. Надо запускать через меню "Скетч" Скетч - Загрузить через программатор.
     
  9. Kot26ru

    Kot26ru Гик

    совершенно верно, каждая тинька к передатчику, а их 50
     
  10. Kot26ru

    Kot26ru Гик

    завтра попробую прошить, отпишусь
     
  11. Airbus

    Airbus Радиохулиган Модератор

    Мне кажется Вы путаете прошивку бутлоадера в Мегу8—328 с прошивкй скомпилированного НЕХ файла в Тини13. У Пушного Звера в видосе все правильно.
    Я смогу только в понедельник—раньше никак работаю. Вы приемник сделали?
     
  12. a1000

    a1000 Гуру

    Может быть. С тиньками никогда не имел дела. Для заливки бутлоадера в Мегу8—328 там другое меню Инструменты - Записать загрузчик. Когда заливал скетч с помощью программатора, использовал Скетч - Загрузить через программатор. Иначе как IDE поймёт с чем ему работать, с программатором или с USB-UART переходником?
    Возможно в связи с тем, что в Тини13 отсутствует UART, и как следствие бутлоадер не существует в природе, кнопка "Загрузка" работает только на программатор.
     
  13. Kot26ru

    Kot26ru Гик

    в понедельник еду в СДЭК за модулями. К сожалению, в воскресенье офис не работает:(
     
  14. Airbus

    Airbus Радиохулиган Модератор

    Попробовал в железе.Сначала связку Тини-13 на демо плате и передатчик. Послушал Баофенгом-в эфир лупит будь здоров с интервалом 1 секунда что то передает. Сделал приёмник на Бредборде. По правде говоря не люблю я эти сопли а плату делать под это влом. Ну вообщем работает!
    [​IMG]
    Принимает записанное 22 хотя иногда и помехи проскакивают ввиде рандомных чисел. Грешу на монтаж-если собрать нормально то и работать будет нормально.
     
  15. Airbus

    Airbus Радиохулиган Модератор

    Код тоже немного изменил. Завёл переменную num-номер маяка та цифра которая передаётся в эфир и отображается на дисплее. Меняем только её для разных маячков. Больше ничего не трогаем
    Код (Text):
    #define F_CPU 9600000UL
    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    #include <math.h>
    #include <stdlib.h>

    int i=0;
    int num=1; // Это номер маяка! Его можно менять в коде

    #define DELAY 200      // настройка скорости (частоты)

    #define RF_PORT PORTB   // порт передачи
    #define RF_PIN  PINB    // порт чтения
    #define RF_DDR  DDRB


    #define OUT_PIN 0     // линия передачи
    #define IN_PIN  1     // линия чтения

    // функции с модулем RF

    #define SET(r, b) (r |= (1 << b))  // установка бита порта
    #define CLR(r, b) (r &= ~(1 << b)) // сброс бита порта

    #define OUT_LOW  (CLR(RF_PORT, OUT_PIN))  // низкий уровень CE
    #define OUT_HIGH (SET(RF_PORT, OUT_PIN))  // высокий уровень CE

    void RF_init()
    {
      /*настройка входа и выхода*/
      RF_DDR  = (1<<OUT_PIN)|(0<<IN_PIN);
      RF_PORT = (1<<OUT_PIN)|(1<<IN_PIN);
    }

    // передача байта
    void RF_write(unsigned char data){

      unsigned char i;

        for(i = 0; i < 8; i++){ // передача данных

            if(((data >> 7) & 1)) { // получение одного бита для передачи
              OUT_HIGH; // передача единицы
            } else {
              OUT_LOW;  // передача нуля
            }

            _delay_us(DELAY);
       
            data <<= 1;
        }
    }


    // чтение байта
    unsigned char RF_read(void){

      unsigned char  res = 0;
      unsigned char i;


        for(i = 0; i < 8; i++){ // прием данных

            res <<= 1;
            if((RF_PIN >> IN_PIN) & 1){ // получение бита
              res |= 1; // получили 1, иначе запишется 0 на предыдущем шаге
            }

             
          _delay_us(DELAY);
        }


      return res;
    }

    int main(void)
    {


    while (1)
    {

    for (int j=0; j<80; j++) {
    RF_write (0b10110010);

    RF_write (num);
    }

    _delay_ms(350);

    } // конец while(1)
    } // конец main
     
     
    Последнее редактирование: 22 ноя 2021
  16. Airbus

    Airbus Радиохулиган Модератор

    Как видно всё компилируется для Тини-13 прямо из Ардуино IDE и шьётся!
    [​IMG]
     
  17. Kot26ru

    Kot26ru Гик

    Благодарю за помощь! Буду собирать!
     
  18. Kot26ru

    Kot26ru Гик

    что то у меня лыжи не едут
    Все получилось! Тинька шьется прямо из Ардуино IDE. Единственный ньюанс - при выборе платы Тиньки 13 - полностью пустой список программаторов получается, хотя все делал по инструкции приведенной в видосе. Почему так, я не понял. Если вернуть плату на нано - список появляется. Но даже при пустом списке, нажав на "загрузить через программатор" скетч спокойно пишется в Тиньку.
     
  19. Kot26ru

    Kot26ru Гик

    Вопрос не по теме: не подскажите удобного способа для отладки скетча (пошаговое выполнение, отслеживание значения переменных, точки остановки и т.п.). Пытался достичь этого в Visual Studio 2022. Установил расширение под Ардуино. В целом скетч писать удобнее чем в IDE. И вроде как присутствует там отладка, но как ей пользоваться я не понял. Гугл мне тоже внятно не помог - что-то конечно выдает, но там темный лес. Пока вся отладка сводится у меня к выводу значений переменных в монитор порта. Был бы признателен за помощь.
     
  20. Airbus

    Airbus Радиохулиган Модератор

    Это Вам к Паровозу он тут спец. Я на железе обычно отлаживаю—способ долгий,трудоемкий но для меня более понятный.
    Там лучше другое ядро для Тини13 установить. Я этим раньше пользовался а потом нашел другое—более интересное. Ссылку найду—дам. Скачаете и разархивируйте—покажу куда. А старое—убрать