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

Вопросы от начинающих по МК


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

наверное придется для каждого сигнала свой источник делать.. хотелось бы конечно что бы аппарат был целостным//

цифровым методом наверное не добиться острой верхушки..

а как это все делается в фирменных генераторах?

я тут еще покопался.. кажется в ДДС АД9954 можно "загрузить" свою форму сигнала.. не могли бы подсказать так ли это?

http://www.analog.co...eets/AD9954.pdf

наверное нет, ОЗУ что то там на счет частоты..

вот еще.. если все таки на ПЛИС организовать выдачу (по кругу с изменением интервала между значениями) минимально допустимого количества выборок для каждого сигнала (кстати подскажите/помогите определиться для каждого из четырех сигналов до 10МГц).

как то так..

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

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

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

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Эээ... тактировать ЦАП? Вы вообще представляете принцип прямого цифрового синтеза? Вообще такая штука прокатит только с синусом, потому что после некоторой частоты ЦАП будет проскакивать некоторые отсчеты - синус-то можно восстановить а вот произвольный сигнал в общем случае нет. Вот у меня есть фирменный генератор, тоже используется принцип прямого цифрового синтеза, синус он может выдать до 25Мгц, остальные произвольные сигналы до 5Мгц а пилу до 1Мгц, пользовательский сигнал и несколько встроенных произвольной формы семплируется на частоте до 125М семплов/сек(частота семплирования формируется плавно, думаю что тут применен такой же способ).

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

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

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

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

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

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

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

Здравствуйте, я начинающий программировать AVR хотел сделать часы с использованием DS1307 но вот не задача появилась проблема с фукцией rtc_ а точнее когда программа обращается к rtc_init или любой другой rtc_ то индикаторы не светятся вообще (это в железе) как только закоментируеш все rtc_ индикаторы работают а в протеусе все работает нормально - подскажите в чем может быть проблема

#include <mega8.h>
#include <delay.h>
#include <i2c.h>
#include <ds1307.h>
#asm
.equ __i2c_port=0x15 ;PORTC
.equ __sda_bit=4
.equ __scl_bit=5
#endasm
#define btn_menu PINC.0
#define set_mp PINC.1
#define set_set PINC.2
#define set_hp PINC.3
unsigned char sek,min,hour;
unsigned char insek=0,inmin=15,inhour=0;
flash unsigned char cifra[] = {	 
   0b11000000,				   //0
   0b11111001,				   //1
   0b10100100,				   //2
   0b10110000,				   //3
   0b10011001,				   //4
   0b10010010,				   //5
   0b10000010,				   //6
   0b11111000,				   //7
   0b10000000,				   //8
   0b10010000,				   //9
   ~0b01110110				   //H
};
void ind1(unsigned char s){
unsigned char sd=0;
  while(s>=10){
  s-=10;
  sd++;
  }
  PORTB.1=1;
  PORTD=cifra[sd];
  delay_ms(5);
  PORTB.1=0;
  PORTB.0=1;
  PORTD=cifra[s];
  delay_ms(5);
  PORTB.0=0;
}
void ind2(unsigned char m){
unsigned char md=0;
  while(m>=10){
  m-=10;
  md++;
  }
  PORTB.3=1;
  PORTD=cifra[md];
  delay_ms(4);
  PORTB.3=0;
  PORTB.2=1;
  PORTD=cifra[m];
  delay_ms(4);
  PORTB.2=0;
}
void ind3(unsigned char h){
unsigned char hd=0;
  while(h>=10){
  h-=10;
  hd++;
  }
  PORTB.5=1;
  PORTD=cifra[hd];
  delay_ms(4);
  PORTB.5=0;
  PORTB.4=1;
  PORTD=cifra[h];
  delay_ms(4);
  PORTB.4=0;
}
void menu(unsigned char a){
while(a){
   if (set_hp==0) {
   delay_ms(250);
   hour++;
   };
if (hour>=24) {hour=0;};
ind3(hour);
   if (set_mp==0) {
   delay_ms(250);
   min++;
 };
if (min>=60) {min=0;};
ind2(min);
ind1(sek);
   if (set_set==0) {
   rtc_set_time(hour,min,sek);
   a=0;
   };
   if (btn_menu==0) {
   delay_ms(250);
   a=0;
};
}

}
void main(void)
{
PORTB=0b00000000;
DDRB=0b00111111;
PORTC=0b00001111;
DDRC=0b00000000;
PORTD=0b00000000;
DDRD=0b11111111;
i2c_init();
rtc_init(0,0,0);
rtc_set_time(inhour,inmin,insek);
while (1)
  {
  rtc_get_time(&hour,&min,&sek);
    ind3(hour);
    ind2(min);
    ind1(sek);
  if (btn_menu==0) {
  delay_ms(250);
  menu(1);
};

  }
}

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

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

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

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

