Прямой эфир

0
Именно так.
  • avatar
  • mzw
  • 20 августа 2017, 11:46
-1
Да-а, в наши-то современные времена agile и прочей индустрии непрерывной разливки говнокода с мин. скоростью 200-300 строк в сутки — сразу видно, что это типичный софтовый труд для «расслабленного» или старикана-пенсионера :D
0
P.S.
После «sei();» стоит добавить «while(1);», хотя в avr-gcc оно и так работать должно, компилятор сам вставляет бесконечный цикл после вызова main().
  • avatar
  • Vga
  • 20 августа 2017, 08:02
0
А на С оно бы влезло прямо в комментарий:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>

#define OUT_PIN PB3
#define THRESHOLD 139

 __attribute__((__naked__)) ISR(TIM0_OVF_vect)
{
    static uint8_t ctr = 0;
    ctr--;
    if(ctr == 0)
    {
        ADCSRA |= _BV(ADSC);
        while(ADCSRA & _BV(ADSC));
        if(ADCH >= THRESHOLD)
            PORTB &= ~_BV(OUT_PIN);
    }
    else if(ctr == 4)
        PORTB |= _BV(OUT_PIN);
}

void main(void)
{
    DDRB = _BV(OUT_PIN);
    PORTB = 0;
    TIMSK0 = _BV(TOIE0);
    TCCR0A = 0;
    TCCR0B = _BV(CS00) | _BV(CS01);
    ADCSRA = _BV(ADEN) | _BV(ADPS2);
    ADCSRB = 0;
    ADMUX = _BV(MUX0) | _BV(ADLAR);
    ADCSRA |= _BV(ADSC);
    while(ADCSRA & _BV(ADSC)); 
    sei();
}

В том числе вместе с кексом:
:1000000009C016C015C015C013C012C011C010C061
:100010000FC00EC011241FBECFE9CDBF20E0A0E667
:10002000B0E001C01D92A136B207E1F714D025C09F
:10003000E7CF80916000815080936000843011F49C
:10004000C39A09C0811107C0369A3699FECF85B18F
:100050008B3808F0C39888E087BB18BA82E089BF64
:100060001FBC83E083BF84E886B913B881E287B9F7
:0E007000369A3699FECF78940895F894FFCF13
:00000001FF
  • avatar
  • Vga
  • 20 августа 2017, 07:59
0
Mihail -у надо обязательно к 16 ;)
  • avatar
  • Make_Pic
  • 20 августа 2017, 04:09
0
yadi.sk/d/DN6tU7CQ3M9p3S
А это проект для AVR-Studio
  • avatar
  • mzw
  • 19 августа 2017, 20:11
0
yadi.sk/d/6i5h_F2S3M9oaQ
yadi.sk/d/x30TGzGD3M9obm
Прикрепить файлы не получилось — пришлось опять залить на Яндекс.Диск
  • avatar
  • mzw
  • 19 августа 2017, 20:05
0
Поэтому его нужно будет приводить к 16-ти разрядному числу, что резко сократит диаппазон.
Так приведите к 32-ти разрядному, что бы не сокращать диапазон.
  • avatar
  • Vitalik
  • 19 августа 2017, 18:31
0
Так это же хорошо.
Алгоритм-то простейший.
  • avatar
  • mzw
  • 18 августа 2017, 19:03
0
Прошу прощения — только вот заметил…
уже почти сам написал :)
  • avatar
  • malex66
  • 18 августа 2017, 19:01
0
нет такой разрядности числа в си, только 16, 32. Поэтому его нужно будет приводить к 16-ти разрядному числу, что резко сократит диаппазон. Если использовать прерывание SysTick, то да, так же можно в прерывании завести счетчик. Но зачем козе баян, если можно считывать с 32-х разрядных таймеров значение напрямую? Впрочем, в каждом случае свое решение.
  • avatar
  • Mihail
  • 18 августа 2017, 15:20
0
да о нем милом, только почему неудобно?
  • avatar
  • Make_Pic
  • 18 августа 2017, 15:19
0
Если вы о таймере SysTick процессоров arm (нужно уточнять, что вы имеете ввиду), то использовать его неудобно поскольку он 24-х разрядный.
  • avatar
  • Mihail
  • 18 августа 2017, 15:16
0
Это завтра
  • avatar
  • mzw
  • 18 августа 2017, 09:36
0
Состояния аккумулятора не знаю, да и неохота проверять.
А стоило бы.
malex66, я отправлял исходник вам на почту 30 июля.
Лучше перевыложи тут, аттачами к топику (если будут возникать ошибки — пробуй еще и еще, раза с десятого сработает!).
  • avatar
  • Vga
  • 18 августа 2017, 09:30
0
Вообще, устройство работает без проблем, вот уже, как я смотрю по датам комментариев, 6 лет.
Я на него вообще не обращаю внимания. Состояния аккумулятора не знаю, да и неохота проверять.
  • avatar
  • mzw
  • 18 августа 2017, 09:14
0
malex66, я отправлял исходник вам на почту 30 июля.
Проверьте, пожалуйста.
А так, выложу в выходные.
В будни мне сложно добраться до исходников.
  • avatar
  • mzw
  • 18 августа 2017, 09:09
0
так автор вроде пообещал — и опять исчез…
зы. а так пишу уже… пишу потихоньку.
  • avatar
  • malex66
  • 18 августа 2017, 08:35
0
P.S. Узел на ТЛ1 можно заменить более распространенной 561ЛА7, DD3 оставить как есть, генератор на DD4 заменить генератором на 2-3 инверторах.
  • avatar
  • Vga
  • 18 августа 2017, 00:15
0
P.S. Можно весь узел на компараторе ТЛ-кой заменить. Анод на землю, катод на 5-й пин триггера, управляющий на среднюю точку делителя R10R11. R12 можно уменьшить в пару раз.
  • avatar
  • Vga
  • 18 августа 2017, 00:13