Код (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
Прошить удалось но все собрать в кучу и протестировать пока не успел. Кстати этот код компилиться средой Ардуино IDE и сразу можно им Тиньку прошить. Надо только добавить плагины для Тини 13 и сделать шилд для прошивки,хотя это не обязательно но желательно. Тинек ведь 50 штук будет?
Так Bootloader всёравно через программатор лить надо. Зачем двойную работу делать, сразу прошивку лить и всё.
В Тини бутлоадер не прошивается-там ему попросту нет места а только обычный НЕХ файл. В настройках надо выбрать Ардуино as ISP соответственно плата Тини13. Я так давно их прошиваю. Через Ардуино IDE пишу и сразупрошиваю.Типа так
Метод знакомый, сам так загрузчики шил раньше. Но по моему автор немного не верно в конце скетч заливал. Если нажать стандартную кнопку "Загрузка", IDE попытается залить компилируемый скетч в UNO. Надо запускать через меню "Скетч" Скетч - Загрузить через программатор.
Мне кажется Вы путаете прошивку бутлоадера в Мегу8—328 с прошивкй скомпилированного НЕХ файла в Тини13. У Пушного Звера в видосе все правильно. Я смогу только в понедельник—раньше никак работаю. Вы приемник сделали?
Может быть. С тиньками никогда не имел дела. Для заливки бутлоадера в Мегу8—328 там другое меню Инструменты - Записать загрузчик. Когда заливал скетч с помощью программатора, использовал Скетч - Загрузить через программатор. Иначе как IDE поймёт с чем ему работать, с программатором или с USB-UART переходником? Возможно в связи с тем, что в Тини13 отсутствует UART, и как следствие бутлоадер не существует в природе, кнопка "Загрузка" работает только на программатор.
Попробовал в железе.Сначала связку Тини-13 на демо плате и передатчик. Послушал Баофенгом-в эфир лупит будь здоров с интервалом 1 секунда что то передает. Сделал приёмник на Бредборде. По правде говоря не люблю я эти сопли а плату делать под это влом. Ну вообщем работает! Принимает записанное 22 хотя иногда и помехи проскакивают ввиде рандомных чисел. Грешу на монтаж-если собрать нормально то и работать будет нормально.
Код тоже немного изменил. Завёл переменную 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
что то у меня лыжи не едут Все получилось! Тинька шьется прямо из Ардуино IDE. Единственный ньюанс - при выборе платы Тиньки 13 - полностью пустой список программаторов получается, хотя все делал по инструкции приведенной в видосе. Почему так, я не понял. Если вернуть плату на нано - список появляется. Но даже при пустом списке, нажав на "загрузить через программатор" скетч спокойно пишется в Тиньку.
Вопрос не по теме: не подскажите удобного способа для отладки скетча (пошаговое выполнение, отслеживание значения переменных, точки остановки и т.п.). Пытался достичь этого в Visual Studio 2022. Установил расширение под Ардуино. В целом скетч писать удобнее чем в IDE. И вроде как присутствует там отладка, но как ей пользоваться я не понял. Гугл мне тоже внятно не помог - что-то конечно выдает, но там темный лес. Пока вся отладка сводится у меня к выводу значений переменных в монитор порта. Был бы признателен за помощь.
Это Вам к Паровозу он тут спец. Я на железе обычно отлаживаю—способ долгий,трудоемкий но для меня более понятный. Там лучше другое ядро для Тини13 установить. Я этим раньше пользовался а потом нашел другое—более интересное. Ссылку найду—дам. Скачаете и разархивируйте—покажу куда. А старое—убрать