Учение - изучение правил. Опыт - изучение исключений.

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

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

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

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

ждут ответа от подчиненного устройства и если оно не отвечает - функция просто "висит" причем еще и запретив прерывания.

я так понимаю что вы говорите про то что просто DS1307 не отвечает на запросы МК?

А по выложенному коду все правильно не подскажете

кстати написано все это в CVAVR.

Так пошагово отладь, зачем отладчики вообще существуют?

Кроме Протеуса не каким не пользовался - а в нем все идет хорошо

А какой отладчик посоветуете?

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

Смотри какой отладчик поддерживает CVAVR, похоже что тебе нужен именно аппаратный отладчик. Или пристально изучать примененную библиотеку.

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

Увы, телепатическими способностями не обладаю.

Чем искать причину почему оно не работает, попробуй найти ХОТЯБЫ ОДНУ причину почему оно должно работать - это в тысячи раз проще!

И без цифрового анализатора/осциллографа или хотябы аппаратного отладчика искать причину неработоспособности схемы крайне трудно, если нет нужных приборов - дело гиблое, можно только долго и нудно перебирать всевозможные варианты отказа. Попробуй в протеусе отключить DS1307 если симптомы будут аналогичными, значит считай причину нашел.

Учение - изучение правил. Опыт - изучение исключений.

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

Попробуй в протеусе отключить DS1307 если симптомы будут аналогичными, значит считай причину нашел.

в протеусе кнопки работают и индикатор реагирует

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

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

Это только ооочень малая часть кода программы. А код функций кто выкладывать будет? Активируй UART, шли туда метки по которым ты будешь проверять как ведет себя программа. Для начала просто попробуй считать время и передать его по UART и посмотри что будет в терминале. Например, вначале выводишь "+" после выполнения функции "-" и время побайтно. Если выведется только "+" и все - значит функция подвисла. Точно так же расставь ловушек по коду, и в терминале потом можно будет разобрать реальное поведение программы. Без отладки в любом виде разгадывание причины неработы программы это ТЕЛЕПАТИЯ. Потом, проверить сигналы SCL-SDA на самой микросхеме, может их там нет вовсе а ты чего-то ожидаешь от микросхемы. Это надо делать только осциллографом или цифровым анализатором. И вобще, это первое что надо сделать.

Я уже говорил, но повторюсь - ищи не причину отказа, а проверяй условия почему оно должно работать.

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

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

Ох насмешил.... и что твой ОУ усиливать будет?

Шунт надо расположить так чтобы ОБЩИЙ провод был на ВЫХОДЕ схемы, ведь тебе измерять напряжение надо тоже на ВЫХОДЕ а не напряжение до шунта. Ну и собственно у шунта останется только один вывод куда можно подключится. Забей такую схему в симулятор, дай нагрузку и посмотри какое оно там будет. Дальше думай головой что делать...

Учение - изучение правил. Опыт - изучение исключений.

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

Маленький вопросик, нужен ли программатор для STM32F100C6T6 или же прошивку можно записать напрямую через USB компьютера как на простой накопитель?

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

Уважаемые форумчане, при разработке программы, для управления микшерским пультом столкнулся с не понятной вещью. Отладчик чётко выполняет программу, ни каких ошибок. Заливаю прошивку на эмулятор, программа не работает как надо. Просьба помочь, найти ошибку. Такое ощущение что выполняется только часть кода.

.include "m8def.inc"


.def temp = r16
.def zad = r17
.cseg
.org 0

ldi temp, 0x04
out SPH, temp
ldi temp, 0x5f
out SPL, temp

ldi temp, 0x00
out DDRD, temp
ldi temp, 0xff
out PORTD, temp
out DDRB, temp

ldi temp, 0x07
out PORTB, temp

ldi temp, 0x80
out ACSR, temp

main: in temp, PIND
sbrc temp, 0
rjmp knp1
sbrc temp, 1
rjmp knp2
sbrc temp, 2
rjmp knp3
rjmp main

knp1: rcall pauz
in temp, PINB
sbrc temp, 0
rjmp m1
sbi PORTB, 0
cbi PORTB, 3
rjmp m2
m1: cbi PORTB, 0
sbi PORTB, 3
m2: in temp, PIND
sbrc temp, 0
rjmp m2
rcall pauz
rjmp main

knp2: rcall pauz
in temp, PINB
sbrc temp, 1
rjmp m3
sbi PORTB, 1
cbi PORTB, 4
rjmp m4
m3: cbi PORTB, 1
sbi PORTB, 4
m4: in temp, PIND
sbrc temp, 1
rjmp m4
rcall pauz
rjmp main

knp3: rcall pauz
in temp, PINB
sbrc temp, 2
rjmp m5
sbi PORTB, 2
cbi PORTB, 5
rjmp m6
m5: cbi PORTB, 2
sbi PORTB, 5
m6: in temp, PIND
sbrc temp, 2
rjmp m6
rcall pauz
rjmp main

pauz: ldi zad, 200

pz1: dec zad
brne pz1
ret

post-89742-0-22951300-1394648217_thumb.jpg

Изменено пользователем bulser

Юность и рассвет жизни — суета.

Тянусь к Свету...

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

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

например такие конструкции как cbi PORTB, 2 sbi PORTB, 5 можно было бы сделать алиасами на что-то вроде

#define led13_off cbi PORTB, 2

#define led23_on sbi PORTB, 5

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

эти вот штуки

ldi temp, 0x00

out DDRD, temp

завернуть в макрос

.macro set_io ; для загрузки константы в порт

LDI ACCUM, @1

.If @0<=0x3F

OUT @0, temp

.else

STS @0, temp

.endif

.endmacro

и использовать его в коде так: set_io DDRD, 0x00

Изменено пользователем Alexeyslav

Учение - изучение правил. Опыт - изучение исключений.

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

Я только начинающий, и это моя первая реальная программа. С макросами работать пока не умею. Знаю что надо сразу приучаться писать коментарии, но для такой небольшой программы было просто лень. По поводу проблемы с которой я обращался: дебагер при отладке, не устанавливал PIND в 1, при включении подтягивающих резисторов. Соответственно в отладчике программа работала, а в эмуляторе нет.

Решение: при проверке порта D, команды "sbrc temp" заменил на "sbrs temp@

P.S. Alexeyslav, спасибо за совет.

Изменено пользователем bulser

Юность и рассвет жизни — суета.

Тянусь к Свету...

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

Вот кстати набросал прогу мультивибратора с включением и отключением от одной кнопки, правда на выключение кнопку нужно зажать на 2секунды. Кто что скажет какие ошибки?

#define F_CPU 1000000UL // Задание частоты кварца от которого зависят задержки
#include <avr/io.h> // Включение библиотеки для МК
#include <util/delay.h> // Включение библиотеки задержек

void main(void){
DDRC = 0xFF; // Настройка портов на вывод
DDRD = 0xFF;
DDRB = 0x0; // Настройка портов на ввод
mesto_2: while(1){	    // Место 2 - метка безусловного перехода
if (bit_is_set (PINB,PB1)>0) // Условие выполнения если пин В1 больше 0 то есть 1 значить выполнять
{
_delay_ms(15); // Задержка от дребезга контактов
while(2){  // бесконечный цикл
PORTD = 0x0; // Задание состояний выводов портов к которым подключены светодиоды
PORTC =0x2;
_delay_ms(2000);
if (bit_is_set (PINB,PB1)>0)
{ _delay_ms(15);
goto mesto_1; } // Безусловный переход к месту с меткой 1
PORTC = 0x0;
PORTD = 0x2;
if (bit_is_set (PINB,PB1)>0)
{_delay_ms(15);
goto mesto_1; }
_delay_ms(2000);
if (bit_is_set (PINB,PB1)>0)
{ _delay_ms(15);
goto mesto_1; }
};
mesto_1:
while(2){
PORTD = 0x0;
PORTC =0x0;
_delay_ms(600);
goto mesto_2; // Безусловный переход к месту с меткой 2
};
}
}
}

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

не знаю за ошибки, а вот с метками читабельность никакая. избавляйтесь от меток, используйте функции. ну и проверка нажатия кнопки через "> 0" тоже не совсем правильно,

