Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Разное > Курилка

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2016, 20:42   #1
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию AVR (mega328p)

Ну по аналогии с соседней темой про буйлдрут (но надеюсь с более ощутимым результатом) хочу по обсуждать программирование и прошивку AVR.
Исходные данные:
К одной ардуине (UNO схема) прицеплена кнопка. ко второй арудине (promini) прицеплен светодиод.
Задача:
При нажатии кнопки сведодиод должен поочередно загораться и гаснуть. Связь между дуинами через Cluenet.

Вопросы для начала:
  1. Если я сотру бутлоадер ардуины - что я потеряю?
  2. Нужно ли мне (на этапе данной задачи) изучать фьюзы?
  3. Как прошить ProMini?
    1. на Uno есть выводы c ch370g, я могу ими воспользоваться или мега на плате мне помешает?
    2. Видел, что шьют через USB-COM, а сразу с COM порта можно?
    3. Где-то валялась max232 она нужна будет?

Последний раз редактировалось Tohin; 31.03.2016 в 20:44.
Tohin вне форума   Ответить с цитированием
Старый 31.03.2016, 21:22   #2
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

1-Нельзя будет прошить через USB, только программатором
2-Если прошивать через бутлодер , то не нужно
3-Как обычно в инете куча инструкций
а-можно если обе ардуины посадить на reset
b-если бутлодер жив то можно прошивать через UART
c-если к полноценному COM подключать то нужна
Admin вне форума   Ответить с цитированием
Старый 31.03.2016, 21:33   #3
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

У Клюнета свой бутлоадер. Если я затру ардуиновский то UNO будет шиться через ch340G? LPT?
Tohin вне форума   Ответить с цитированием
Старый 31.03.2016, 21:49   #4
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

Цитата:
Если я затру ардуиновский то UNO будет шиться через ch340G? LPT?
Нет
Admin вне форума   Ответить с цитированием
Старый 01.04.2016, 09:48   #5
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

А разве lpt не програматор?
Tohin вне форума   Ответить с цитированием
Старый 01.04.2016, 10:27   #6
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

На самом деле шиться можно чем угодно, если есть софт для прошивки
Например можно сделать программатор из USB-UART моста FTDI или из той же ардуины
Admin вне форума   Ответить с цитированием
Старый 03.04.2016, 14:25   #7
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

Мой первый блин...
передачу данных не проверял, но лампочками моргает не так как я задумал...

Код:
#include "defines.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/sleep.h>
#include "clunet.h"

/* For remind
pb0 - button whith +5V on press
pb1 - control led - light when button active
pb2 - eror led
pd3 - TX
pd2 - RX
*/

void data_received(unsigned char src_address, unsigned char dst_address, unsigned char command, char* data, unsigned char size)
{
}

int main (void)
{
	clunet_init();
	clunet_set_on_data_received(data_received);	
	sei();

	DDRB = 0b00111110; // Порт B вход на ноге 0  выход на ногах 1-5, ноги 6,7 вход с кварца, не трогать.
	PORTB = 0x00; // отключаем подтягивающие резисторы
	
	char needsend=1;
	char buffer[1];
	buffer[0] = 1;
	signed char sw=1; //на начальном этапе предполагем, что диод выключен, и его надо включить. Потом будем учить меня получать состояние с управляемого устройства
	clunet_send(CLUNET_BROADCAST_ADDRESS, CLUNET_PRIORITY_MESSAGE, CLUNET_COMMAND_DEVICE_POWER_INFO, buffer, sizeof(buffer));
	
	while (1){	
						if ((PINB&(1 << PB0)) == 1&&needsend==1) { 
							PORTB |= (1 << PB1); // включаем контрольный диод на выводе PB1
						clunet_send(1,CLUNET_PRIORITY_COMMAND,0x21,sw,strlen(sw)); // В моем представлении эта комманда оптравляет на устройство 1 комманду под номером 33  с одержимым 'sw' - 1 или 0, которые включают или выключают диод
						needsend=0;// пока не отпустим кнопку, больше слать не надо
						sw=!sw; //в следующее нажатие нужно инвертировать комманду, не знаю можно ли так писать в C...
						_delay_ms(200); //боремся с дрябезгом?
						} // Ждем пока на выводе PDO лог. 1
						if((PINB&(1 << PB0)) == 0&&needsend==0){   //кнопка отпущена, и ранее была отослана комманда
						needsend=1;// при следующем нажатии кнопки надо будет послать комманду.
						PORTB &= ~(1 << PB1); // выключаем контрольный диод на выводе PB1
						}
						else{ //что-то пошло не так
						PORTB |= (1 << PB2); // включаем красный диод на выводе PB2
						_delay_ms(500); // чтоб увидеть это#define
						PORTB &= ~(1 << PB2); // и гасим его в надежде, что в следующем цикле ошибок не будет.
						}
     }
	
	
}
Хотя бы скомпилилось и то ладно...
А я правильно прочитал что в С-ях нету elseif? ну по аналогии с пхп...

UPD:
Перечитал код... посмотрел на диоды, потыкал кнопочку.. стало понятнее.
Итак "симптомы":
"аварийный" диод горит постоянно - логично
При нажатии кнопки загорается контрольный диод. бывают лаги, когда попадаю на delay. потом кратковременно гаснет "аварийный диод". Контрольный диод гаснет только при отпускании кнопки.
Надо приниматься за программатор для promini и принимающую программу.

Последний раз редактировалось Tohin; 03.04.2016 в 14:54.
Tohin вне форума   Ответить с цитированием
Старый 03.04.2016, 14:46   #8
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

Цитата:
А я правильно прочитал что в С-ях нету elseif? ну по аналогии с пхп...
Нету
Admin вне форума   Ответить с цитированием
Старый 03.04.2016, 17:37   #9
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1030
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию Re: AVR (mega328p)

А если я подключу ProMini к разъемам UNO - 0(RX) и 1(TX) (выведены с ch340g)
При этом замкну Reset на +5, чтобы предотвратить перешивку набортной mega.
а ProMini сброшу вручную.
Я прошьюсь? или это все бред дилетанта?
Tohin вне форума   Ответить с цитированием
Старый 03.04.2016, 20:14   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9820
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: AVR (mega328p)

Цитата:
При этом замкну Reset на +5
На GND нужно подключать
Цитата:
Я прошьюсь? или это все бред дилетанта?
Прошьешь только если в контроллере бутлоадер залит

Как вариант можно купить на алике дешевый программатор USBASP
Им можно бутлоадеры без определенных знаний , прямо и Arduino IDE прошивать
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 6 (пользователей: 0 , гостей: 6)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Быстрый переход


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


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика