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

Atmega8 И Автоматика Ворот, Зависает От Эм Излучения


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

сейчас попробую по другому, все ноги сделаю с подтяжкой, оставлю только моргайку, и подам помех на контроллер... пишу в AVR Studio, первое что попалось под руки и вроде как официальное, завтра моськи заберу и на симмисторах схему попробую запустить.. исходник

только что написал новый проэкт с прошивкой, с функций - только моргание светодиодом.. тоже виснет, исходник теста..

#define F_CPU 8000000
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <asf.h>
int setinit(void);
static void Int100Hz(void); //обработка медленных функций с частотой 100Гц
void led_blink(int a); //моргайка светодиодом
void timer_start(void);
unsigned char LedCoun;
ISR(TIMER0_OVF_vect)
{ TCNT0 = 205;
static unsigned char Div100 = 0; //счетчик, для деления частоты прохода с 20000 Гц до 100 Гц //10000
if (++Div100 >= 200) {
Div100 = 0;
Int100Hz();			 //функции с частотой вызова 100Гц
}
}
//таймер на отсечку по мотору

void Int100Hz(void)
{
sei();					 //разрешить прерывания в медленной части (для выполнения прерываний с частотой 20000 Гц)

if (++LedCoun >= 80)//20
LedCoun = 0;
if (LedCoun >= 20) //5
led_blink(0);
else
led_blink(1);
}

//-----------------------------------------------------------------------------------------------------------------------
void led_blink(int a)
{
if (a==0) {PORTB &= 0b11111011; }
else {PORTB |=0b00000100; }
}
//установка таймера
void timer_start(void)
{
TCCR0 = (1<<CS01); // Тактировать с коэффициентом деления 8.и режим таймера - CTC (0x02 сброс при совпадении), выводы контроллера не исп-ся
TCNT0 = 205; //изначальное смещение

TIMSK |=(1<<TOIE0);

sei();
}
int setinit(void)
{


DDRB |= (1 << 0); //button
DDRB |= (1 << 1); //recieve
DDRB |= (1 << 2); //LED
DDRB |= (1 << 3); //mosi
DDRB |= (1 << 4); //miso
DDRB |= (1 << 5); //sck
DDRB |= (1 << 6); //xtal1
DDRB |= (1 << 7); //xtal2
PORTB = 0 ; //setting port to value
led_blink(0);


DDRC |= (1 << 0); //blink
DDRC |= (1 << 1); //left
DDRC |= (1 << 2); //right
DDRC |= (1 << 3); //clear
DDRC |= (1 << 4); //36kGz
DDRC |= (1 << 5); //clear
DDRC |= (0 << 6); //reset
PORTC |= 0b1000000;
//input_ports

DDRD |= (1 << 0); //gerkon1
DDRD |= (1 << 1); //gerkon2
DDRD |= (1 << 2); //button1
DDRD |= (1 << 3); //button2
DDRD |= (1 << 4); //ir_scan
DDRD |= (1 << 5); //clear
DDRD |= (1 << 6); //clear
DDRD |= (1 << 7); //clear
PORTD = 0;
return 0;


}

//__attribute__((OS_main))
int main (void)
{

setinit();
timer_start();
while(1) {}
}

download_1.jpg

"сырой" исходник программы тут

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

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

Убери везде слово "static". Да и вообще что то ты перемудрил с таймерами. Писал прям в браузере поэтому точки запятые сам поправь если что. Как то так для моргания:

#define F_CPU 8000000
#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <asf.h>

volatile unsigned int ms; // переменная для миллисекунд
volatile unsigned int sec; // переменная для секунд

ISR(TIMER0_OVF_vect) { // сработало прерывание по переполнению
 TCNT0 = 0x83;		 // прерывание будет вызываться через 1 мс
 if (++ms > 1000) {    // если насчитали 1000 мс
   ms = 0;
   sec++;          // тут можно считать секунды
   PORTB ^= 1<<2; // каждую секунду меняем состояние 2-ой ноги PORTB (моргаем светодиодом)
 }
}

int main (void)
{
// Все порты на выход

PORTB = 0x00;
DDRB = 0xFF;

PORTC = 0x00;
DDRC = 0xFF;

PORTD = 0x00;
DDRD = 0xFF;

// Настраиваем 0-й таймер

TCCR0 = 0x03; // установили биты CS01 и CS00 тем самым поделили частоту тактирования таймера на 64
TIMSK = 0x01 // установили битTOIE0 тем самым разрешили прерывание по переполнению
TCNT0 = 0x83; // если будем считать начиная с этого числа, то пока досчитаем до 255 пройдет 1 мс

while(1) {}

}