if (bit_is_set (PINB,PB1)) { //код}

вполне достаточно

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

...нужен ли программатор для STM32F100C6T6 или же прошивку можно записать напрямую через USB компьютера как на простой накопитель?

http://tablock.org.ua/post/76/Универсальный+программатор+Versaloon.+STM32%2C+STM8%2C+AVR%2C+MSP430+и+мого+другое.+Схема+и+плата+в+Eagle

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

__alexander

не знаю за ошибки, а вот с метками читабельность никакая. избавляйтесь от меток, используйте функции

А что за функции и как использовать? А то я только разбираюсь пока что да как

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

Собрал вот себе такие часики,

http://startcd.narod.ru/clock/clock.html

но написанно при прошивке

Cбросить основные переменные в программе - SETUP -> СБРОС НАС. -> SET.

Как это сделать, и когда? Прошивать буду через программатор Громова, через программу UniProf

Просто буду прошивать МК первый раз

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

А тут вот написанно;

http://www.radiokot....igital/home/09/

прошить EEPROM, или сбросить основные переменные в программе таким образом - SETUP -> DEFAULT -> SET.

Проблема в том что у меня индикатор с ОК и мне подходит прошивка по этой ссылке

http://startcd.narod...lock/clock.html

так как здесь есть и для ОК и для ОА но нету отдельного файла EEPROM, значить мне нужно просто прошить а потом на самих часах в настройках сбросить?

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

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

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

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

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

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

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

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

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

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

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

  • Сообщения

    • @Romanchek82 в данной ситуации скорее "подложена под ножку стола у дядюшки Ляо")
    • КИТ на Озоне, 2 канала за 500р. РФ. Я сам с конструктора начинал, там и опыт паять получите.  не надо с платы, схемы начинать, блок питания сначала соберёте, КИТ распаяйте, в корпус всё оформите. Одно до ума изделие доведите. Там и поймёте, куда дальше двигаться. А по схеме, ЕЩЁ раз, они есть на любое ОУ в даташит. По "ушникам", пятиножки в бОльшем случае - достаточно (по ссылке) прежде, чем Сухову, Нечаеву,.. в ж. "Радио" писать, готовился, после школы в библиотеку, вечерами за паяльник... пока обратная связь приходила (письма), уже многое исправил, да, не методом тыка, а через понимание физических процессов.  Быстро это только ЕГЭ, описательный, творческий процесс отсутвует (мозгами шевелить, статьи анализировать, углубляться и видеть перспективу).  Паять совет не нужен, ручками, ручками, готовый кит и в корпус.
    • Привет!  Мне не известно, есть ли другие варианты формата прошивки. Почитайте ветку , может кто то и выкладывал.
    • Совершенно точно. И об этом и сам разработчик (ца) подтвердила о силовой плате. Вот файл pdf от разработчика похоже, где то попалось... Сопротивление , импеданс входа операционника надо учитывать как то. По взодам стоят резисторы по 20к (делители), как то многовато для ОУ на биполярниках. В буржуйских схемах и в даташитах начиная с легендарного ОУ 741 стоят не более 10к по входу, пробовал вместо 20к ставить 10к, но это отдельная тема.... И при правильном проектировании замена ОУ на аналогичный не должно влиять на параметры (настройки) схемы. В наем случаее решил заменить ОУ LM324 (бытовку) на LM224 (промышленную) ... Поставил панельку и при смене разных партий 224 и 124 (милитари) настройка тока уходила в ощутимо по индикатору. Ставил LM-ки от томсон и семикондуктор. Семикондуктор резко уходили насторойки, а томсон более близко к заводской настойке. С завода стояла 324 от томсон. Как и что не буду расписывать по этим двум фирмам. Подобрал балее , менее приемлимые 2 корпуса 224, один из частотника, второй из автомобильного реле. Крутить подстроечники на силовой плате не стал особо, т.к. это сложный случай и методики настойки нет и методом тыка не было времени и желания упражнятся. хотя с завода настройка не радует и желательно откорректировать.... термистор поставил  MF52 на 100к и прилепил на термопасту к радиатору VD1. Его тоже заменил на 60А - 100В и падению напряджния по мультиметру в 2 раза меньше, чем заводской. Индуктивность L2 проводом 1,9 мм 19 витков, замер показал 41,5 мкГн (пинцет Smart Tweezers Канада) заменена на на такое же салатовое кольцо (есть в загажнике) намотанно линцедратом 43х0,22 мм. Поместились все 19 витков как задская намотка один в один. Нагрузочный резистор R68 390 Ом заменил на 4 запаралеленных 1,2к 1 Вт. Конденсатор С20 1000х25 заменил на твёрдотельный 1000х50 и вынес от радиаторов. С9 и С10 заменил на твёрдотельные 47х50.  С5 заменил на два в параллель 150х450 и зашунтировал плёночной ёмкостью 2,5х630, чтобы облегчить жизнь электролитам....Поставил синфазный Др на синем колечке по 20 витков МГТФ 0,2 , индуктивность 5 мГн. Добавил варистор 20Т471 (470 В). Добавил сетевой выключательи дополнительную колодку с предохранителем 5А, штатный заменил на твёрдотельный 3,15А. Нагружал на 20А при 12 В - в течении часа всё работает, чуть тёплый воздух из  корпуса. ничего не кипятится не греется критично. ЗУ Вымпел-30.pdf Для справки, вроде как от разработчика(цы), утащено - Вымпел 30 ....
    • 01 — копия.lay6 amp_tda7377.pdf Назовём это "тестовый вариант по турецким мотивам". По идее должно норм ? 1к1 всё равно только рейсфедером нарисуешь.  Решено взять оттуда только УМ, фильтр wm019, питание внешний трансформатор. 
    • Новички собирают схемы из батарейки и лампочки! А не предусилители..
  • Похожий контент

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