нууу, у мня идей больше неть. бери, значить, другой код маяка.
Не!!! "Русские не сдаются"!!!
Я тут явную связь выявил, стоит открыть-закрыть монитор порта и скетч начинает работать правильно...
уменьшил скорость порта до 9600, пытаю, пока работает как надо, теперь надо строку вводимую в мониторе порта сохранить в еепром и забирать оттуда, если было сохранение, попробую сам прикрутить
строчку кстати исправил - #pragma GCC optimize ("-Os") //где х - 0, 1, 2, 3, fast, g, s - уровень оптимизации
Да, цикл loop выполняется за время от 18 миллисекунд при настройке сериала на скорость 9600 до 1 миллисекунды и менее при повышении скорости порта, попробую в таймере уменьшить время опроса датчика до к примеру 13 миллисекнд, по результатам отпишусь...
Всё таки хотелось бы выяснить в чем проблема, что на четвётом таймере библиотека или скетч заглючили, по сути у тебя получилась некая версия RTOS на таймерах и, это интересно
Каоче, вот мои последние предположения. Таймер генерирует прерывания железно, они всегда приходят и всегда выполняются. Проблема может быть в том, что не успевает вовремя отрабатывать отклик на сапщения в очереди. Значить, надо попробовать сбрасывать флаги и делать всю нужную фигню не в очереди сообщений, не там где обрабатывается msg_TimerEnd, а перенести это в функции прерываний от таймера, в void tmr...();
и у всех глобальных bool флагов поставить volatile. Ну и не только у них, а у всего, что меняется в функциях tmr...(). TXState там, TXCurrentMask и тыды.
Я свой стэнд уже разобрал, поэтому пробовать тебе самаму придёца.
и у всех глобальных bool флагов поставить volatile. Ну и не только у них, а у всего, что меняется в функциях tmr...(). TXState там, TXCurrentMask и тыды.
Я свой стэнд уже разобрал, поэтому пробовать тебе самаму придёца.
А тут без 100 грамм никак...
Помнится как то со знакомым ехали на машине, ну и разговаривали ес-но. Когда знакомый вышел, мне водитель спрашивает, слушай, о чём вы всё это время говорили? Я нифига не понял...) При том что он тоже вроде как р/любитель был.)
Это просто вспомнилось, не применительно к данному случаю.)
А тут без 100 грамм никак...
Помнится как то со знакомым ехали на машине, ну и разговаривали ес-но. Когда знакомый вышел, мне водитель спрашивает, слушай, о чём вы всё это время говорили? Я нифига не понял...) При том что он тоже вроде как р/любитель был.)
Это просто вспомнилось, не применительно к данному случаю.)
Дед, только не вздумай ничего удалять, с бочкой удалил, хорошо я частично скопировал... Ну не всем так дано мыслить, а из примеров собрать, кое- то получается.
Вспоминаю скоростной приём. Там заказываешь 5 скоростей, результат по лучшей принятой. Так вот, на первых скоростях думаешь о чём попало, принимая в фоновом режиме, и только на последующих уже начинаешь напрягаться.)
Нет, для своего позывного нужно же иметь разрешение с соответствующей категорией и пр. А так получается что вместо тебя работает робот и возможна ситуация когда твоих экземпляров класса может быть несколько.) С одинаковыми позывными! Что как то странненько.)
кстати, изобрели новую моду в цифре, ft8 называется, приходишь значит вечерком, после срача на форуме, включаешь рацию в этой моде, идёшь ужинать, потом променад, потом спать, утром дивишься, сколько ТЫ dx радиосвязей провёл за ночь...одним словом прогресс убивает радиолюбительство...
кстати, изобрели новую моду в цифре, ft8 называется, приходишь значит вечерком, после срача на форуме, включаешь рацию в этой моде, идёшь ужинать, потом променад, потом спать, утром дивишься, сколько ТЫ dx радиосвязей провёл за ночь...одним словом прогресс убивает радиолюбительство...
лучше бы дубля посадил на форуме срачица и жене кивать, а сам с DX-ами живьём за жизнь гутарил. :)
кстати, изобрели новую моду в цифре, ft8 называется, приходишь значит вечерком, после срача на форуме, включаешь рацию в этой моде, идёшь ужинать, потом променад, потом спать, утром дивишься, сколько ТЫ dx радиосвязей провёл за ночь...одним словом прогресс убивает радиолюбительство...
лучше бы дубля посадил на форуме срачица и жене кивать, а сам с DX-ами живьём за жизнь гутарил. :)
тут еще после сочинской олимпиады, за три месяца более 20тыщ связей, особо не хоцца, форум как альтернатива )))
дед я тут подумал если чтение потенциометра закладываю не по таймеру а в лупе и всё как часы работает, а через таймер твой глючит, может что-то в таймингах по чтению аналоговых портов дело?
Мне нада тексты найти, тогда я посмотрю. Проблема была в чём? Символы пропускаеть?
да, пропускает символы, но если опрос датчика скорости (потенциометр) переношу в loop, всё пучком, а если под это дело заводить еще один таймер - идут пропуски, вот и подумалось, что сама процедура чтения аналогового пина причастна
а схему даже не рисовал, только в планах на SI5351, у неё три выхода по частотам. один (144) только усилить, другие (430, 1200) через умножители, как бы всё описано неоднократно, частоты могут быть разные, несвязанные, я с ними даже не определялся, концепт так сказать
Добрый день. А есть вариант скетча для простого манипулятора с сухим контактом на выходе. Который манипулирует в CW по постоянному току передатчик радиомаяка?
Добрый день. А есть вариант скетча для простого манипулятора с сухим контактом на выходе. Который манипулирует в CW по постоянному току передатчик радиомаяка?
Да нет никакого. Только начал этой темой заниматься. Сделал манипулятор на 12F683, по готовой схеме и с готовым ПО. Но в нём на выходе тональный сигнал, а нужен сухой контакт (отдельная тема)... Выписал платку nano ардуино, для экспериментов. Вот и спрашиваю, вдруг есть уже сущ. варианты ПО, с вариантом по сухому контакту...
нууу, у мня идей больше неть. бери, значить, другой код маяка.
Не!!! "Русские не сдаются"!!!
Я тут явную связь выявил, стоит открыть-закрыть монитор порта и скетч начинает работать правильно...
уменьшил скорость порта до 9600, пытаю, пока работает как надо, теперь надо строку вводимую в мониторе порта сохранить в еепром и забирать оттуда, если было сохранение, попробую сам прикрутить
Нуууу... моё скудоумие дальше не простираеца
не прибедняйся, ты это написал )))
нет, всё таки пропускает, просто сейчас вылетают пробелы...
значит непонятно...
Тут без ЕвгенийП не обойтись, у него глаз намётан )))
думаю, не будуть корифеи в этом дедокоде разбираца. просто возьми другой маяк, рабочий.
думаю, не будуть корифеи в этом дедокоде разбираца. просто возьми другой маяк, рабочий.
так он рабочий, если регулировку скорости в loop переносишь...мы же хотели по фэншую
Я б забил. Не работает - фтопку. Наливать незашто.
Тебе нада нанять прафессионалоф, наерна. Как бы я не тщился, выше ровных извилин не прыгну. :-)
Тебе нада нанять прафессионалоф, наерна. Как бы я не тщился, выше ровных извилин не прыгну. :-)
это не то изделие, где требуется наёмная рабочая сила )))
максимум - налить...
...не могу понять... и это мотивирует )))
нууу, у мня идей больше неть. бери, значить, другой код маяка.
вот эту строчку проверь внимательно, нет ли ашыбок
006
#pragma GCC otimize ("-Os") //где х - 0, 1, 2, 3, fast, g, s - уровень оптимизации
ты и default потерял в 219 строчке.
конец перепишы вот так
01
case
msg_ReadSensor: {
02
uint8_t newdottime = 100 - 5*(analogRead(mySpeedPin)>>6);
// тут все твои чтения и вычисления
03
if
(newdottime != DOT_TIME) {
// меняем ТОЛЬКО если значения РЕАЛЬНО ИЗМЕНИЛИСЬ
04
DOT_TIME = newdottime;
05
DASH_TIME = 3 * DOT_TIME;
06
Serial
.print(
"Скорость = "
);
07
Serial
.println(newdottime);
08
}
09
break
;
10
}
11
default
:
12
Serial
.print(
"Unknown message code: 0x"
);
Serial
.println(msg.Message, HEX);
13
break
;
14
}
строчку кстати исправил -
#pragma GCC optimize ("-Os") //где х - 0, 1, 2, 3, fast, g, s - уровень оптимизации
Да, цикл loop выполняется за время от 18 миллисекунд при настройке сериала на скорость 9600 до 1 миллисекунды и менее при повышении скорости порта, попробую в таймере уменьшить время опроса датчика до к примеру 13 миллисекнд, по результатам отпишусь...
Всё таки хотелось бы выяснить в чем проблема, что на четвётом таймере библиотека или скетч заглючили, по сути у тебя получилась некая версия RTOS на таймерах и, это интересно
в моих подделках, до 9 таймеров вместе не глючили, хоть и пересекались. Или я просто не замечал....
в моих подделках, до 9 таймеров вместе не глючили, хоть и пересекались. Или я просто не замечал....
ну так то были поделки, а здесь только с виду простейшая задача
при опросе аналогового датчика каждые 13 миллисекунд еще хуже
короче, забей. Я- всё, забил. Хватить.
короче, забей. Я- всё, забил. Хватить.
не маяком единым...мне нравица сама идея библиотеки...
чуть протрезвею, и из этой темы все свои сапщения самоликвидирую.
Как правильно говорит моя жена, дети у меня красивые, а то что я делаю руками - никуда не годицца.
чуть протрезвею, и из этой темы все свои сапщения самоликвидирую.
Как правильно говорит моя жена, дети у меня красивые, а то что я делаю руками - никуда не годицца.
)))
кстати, посмотрел freeRTOS они приоретизацию задач делают, может и с твоими таймерами надо так?
Каоче, вот мои последние предположения. Таймер генерирует прерывания железно, они всегда приходят и всегда выполняются. Проблема может быть в том, что не успевает вовремя отрабатывать отклик на сапщения в очереди. Значить, надо попробовать сбрасывать флаги и делать всю нужную фигню не в очереди сообщений, не там где обрабатывается msg_TimerEnd, а перенести это в функции прерываний от таймера, в void tmr...();
Если и эта не поможет, тада я пас.
01
void
tmrTXTimer(
void
) {
// здесь кончился таймер передачи бита/паузы
02
03
TXBusy =
false
;
// можно передавать следующий
04
05
if
(TXState == enumTXState::Bit) {
// если передавали бит, передадим 1 паузу
06
TXOnOff(
false
);
// выключим ключ
07
TXCurrentMask >>= 1;
08
if
(TXCurrentMask>0) sendPause();
else
sendPause(3);
// а если знак кончился, то 3 паузы
09
}
10
TimerList.Stop(hTXTimer);
// остановим этот таймер
11
}
12
13
void
tmrSerialTimer(
void
) {
// строку приняли до конца
14
TXStopped =
false
;
// можно стартовать передаччик, есличо
15
TimerList.Stop(hSerialTimer);
// таймер больше не нужен
16
}
а ветку в switch в loop, где обрабатывается msg_TimerEnd удалить совсем
и у всех глобальных bool флагов поставить volatile. Ну и не только у них, а у всего, что меняется в функциях tmr...(). TXState там, TXCurrentMask и тыды.
Я свой стэнд уже разобрал, поэтому пробовать тебе самаму придёца.
и у всех глобальных bool флагов поставить volatile. Ну и не только у них, а у всего, что меняется в функциях tmr...(). TXState там, TXCurrentMask и тыды.
Я свой стэнд уже разобрал, поэтому пробовать тебе самаму придёца.
Хорошо! Попробую осмыслить, что ты сказал )))
А тут без 100 грамм никак...
Помнится как то со знакомым ехали на машине, ну и разговаривали ес-но. Когда знакомый вышел, мне водитель спрашивает, слушай, о чём вы всё это время говорили? Я нифига не понял...) При том что он тоже вроде как р/любитель был.)
Это просто вспомнилось, не применительно к данному случаю.)
А тут без 100 грамм никак...
Помнится как то со знакомым ехали на машине, ну и разговаривали ес-но. Когда знакомый вышел, мне водитель спрашивает, слушай, о чём вы всё это время говорили? Я нифига не понял...) При том что он тоже вроде как р/любитель был.)
Это просто вспомнилось, не применительно к данному случаю.)
100 грамм, тут этим наврядли обойтись
Дед, только не вздумай ничего удалять, с бочкой удалил, хорошо я частично скопировал... Ну не всем так дано мыслить, а из примеров собрать, кое- то получается.
Дед, только не вздумай ничего удалять, с бочкой удалил, хорошо я частично скопировал...
На бочку я ссылку давал, она на Амперке до сих пор валяеца.
да и туть https://github.com/DetSimen/Useful ее всегда можно скачать
Да, удалять нельзя, тем более если опрос датчика скорости делать неправильно, а именно в цикле loop всё работает как часы )))
в цикле loop всё работает как часы )))
это ты просто чота не заметил
в цикле loop всё работает как часы )))
это ты просто чота не заметил
у меня абсолютный слух, тем более морзянку принимаю в фоновом режиме, обязательно бы услышал
Вспоминаю скоростной приём. Там заказываешь 5 скоростей, результат по лучшей принятой. Так вот, на первых скоростях думаешь о чём попало, принимая в фоновом режиме, и только на последующих уже начинаешь напрягаться.)
Потестировал этот скетч (вроде как абсолютно идеологически неправильный)
во всех диапазонах скоростей работает как швейцарские часы )))
001
/*
002
Name: Morze.ino
003
Created: 21.04.2019 4:16:26
004
Author: DetSimen
005
*/
006
007
//#include <EEPROM.h>
008
#include "Arduino.h"
009
#include "MorzeTable.h"
010
#include "TimerList.h"
011
#include "Messages.h"
012
013
#define toneFreq (800) //частота звука (выбирайте между 600 - 1000Гц)
014
static
uint8_t TXPin = 13;
// пин передаччика
015
int
tonePin = A4;
// выход звука на радиостанцию
016
int
mySpeedPin = A0;
// потенциометр скорости
017
int
mySpeed;
// переменная для потенуиометра
018
019
extern
TTimerList TimerList;
// списой таймеров (до 10) паумолчанью
020
021
TMessageList MessageList(12);
// очереть на 12 сапщений
022
023
static
const
int
msg_ReadSerial = 0x100;
// сообщение "Читать Сериал"
024
static
const
int
msg_SendChar = 0x101;
// сообщение "Передать символ (букву)"
025
static
const
int
msg_SendNextBit = 0x102;
// сообщение "Передать следующий бит в букве"
026
static
const
int
msg_ReadSensors = 0x103;
// считать потенциометр скорости
027
028
static
/*const*/
uint32_t DOT_TIME = 35;
// основное время, длительность точки 75 мс, остальные производные
029
static
/*const*/
uint32_t DASH_TIME = 3 * DOT_TIME;
// длительность тире
030
031
static
const
uint16_t REPEAT_TIME = 5000;
// Задержка в мс между повторениями текста, по умолчанию 5 сек.
032
static
const
uint16_t SERIAL_TIMEOUT = 2000;
// если в течение 2000 мс не было данных с сериала, значит приняли всю строку
033
034
static
const
uint8_t MAX_STRING_LENGTH = 128;
// макс длина передаваемой строки
035
036
enum
class
enumTXState :
bool
{ Pause =
false
, Bit =
true
};
037
038
enumTXState TXState = enumTXState::Pause;
// что передаем в данный момент: или бит (точка/тире) или паузу
039
040
THandle hTXTimer = INVALID_HANDLE;
// таймер передаччика
041
THandle hSerialTimer = INVALID_HANDLE;
// таймер таймаута приема из Serial
042
THandle hRepeatTimer = INVALID_HANDLE;
// таймер повтора фразы
043
THandle hSensorRead = INVALID_HANDLE;
// таймер для опроса потенциометра скорости передачи
044
045
uint8_t TXCurrentMask = 0;
// маска текущего символа
046
uint8_t TXCurrentCode = 0;
// битовый код Морзе текущего символа
047
bool
TXBusy =
false
;
// идет передача бита или паузы
048
bool
TXStopped =
false
;
// передаччик остановлен нахрен. ничего не передаеца
049
050
051
String StringToTransmit;
// строка, которую будем слать
052
uint16_t TransmitCharIndex = 0;
// индекс текущего символа, в этой строке
053
054
055
void
TXOnOff(
const
bool
On) {
// передаччик вкл/выкл
056
digitalWrite(TXPin, On);
057
if
(On) {tone(tonePin, toneFreq);}
else
{ noTone(tonePin);}
058
}
059
060
void
tmrTXTimer(
void
) {
// здесь кончился таймер передачи бита/паузы
061
SendMessage(msg_TimerEnd, hTXTimer);
062
TimerList.Stop(hTXTimer);
// остановим этот таймер
063
}
064
065
void
tmrSerialTimer(
void
) {
// строку приняли до конца
066
SendMessage(msg_TimerEnd, hSerialTimer);
067
TimerList.Stop(hSerialTimer);
// таймер больше не нужен
068
}
069
070
void
tmrRepeat(
void
) {
// таймер повтора кончился, начинаем передавать сначала
071
TransmitCharIndex = 0;
072
TXStopped =
false
;
073
TimerList.Stop(hRepeatTimer);
074
}
075
076
void
sendBit(
const
bool
aBit) {
// передать один бит (точку == false или тире == true)
077
078
TXState = enumTXState::Bit;
// признак: передаем бит
079
080
TXOnOff(
true
);
// ключ на старт!
081
082
TXBusy =
true
;
// передаччик теперя занят
083
084
TimerList.setNewInterval(hTXTimer, aBit ? DASH_TIME : DOT_TIME);
// длительность таймера разная для точки и тире
085
TimerList.Reset(hTXTimer);
// перезапустим его сначала интервала
086
087
}
088
089
void
sendPause(
const
uint8_t kf = 1) {
// передаем паузу длиной в 1 точку по умолчанию
090
TXState = enumTXState::Pause;
091
092
TXBusy =
true
;
// передаччик занят
093
094
TimerList.setNewInterval(hTXTimer, kf*DOT_TIME);
// либо длительность паузы кратна точке в kf раз
095
TimerList.Reset(hTXTimer);
// перезапустим таймер сначала
096
}
097
098
void
tmrSensorRead(
void
){
099
SendMessage(msg_ReadSensor);
// пхаем в очередь сообщение на чтение потанцометра
100
}
101
102
;
void
setup
()
103
{
104
Serial
.begin(115200);
105
delay(1000);
// чтоб всё устаканилось к старту
106
pinMode(TXPin, OUTPUT);
107
TXOnOff(
false
);
// ключ выключен
108
109
// все таймеры создаюца по умолчанию остановленными
110
//
111
hTXTimer = TimerList.AddStopped(DOT_TIME, tmrTXTimer);
// таймер передаччика бит
112
hSerialTimer = TimerList.AddStopped(SERIAL_TIMEOUT, tmrSerialTimer);
// таймер таймаута чтения из Serial
113
hRepeatTimer = TimerList.AddStopped(REPEAT_TIME, tmrRepeat);
// таймер повтора передачи строки
114
// hSensorRead = TimerList.Add(tmrSensorRead, 100); // таймер опроса потенциометра скорости опрашиваем раз в 0.1 секунды (на этой строке валится)
115
116
StringToTransmit.reserve(MAX_STRING_LENGTH);
// хапнем сразу место под строку, чтоб не перераспределять потом
117
StringToTransmit =
"CQ DX UA6EM CQ DX UA6EM QSA? 73! 73! 73! K"
;
// строка для передачи по умолчанию
118
TransmitCharIndex = 0;
119
}
120
121
void
loop
()
122
{
123
if
(
Serial
.available()) {
// если в сериал чота припрыгало
124
SendMessage(msg_ReadSerial);
// пошлем команду прочесть сериал
125
TXStopped =
true
;
// передачу остановим
126
TransmitCharIndex = 0;
// и все индексы и маски обнулим,
127
TXCurrentCode = 0;
// так как после приема будем передавать уже новую строку
128
TXCurrentMask = 0;
129
}
130
// тут читаем потенциометр скорости
131
mySpeed = map(analogRead(mySpeedPin), 0,1023,0,15);
132
DOT_TIME = 100-mySpeed*5;
133
DASH_TIME = 3 * DOT_TIME;
134
135
if
((not TXBusy) and (not TXStopped)) {
// если передаччик не остановлен и не занят передачей бита
136
137
if
(TXCurrentMask > 0)
// если маска еще до конца не сдвинулась
138
{
139
SendMessage(msg_SendNextBit);
// передать следующий бит знака
140
}
141
else
142
{
143
SendMessage(msg_SendChar);
// знак кончился, начать передавать след. символ
144
}
145
}
146
147
148
if
( not MessageList.Available())
return
;
// если сапщений в очереди нет, выходим
149
150
TMessage msg = MessageList.GetMessage();
151
152
switch
(msg.Message)
153
{
154
155
156
case
msg_TimerEnd: {
157
if
(msg.LoParam == hSerialTimer) {
// кончился таймер приёма по сериал
158
TXStopped =
false
;
// можно стартовать передаччик, есличо
159
break
;
160
}
161
if
(msg.LoParam == hTXTimer) {
// кончился таймер передачи бита/паузы
162
TXBusy =
false
;
// можно передавать следующий
163
164
if
(TXState == enumTXState::Bit) {
// если передавали бит, передадим 1 паузу
165
TXOnOff(
false
);
// выключим ключ
166
TXCurrentMask >>= 1;
167
if
(TXCurrentMask>0) sendPause();
else
sendPause(3);
// а если знак кончился, то 3 паузы
168
}
169
170
break
;
171
}
172
173
break
;
174
}
175
176
case
msg_SendNextBit: {
// передаем след. бит (точка/тире)
177
sendBit(TXCurrentCode & TXCurrentMask);
178
break
;
179
}
180
181
case
msg_ReadSerial: {
// чтение из сериала
182
if
(!TimerList.isActive(hSerialTimer)) {
// если таймер таймаута остановлен
183
StringToTransmit =
""
;
// значить читаем новую строку
184
TransmitCharIndex = 0;
185
}
186
StringToTransmit +=
char
(
Serial
.read());
// берем символ из сериал и вклеиваем в строку
187
TimerList.Reset(hSerialTimer);
// перезапускаем таймер таймаута (помнишь? 2 секунды после ПОСЛЕДНЕГО символа)
188
break
;
189
}
190
191
case
msg_SendChar: {
// послать знак
192
if
(TransmitCharIndex < StringToTransmit.length()) {
// если строка еще не кончиилась
193
char
c = StringToTransmit[TransmitCharIndex++];
// взять символ
194
if
(c !=
' '
) {
// если не пробел, то
195
TXCurrentCode = getMorzeCode(c);
// по нему взять код Морзя см. MorzeTable.cpp
196
TXCurrentMask = getSymbolMask(getMorzeCode(c));
// и маску см. MorzeTable.cpp
197
}
198
else
sendPause(7);
// пробел между словами - передаем паузу в 7 точек
199
}
200
else
{
// если строка кончилась
201
TXStopped =
true
;
// остановим передачу
202
TransmitCharIndex = 0;
// вернем указатель на 0 символ строки
203
TimerList.Reset(hRepeatTimer);
// и запустим таймер для REPEAT
204
}
205
break
;
206
}
207
// тут читаем потенциометр скорости
208
209
case
msg_ReadSensor:{
210
uint8_t newdottime =100 - map(analogRead(mySpeedPin), 0,1023,0,15)*5;
// тут все твои чтения и вычисления
211
Serial
.print(
"Скорость = "
);
212
Serial
.print( newdottime);
213
if
(newdottime != DOT_TIME){
// меняем ТОЛЬКО если значения РЕАЛЬНО ИЗМЕНИЛИСЬ
214
DOT_TIME = newdottime;
215
DASH_TIME = 3*DOT_TIME;
216
}
217
break
;
218
}
219
Serial
.print(
"Unknown message code: 0x"
);
Serial
.println(msg.Message, HEX);
220
break
;
221
}
222
223
}
Dear Gentlemen, I'm sure you'll like this site https://morsecode.scphillips.com/translator.html
Dear Gentlemen, I'm sure you'll like this site https://morsecode.scphillips.com/translator.html
TKS & 88 )))
Значить, так. Найди у себя файл Messages.h. Унутре него найди функцию DeleteFirst. В этой функции удали 2 строчки в начале
uint8_t sreg = SREG;
cli();
и одну строчку в конце.
SREG = sreg;
и пропробуй так запустить. Мне кажеца тут прерывания от таймера пропадають.
Значить, так. Найди у себя файл Messages.h. Унутре него найди функцию DeleteFirst. В этой функции удали 2 строчки в начале
uint8_t sreg = SREG;
cli();
и одну строчку в конце.
SREG = sreg;
и пропробуй так запустить. Мне кажеца тут прерывания от таймера пропадають.
"яйца не подействовали"
тогда точно фпамойку.
тогда точно фпамойку.
что так сразу... три таймера отрабатывают штатно, спотыкается на 4-ом...
если бы кто-нить из Гуру посмотрел твой код, мне точно не по зубам )))
если бы кто-нить из Гуру посмотрел твой код, мне точно не по зубам )))
мне тоже.
мошт, я его скопипастил где...
Нет, для своего позывного нужно же иметь разрешение с соответствующей категорией и пр. А так получается что вместо тебя работает робот и возможна ситуация когда твоих экземпляров класса может быть несколько.) С одинаковыми позывными! Что как то странненько.)
кстати, изобрели новую моду в цифре, ft8 называется, приходишь значит вечерком, после срача на форуме, включаешь рацию в этой моде, идёшь ужинать, потом променад, потом спать, утром дивишься, сколько ТЫ dx радиосвязей провёл за ночь...одним словом прогресс убивает радиолюбительство...
Это ж как резиновая. Эх, ушла романтика.(
Это ж как резиновая. Эх, ушла романтика.(
точнее уходит...
кстати, изобрели новую моду в цифре, ft8 называется, приходишь значит вечерком, после срача на форуме, включаешь рацию в этой моде, идёшь ужинать, потом променад, потом спать, утром дивишься, сколько ТЫ dx радиосвязей провёл за ночь...одним словом прогресс убивает радиолюбительство...
лучше бы дубля посадил на форуме срачица и жене кивать, а сам с DX-ами живьём за жизнь гутарил. :)
кстати, изобрели новую моду в цифре, ft8 называется, приходишь значит вечерком, после срача на форуме, включаешь рацию в этой моде, идёшь ужинать, потом променад, потом спать, утром дивишься, сколько ТЫ dx радиосвязей провёл за ночь...одним словом прогресс убивает радиолюбительство...
лучше бы дубля посадил на форуме срачица и жене кивать, а сам с DX-ами живьём за жизнь гутарил. :)
тут еще после сочинской олимпиады, за три месяца более 20тыщ связей, особо не хоцца, форум как альтернатива )))
дед я тут подумал если чтение потенциометра закладываю не по таймеру а в лупе и всё как часы работает, а через таймер твой глючит, может что-то в таймингах по чтению аналоговых портов дело?
Мне нада тексты найти, тогда я посмотрю. Проблема была в чём? Символы пропускаеть?
Мне нада тексты найти, тогда я посмотрю. Проблема была в чём? Символы пропускаеть?
да, пропускает символы, но если опрос датчика скорости (потенциометр) переношу в loop, всё пучком, а если под это дело заводить еще один таймер - идут пропуски, вот и подумалось, что сама процедура чтения аналогового пина причастна
А схемку можно?
А схемку можно?
а схему даже не рисовал, только в планах на SI5351, у неё три выхода по частотам. один (144) только усилить, другие (430, 1200) через умножители, как бы всё описано неоднократно, частоты могут быть разные, несвязанные, я с ними даже не определялся, концепт так сказать
Добрый день. А есть вариант скетча для простого манипулятора с сухим контактом на выходе. Который манипулирует в CW по постоянному току передатчик радиомаяка?
Добрый день. А есть вариант скетча для простого манипулятора с сухим контактом на выходе. Который манипулирует в CW по постоянному току передатчик радиомаяка?
да без проблем, какой скетч правим?
Да нет никакого. Только начал этой темой заниматься. Сделал манипулятор на 12F683, по готовой схеме и с готовым ПО. Но в нём на выходе тональный сигнал, а нужен сухой контакт (отдельная тема)... Выписал платку nano ардуино, для экспериментов. Вот и спрашиваю, вдруг есть уже сущ. варианты ПО, с вариантом по сухому контакту...
да не вопрос, добавишь транзистор и герконовое реле на 5 вольт и будет тебе сухой контакт
Тоже хорошая идея. Буду пробовать... Надеюсь, что "вибрировать" геркон не будет с частотой 600 Гц...