Форум
 

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

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

Ответ
 
Опции темы Опции просмотра
Старый 27.01.2018, 14:18   #251
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,156
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

В Atmel есть окуенный оптимизатор-компилятор, что ардуиновский отдыхает СААААААВСЕМ. Смотри вот пример фрикерского Блинка ( сразу глушилка) на Атмеле:
PHP код:
#define F_CPU 8000000UL // Указываем тактовую частоту
#define TX PB3         // передача в ТВОЕМ СЛУЧАЕ СВЕТОДИОД
#define SW PB1         // -> влючение приемника SWITCH=0, а передатчик SWITCH=1 
#include <avr/io.h>     // Подключаем определения ввода/вывода
#include <util/delay.h> // Подключаем библиотеку функций задержки
int main(void)
{    
    
DDRB = (1<<TX)|(1<<SW);     // конфигурируем пины Порта B как выходы
    
PORTB 0b00000010//   по умолчанию на ногах камушка  TX (PB3) 0 вольт , а SW(PB1) лог 1 (или 3вольт)
    
while (1)
    {    
        
_delay_us(1400); // задержка в микросекундах, стандартная библа в IDE
        
PORTB ^= (1<<TX);  // инвертируем состояние пина c 0 в 1, и в следующий раз наоборот.//Paul74s так не рекомендует, ибо не оптимально.
    
}    

PORTB = (1<<TX); - Это аналогичная запись digitalWrite(PortB3, HIGT)

Вот итоги компиляции:
Цитата:
Task "RunOutputFileVerifyTask"
Program Memory Usage : 66 bytes xxx % Full
Data Memory Usage : 0 bytes 0,0 % Full

Вот теперь чухаешь разницу 66 баит или ардуиновского 928 баит

Добавлено через 8 минут
И есля сейчас не убедил, то снимаю шляпу. ХЗ чем есщо помочь. Как сказал ув.Paul74s: "...Не в обиду сказано, но Arduino это детский сад... А потом ПТУ, институт".

Последний раз редактировалось EPA; 27.01.2018 в 14:13.
EPA вне форума   Ответить с цитированием
Старый 28.01.2018, 09:09   #252
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,156
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

ЗЫ забыл сказать, что в новой Atmel Studio 6 и выше не надо даже устанавливать Visual Micro, у производителей своя уже фишка есть в работе с файлами типа .ino (ардуино) ( правда карявая наверное! попробывал пять минут, удовлетворения не принесла, лишние ардуиновские телодвижения ) . И всё это бесплатно

Последний раз редактировалось EPA; 28.01.2018 в 10:24.
EPA вне форума   Ответить с цитированием
Старый 02.02.2018, 20:16   #253
kentik Меню Пользователя
Вступил в клуб
 
Регистрация: 24.03.2016
Сообщений: 28
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

Цитата:
Сообщение от EPA
И есля сейчас не убедил, то снимаю шляпу.

так меня и не надо убеждать. я ниразу не сомневаюсь, что среда разработки от производителя микроконтроллеров ни в какое сравнение не идет с "красивым текстовым редактором" от ардуины.
66 байт это конечно круто. ради интереса вбил этот код в ардуиноИДЕ. получилось 198 байт.
kentik вне форума   Ответить с цитированием
Старый 02.02.2018, 20:31   #254
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,156
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

Цитата:
Сообщение от kentik
так меня и не надо убеждать. я ниразу не сомневаюсь, что среда разработки от производителя микроконтроллеров ни в какое сравнение не идет с "красивым текстовым редактором" от ардуины.
66 байт это конечно круто. ради интереса вбил этот код в ардуиноИДЕ. получилось 198 байт.

Дружище, видишь ли, если тебя не надо убеждать, то другим и палкой не вобъёшь. Консерваторы. Проверено! Я так сказать, решил сразу и для общих масс накалякать.
А у тебя получилось 198байт, потому что в коде ардуины уже встроена функция millis () которая до переполнения будет неделю молотить , и ещё какаянить инициализация какойнить периферии. А я тупо по дефолту зделал что есть в принципе не гуд. НО ВСЕРАВНО РАЗНИЦА 198байт vs 968байт стандартного блинка

Последний раз редактировалось EPA; 02.02.2018 в 20:34.
EPA вне форума   Ответить с цитированием
Старый 03.02.2018, 11:27   #255
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,156
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

т.е. говоря математическим языком это 82% байтов кода не знаешь что там записано, а следовательно ХЗ что этот код делает, может там троян! Этож студенты писали ( по себе знаю в студенческие времена писали простенькие вирусы - Экран вверх ногами и т.д. ) - Это раз . А два: чем больше кода в обработке,
- тем больше ресурсов тратит микроконтроллер, а это электроэнергия (быстрее сядет аккумулятор);
- тем больше времени тратит микроконтроллер для обработки данных ( потеря производительности). А в нашем деле каждая микросекунда дорога. А энтот digitWrite() и тому подобное до 160мкс -время обработки. А с учетом того, например полезный радиосигнал 250мкс , то хрен Камень успеет обработать вводные данные. А если записать PORTB = (1<<TX) то время обработки < 1 мкс. А есть разница 1мкс vs 160мкс. - в 100раз и более
Вот такие Пироги! Так что ардуиновские коды полезны, например в системе умного сортира, подогревать унитазы!
EPA вне форума   Ответить с цитированием
Старый 03.02.2018, 18:29   #256
logach Меню Пользователя
Член клуба
 
Регистрация: 16.10.2015
Сообщений: 195
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

millis () которая до переполнения будет неделю молотить---там в друине есть не плохие альтернативы 4мкс, в виде функций и др нахлабучек, просто надо знать, так к слову! Я только учусь, может не прав, так что не кидайте белые тапочки!
logach вне форума   Ответить с цитированием
Старый 03.02.2018, 18:59   #257
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,156
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

Пока никто не умер, зато сланцы есть . Летают лучше, точнее и больнее.
А так ты прав, но базар не о том был.

Последний раз редактировалось EPA; 04.02.2018 в 01:51.
EPA вне форума   Ответить с цитированием
Старый 05.02.2018, 17:49   #258
Askar2018 Меню Пользователя
Гость клуба
 
Регистрация: 14.01.2018
Сообщений: 3
По умолчанию Re: Пакеты сигнализаций wav-файлы

День добрый . Подскажите новичку какую можно прошивку залить на брелок шериф zx-750? Спасибо.
Askar2018 вне форума   Ответить с цитированием
Старый 30.04.2018, 17:50   #259
kentik Меню Пользователя
Вступил в клуб
 
Регистрация: 24.03.2016
Сообщений: 28
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

Добрый день.
Все никак не вылезти мне из песочницы.
Подскажите, что я делаю не так?

Есть сигнал came 12 бит статика.
Вот такой:
20180430_172222.jpg

Пытаюсь его считать на мк.
Первым делом объявляем константы и переменные:
PHP код:
unsigned long lastTime=0//для вычета из micros, что бы знать длительность
const int RX_STATE 2;  //пин приемника
volatile boolean p_level=false//состояние ноги приемника
volatile long len=0;  

volatile struct 
  
{
    
unsigned char state
    
unsigned char Tedata[1], dat_bit;
 } 
came;

#define CAME_TE 320  // теоретическое значение ТЕ у came 
#define CAME_MAX_TE 420 //максимально возможное значение TE
#define CAME_MIN_TE 250 //минимально возможное значение TE
#define MIN_PULSE 200  //все что менее 200 мкс даже не рассматриваем
#define CAME_MAX_BITS 12  //число битов в статике came 12 
потом само прерывание по изменению фронта на ноге мк:
PHP код:
void prerivanie(){
   
unsigned int len;       
   
len=micros()-lastTime//считаем время
   
lastTime micros();  
    if(
len<MIN_PULSE) return;  //шулупу не рассматриваем
   
p_level digitalRead(RX_STATE); // запоминаем какой сигнал у нас на ноге
    
if(len>6000came.state=0;   //если уж затяжной сигнал, то начинаем все заново
   
process_came(); //ну сам обработчик came

ну и самое вкусное:
PHP код:
void process_came(){
  
unsigned int p_len=len//переменная времени с которой и будем работать
  
unsigned char a//позже понадобится
    
switch(came.state)
    {
      case 
0:  //самое начальное состояние. 
        
if(p_level) break;  //работаем только с положительным сигналом, длина импульса с нуле не нужна.
        
came.state=1;
        break;
        
      case 
1
         if(
p_level){
           if(
p_len>CAME_TE*3) break;  //уходим если длина импульса более 3х ТЕ    
          
}
        if(!
p_level){ //проверяем хедер
         
if(p_len<CAME_MAX_TE && p_len>CAME_MIN_TE)
         {
          
came.Te p_len;  //записываем длину импульса 1 ТЕ
          
came.state=2;
          
came.dat_bit=0;  //обнуляем счетчик
          
for(a=0a<sizeof(came.data); a++) came.data[a]=0;
          break;
         }
        }
       
      case 
2:    
        if(
p_level) break;  //работаем только сдлиной положительного импульса
 //единичку записываем в массив. нули не пишем, так как и так все в нулях   
  // значение 50 - это допуск, хотя я так понимаю он особо не нужен, так как в хедере истинное значение TE        
        
if(p_len<(came.Te+50) && p_len>(came.Te-50)) came.data[came.dat_bit/8]|=(1<<(came.dat_bit%8));       
 
//выходим, когда записали все 12 бит.   
        
if(++came.dat_bit==CAME_MAX_BITScame.state=3;
        break;
  
      case 
3
        break;
    }

что бы посмотреть что вообще получается в теле программы стоит так:
PHP код:
if(came.state==3)
    {
      
Serial.print("Data: ");
      
Serial.print(came.data[0], BIN);
      
Serial.print(" | ");
      
Serial.println(came.data[1], BIN);   
      
came.state=0;
   } 
и на выходе я получаю вот такой ответ - Data: 0 | 1100
причем не важно - нажимаю я брелок или нет.
Подскажите, пожалуйста, куда копать.
Что-то упустил. делал по аналогии с алгоритмом "радиоплан". брать готовые не хочу, так как сам не научусь, да и сомнительные 90% готовых листингов тут. они почему-то все обрабатывают в функции прерывания. мне кажется если алгоритмов будет штук 20-40, то мк надо очень помощнее брать.
kentik вне форума   Ответить с цитированием
Старый 30.04.2018, 20:03   #260
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,156
По умолчанию Re: FAQ. Часто задаваемы вопросы. Схемотехника, программирование. Новичкам читать!

1) У тебя переменная len объявлена как глобальная, и в то же время в функции прерывания так же есть внутреннее объявление len. Соответственно функция prossec_came ( ) обращается к глобальной переменной len, которая всегда равно 0.
EPA вне форума   Ответить с цитированием
Ответ

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

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

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



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


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