Ви не увійшли.
Сторінки 1
Частота 32 кГц при тактовій 16 МГц доступна точно: це рівно 500 тіків. Наступна досяжна нижча частота буде при дільнику 501: [16e3/501] = 31936 Гц. Якщо округлювати задану користувачем частоту до найближчої досяжної, то відносна похибка виходить ≈ 0.1%. У китайських модулів заявлено 2%
Якщо така точність задовільняє, то можна обійтись FastPWM режимом 16-бітного таймера.
Дякую, всё чітко і доступно. Я через FastPWM і вирішив питання, похибка дійсно мінімальна як показав ,,ослик,,
Такі показники мене ідеально влаштовують.
А ще не підкажете, потрібно буде двух канальний генератор з можливість здвиг фаз, скетч знайшов займуся. А питання, чи можливо одночасно буде реалізувати також шім по двух чи одному каналу?
Honey пише:Частоту і коефіцієнт заповнення ШІМ на AVR не вийде встановлювати абсолютно довільно
Для невиликих частот можна генерувати ШІМ програмно з раціональним дільником, в певних межах точності.
Питання в тому, чи хоче ТС розібратись сам, чи чекає на готове рішення.
Ні в якому разі я не хотів, щоб за мене писали, я хочу сам розібратися. Так, після перечитаної інформації є результат, як раз і невеликі частоти і точність можлива з відхиленням, звісно, що такі питання для точних значень контролери не вирішують. Допишу в код екран і готово. Дякую
Доброго дня шановні.
Багато хто в курсі про китайський модуль pwm-generator-150khz
Дуже потрібна допомога з кодом для atmega 328 (аналог роботи цього модуля)щоб не використовувати модуль, і навіть не потрібна максимальна частота вистачить 32кГц, але потрібно можливість регулювання частоти і шім.
Буду вдячний любій інформації. Дякую
Сигнализация gsm на модуле sim800L,
Извините но очень нужна эта вещь. Изучать основы программирования стал не давно, так как вынудили обстоятельства.
Посмотрите пожалуйста код, компилируется но отказывается работать. Модуль регистрируется в сети.
Подскажите пожалуйста может где то в коде? просторы интернета прошерстил пока без результатов, сильно не плюйтесь на меня.
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
#include "call.h"
SMSGSM sms;
CallGSM call;
//=================Пины 2 и 3 для Подключения GSM модуля
int sensor1=0;
int flag1=0;
boolean started=false;
char smsbuffer[160];
char n[20];
String n1 = "+380XXXXXXXXX";
String input_string = "";
String smsContent = "";
char sirena[] = "Sirena vkluchena!";
char PowerOFF[] = "Snyato s ohrani";
char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
char smsW[] ="Postanovka na ohranu!";
char pos;
char sendsms[160];
void setup() {
pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
pinMode(7, OUTPUT);
Serial.begin(9600);
pinMode(4, INPUT); // датчик движения
// digitalWrite(4, HIGH);
pinMode(5, INPUT); // еще какой-нибудь датчик
// digitalWrite(5, HIGH);
if (gsm.begin(9600)) {
Serial.println("\nstatus=READY");
started=true;
} else Serial.println("\nstatus=IDLE");
}
void loop() {
//===========================Первое срабатывание датчика движения
if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
n1.toCharArray(n,20);
sms.SendSMS(n, smsDv); // Посылаем СМС о том, что есть движение
sms.DeleteSMS(1);memset(n,0,20);
char smsbuffer[160]="";
flag1++;
delay(5000); // Ждем 5 секунд
}
//===========================Повторное срабатывание датчика движения
if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
n1.toCharArray(n,20);
sms.SendSMS(n, sirena); // Посылаем СМС о том, что включена сирена
sms.DeleteSMS(1);memset(n,0,20);
char smsbuffer[160]="";
flag1++;
}
if (flag1>=2){
tone(10, 2780, 200); // Сирена
}
pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
if (pos) { // Если непрочитанные СМС есть, то...
getsms(); // получаем непрочитанную СМС
if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
sms.DeleteSMS(pos); // удаляем СМС из симки
}
}
void getsms()
{
sms.GetSMS(1,n,20,smsbuffer,160);
input_string =String(smsbuffer);
}
Скетч использует 12036 байт (37%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 1099 байт (53%) динамической памяти, оставляя 949 байт для локальных переменных. Максимум: 2048 байт.
Инфа в мониторе порта
00:21:28.345 -> RIC: ⸮⸮⸮
ATT: OK
00:21:28.956 -> RIC: ATT: OK
RIC: ⸮⸮⸮
00:21:28.990 -> ERROR
00:21:28.990 ->
115200
ATT: OK
00:21:39.169 -> RIC:
ATT: OK
00:21:39.781 -> RIC: ATT: OK
RIC:
00:21:39.781 -> ERROR
00:21:39.781 ->
ERROR: SIM900 doesn't answer. Check power and serial pins in GSM.cpp
00:21:58.068 -> status=IDLE
Сторінки 1