Попробуй просто поморгать светодиодом в ЧИСТОМ проекте. Без всяких других функций. В прерывании надо только прибавлять/отнимать какие либо переменные в твоем случае. И больше ничего. Никогда так не делай:

ISR(TIMER0_OVF_vect)
{
...
Receive();				 //функция обработки данных линии радиоканала
...
}
ISR(TIMER1_OVF_vect)
{
ir_tx();
}

Потому что у тебя внутри этих функций и считывание EEPROM и delay_ms(100) и ещё полно всего. В прерывании этого делать категорически нельзя. Где у тебя рушится программа сейчас фиг разберешь. Начинай переписывать программу заново, взяв за основу вышеприведенный шаблон и убедившись что светодиод моргает независимо от того вкл. или выкл. электродвигатель.

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

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

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

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

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

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

может я и не прав, но в таймере разрешаются внешние прерывания, и все отлично работает, точнее так как мне нужно, есть некоторые недоработки, но в плане програмонаписания думаю разберусь, залил ваш исходник, добавил в конец sei() и while , выкладываю видео как зависает контроллер... в доме не выключаю плату 2 суток - и все работает, и пульты читаются..

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

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

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

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

Плату переделай. Сопли подбери. А то так и будет глючить.

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

Попробуй Мегу8 заменить на другую. И плату переделай. Все длинные торчащие перемычки работают как антенны.

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

дайте рекомендацию по переделке платы, в прошивке я уверен что работает, я набросал печатку для ЛУТа, меня интересуют сигнальные каналы, выходы допустим я уже паяю на симисторах,в радиодеталях вместо Омников дали резисторы киллоомники, на днях поеду подкуплю нормальных, что именно в схеме нужно доделать? по входам будет достаточно или нужно опторазвязку делать? все-равно думаю бессмысленно, потому как земля или питалово будут общими, по поводу самой платы.. заливку массовую делать? если да то на весь блок или только на часть с микроконтроллером, сплошную или сетчастую? делаю в diptrace..

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

Думаю есть смысл поменять полярность по входам, т.е. на кнопки подать + пит. , а подтянуть на массу и код не много переделать.

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

Думаю есть смысл поменять полярность по входам, т.е. на кнопки подать + пит. , а подтянуть на массу и код не много переделать.

но при таком раскладе любая наводка, например от молнии будет подавать импульс на входы, для этого я диоды и поставил, что б ток стекал от контроллера а не шел на него, или может я не прав?

ногу AREFF нужно подключать? не совсем понятно или в моем случае его запитка нужна..

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

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

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

всем спасибо за подсказки, доделал всю систему, после переделки платы под ЛУТ и реле, впихнув БП и все что было на плату - все отлично работает даже без искрогашения, единственное что расстояние от пульта слабое, причины наверное в металлическом заборе и в воротах, и близлежащие наводки 220В, что я устраню сделав выносную антенну

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

Скиньте всё по этому проэкту,думаю всем будет интересно,надо собрать другу такое управление.Спасибо.

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

начну с того как оно работает

и как выглядит сама система

0c9ea3b3f41bt.jpg

129c7d923d66t.jpg

e60ad335a9a7t.jpg

9aa991badbbbt.jpg

6e1ef3c7c703t.jpg

9e6f43c9fbe1t.jpg

теперь описание, прошивка и все ее составляющие в архиве.... сначала сделал плату под симмисторы, но не выдержав тяжелой доли один из них скоропостижно сгорел, я психанул, сделал все как было на реле... правда монтаж был на той же плате где были симмисторы... думал ставить RC на мотор.... но обошлось и все работает отлично, схему прилагаю, думаю для того кто будет собирать - подкорректировать не составит труда, на одном из выходов есть сигнал 36кГц смодулированный для TSOP 1736, который является датчиком препятствия, на излучении стоят 2 ИК диода последлвательно + резистор, запитал от +12В, потому как после стабилизатора создавал помеху плате по питанию, на tsop желательно отдельное стабильное питание, потому как хапает помеху и иногда не срабатывает на преграду... это единственный косяк который подглючивает, 2 дня все работает в тестовом режиме, питание временно взял удлинителем, в ближайшем будущем будет подведено стационарное..

download_2.jpg

PS: после всего пришлось по входам сделать подтяжку 10К, чего-то его непонятно глючило.. главное что 2 дня с машины не выхожу открывать ворота, что и требовалось..

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

  • 1 месяц спустя...

dimasoft Доброго времени суток! Как работает схемка?Какими программами открыть вложенное,не которые не могу открыть.Ещё бы печатку в ЛАЙ,было бы вообще хорошо. Спасибо.

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

все работает отлично, правда еще будут зимние испытания, по поводу глюков - ни единого не было... Если что-то и глючило то из-за корявого монтажа... Подключил кнопку, издому могу ворота открыть и закрыть.. В общем удобно.. Прошивка в atmel studio , симуляция была в proteus, схемы в diptrace. оговорюсь по поводу схемы.. Сделал под себя.. Плату нужно дорабатывать - получилась не качественно, но работает.. Лезть пока не буду. Главное что прошивка работает.. И контроллер не виснет.

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

  • 1 месяц спустя...

dimasoft Скажите, часом платка в ЛАЙ есть?,поделитесь,ещё вопрос:от какой сигналки брали приёмник,какой пульт применили?Почему то не всё йз архива могу открыть,каими программами пользовались? Спасибо.

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

пульты взял с такого комплекта, оттуда можно и приемник вытянуть

http://130.com.ua/product/central-lock-controller-unit-vitol-cobra-cz-32010-with-rc/

печатки в lay нет, делал в diptrace, мне показалось это более удобно, тем более настоятельно рекомендую печатку сделать самому под себя, используя мою разводку, потому как и приемник такой найти вряд ли выйдет, и выходной каскад сейчас у меня на реле, плюс к этому блок питания тоже на плате, все зависит от используемых компонентов..

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

http://rusfolder.com/41948982

все что использовал по diptrace.. Рекомендательно только расположение дорожек по управлению, выходной каскад и источник питания по своему усмотрению..

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

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

dimasoft Доброго времени суток! Устройство буду собирать по любому,закончу начатые проекты и к этому приступлю,просматривал схемки,появился вопросик,дорисуйте пожалста на принципиальной схеме как подключали ИК датчики. Спасибо.

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

dimasoft

Название привода ворот можно узнать ?

какой-то китайский БУ мотор-редуктор, заказал по инету, долго искал что-то подходящее... Мотор 120 Вт 3-х фазный, изначально подключение звезда, подключил на треугольник, что б на 220 было.. правда выломало шпонку на ведомой и пока ворота вращает через раз(за счет трения), никак руки не дойдут разобрать и отремонтировать привод. По поводу подключения силовой цепи.... Можно комбинацией реле подключить абсолютно любой мотор, есть 3 выхода, один постоянно при вращении мотора и два выхода в зависимости от направления вращения, к первому выходу впаралель можно подключить лампочку. Уже была мысль старую электромясорубку поставить...

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

Уважаемые, пожалуйста, необходимый минимум, или не минимум, критерии что бы можно было с помощью сверхрегнератора и AVR декодировать произвольную посылку. СИ - без понятия. Есть пример программы АСМ радиоканала с применением протокола RC5. И вроде работающее готовое уст-во на Easyelectr. Но что-то смущает. Собственные усилия дают какие-то чудеса при декодировании в железе.

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

Уважаемые, пожалуйста, необходимый минимум, или не минимум, критерии что бы можно было с помощью сверхрегнератора и AVR декодировать произвольную посылку. СИ - без понятия. Есть пример программы АСМ радиоканала с применением протокола RC5. И вроде работающее готовое уст-во на Easyelectr. Но что-то смущает. Собственные усилия дают какие-то чудеса при декодировании в железе.

не совсем понятно что нужно.. Но СИ поучить стоило бы, там ничего тяжелого нет, а если и есть - читаем мануалы и онлайн книги. В моей схеме стоит отдельный приемник на 433.92, он уже и выдает дискретный цифровой сигнал на контроллер, здесь на форуме есть исходник на обработку сигнала на RC5, в сообщениях выше есть описание и исходник абсолютно работающей функции по принятию кода с эфира.. Если есть желание разобратся - нужно брать исходник и читать столько раз, сколько нужно для восприятия.. по поводу кодирования в железе - в первую очередь нужно правильно принять посылку, а опосля уже ее обрабатывать...

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...