Перейти до змісту

Рекомендовані повідомлення

nDeoEQ_NPeQ.jpg

Що ж, поставленну задачу на сьогодні виконав, можна йти спати.

Цікаво а як ти підключиш 2 дисплеї ??? І що на рахунок бібліотеки???

Є деякі ідеї...

Нарахунок доцільності бібліотеки я щось сумніваюсь.

  • +1 1
Посилання на коментар
Поділитись на інші сайти

  • Відповідей 550
  • Створено
  • Остання відповідь

Топ авторів теми

  • 2 тижня потому...

Ось мій відеотуторіал по завантажені загрузчика Arduino в ATmega8:

Ось силка на конструктор Bootloader`а для Arduino:

http://homes-smart.r.../avr-zagruzchik

Ось карта пінів:

p7vJiwJnFN0.jpg

Постарався повністю розкрити це питання.

  • +1 1
Посилання на коментар
Поділитись на інші сайти

  • 2 тижня потому...

Любі друзі, допоможіть новачку розібратись із генерацією частоти 33кілогерца на Atmega8,

суть така: є інфрачервоний діод і інфрачервоний прийомнік (33кілогерца) тобто датчик такий собі, промені відбились лєнта світиться,

значить читав досить багато про pwm, ось що зміг осилити на Atmelstudio 6.2


#include <avr/io.h>//библиотека ввода/вывода
#define F_CPU 8000000

//Програма задержки
void pause (unsigned int a)
{
unsigned int i;
for (i=a;i>0;i--);
}
//Програма инициализации ШИМ
void init_pwm (void)
{
TCCR1A=(1<<COM1A1)|(1<<WGM10); //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
TCCR1B=(1<<CS10); //Делитель= /1
OCR1A=0x00; //Начальная яркость нулевая
}
//Основная програма
int main(void)
{
DDRC = 0xFF; // 0 порт D на вихід
PORTC = 0xFF; //0 in port
DDRD = 0x00; // 1 порт B на вхід
PORTD = 0xFF; //res on

unsigned char i;

DDRB=0x02; //Инициализация PB1 (OC1A) как выход
init_pwm();

while (1)
{


//for (i=0;i<255;i++) //Плавно понижаем яркость
//{OCR1A--; pause(1000);}
OCR1A = 0x64;
pause(1000);



if (PIND & (1<<PD0)) //якшо =1
{
PORTC = 0xFF;
}
else
{
PORTC = 0x00;
}



}

return 1;
}

не пинайте сильно, я раніше програмував але як то кажуть все буває вперше :_08:

зараз ото дійшов висновку шо на даній атмезі невдасться зробити 33кілогерци бо як не грайся з дільниками і частотою виходить 31 злихом

буду вдячний за хороши пинок в пяту точку

Посилання на коментар
Поділитись на інші сайти

Voronin10, не спец по Arduino але якщо потрібна певна частота потрібно зав’язуватись на апаратне переривання таймера.

Посилання на коментар
Поділитись на інші сайти

Voronin10, не спец по Arduino але якщо потрібна певна частота потрібно зав’язуватись на апаратне переривання таймера.

вже безліч статей перечитав, а от конкретно про частоту не знайшов, або погано шукав

точніше толком неможу зрозуміти як правильно налаштувати (логіка поки що мене покинула)

поясніть на пальцях як ту частоту правильно загенерити

моливо виставити таймер на 8МГц/64=125КГц і просто скважністю і частотою заповнення підігнати значення 33КГц?

Змінено користувачем Voronin10
Посилання на коментар
Поділитись на інші сайти

Voronin10, коли б мені була потрібна певна частота я б переналаштував вектор переривання таймера на свою підпрограму, робив, що потрібно потім передавав керування за старою адресою. Дивитись потрібно по документації - на якій частоті працює таймер? 8 МГц? потрібно 33 кГц? 8000/33=242.424242 тик таймера потрібно опрацювати. Зрозуміло, що зреагувати зможемо на 242 тик, далі я б поставив затримку маленьку, далі робите, що потрібно.

Посилання на коментар
Поділитись на інші сайти

Voronin10, коли б мені була потрібна певна частота я б переналаштував вектор переривання таймера на свою підпрограму, робив, що потрібно потім передавав керування за старою адресою. Дивитись потрібно по документації - на якій частоті працює таймер? 8 МГц? потрібно 33 кГц? 8000/33=242.424242 тик таймера потрібно опрацювати. Зрозуміло, що зреагувати зможемо на 242 тик, далі я б поставив затримку маленьку, далі робите, що потрібно.

таки трошки розібрався, ось в процесі написання своїх граблів найшов ідентичне правильно написане

розібрався як вирахувати частоту і от трабла опять, все звичайно добре генерація на порту йде в 100%, а треба так званий меандр(50%)

як це зробити, делай пуста трата часу, як знати скільки тримати порт ввімкнкним?


include <avr/io.h>
#include <avr/interrupt.h>  

ISR( TIMER1_OVF_vect )
{
TCNT1 = 65294 ; //выставляем начальное значение TCNT1

if( PINB & ( 1 << PB0 ) )
{ PORTB &= ~( 1 << PB0 ); }
else { PORTB |= ( 1 << PB0 ); }
}  


int main()
{
DDRB = ( 1 << PB0 ); // настраиваем PB0 на выход
TCCR1B = (1<<CS12)|(0<<CS11)|(1<<CS10); // настраиваем делитель
TIMSK |= (1<<TOIE1); // разрешаем прерывание по переполнению таймера

TCNT1 = 65294 ; // выставляем начальное значение TCNT1 33kHz
sei(); // выставляем бит общего разрешения прерываний
while(1); // вечный цикл
return 0;
}

Змінено користувачем Voronin10
Посилання на коментар
Поділитись на інші сайти

розібрався як вищитати частоту і от трабла опять все звичайно добре генерація на порту йде в 100%, а треба так званий меандр(50%)

Не зрозумів. Іншими словами будь ласка.
Посилання на коментар
Поділитись на інші сайти

розібрався як вищитати частоту і от трабла опять все звичайно добре генерація на порту йде в 100%, а треба так званий меандр(50%)

Не зрозумів. Іншими словами будь ласка.

для нормальної роботи прийомніка треба так званий шим сигнал 50% наа частоті 33кГц, зараз на порті бескінечна генерація 100%,

от і питання як зробити ту затримку і як її вирахувати

чи я щось наплутав?

Посилання на коментар
Поділитись на інші сайти

те що я роблю на атмезі ось

http://www.getchip.net/posts/094-datchik-priblizheniya-na-ik-luchakh-attiny13/

про дитчик, там для нормальної роботи має бутти скважність 50%

http://parts.roboclub.ru/index.shtml?ik

про пачки сигналів я мовчу поки буду думати над скважнастю

Змінено користувачем Voronin10
Посилання на коментар
Поділитись на інші сайти

машина станів в допомогу

якшо таймер долічив до певного значення - порт переводим в потрібний логічний рівень.

обнуляєм таймер. лічим знову. переводим порт в інверсію.

і так по кругу

for(; ; )

{

}

Змінено користувачем amadey777
Посилання на коментар
Поділитись на інші сайти

машина станів в допомогу

якшо таймер долічив до певного значення - порт переводим в потрібний логічний рівень.

обнуляєм таймер. лічим знову. переводим порт в інверсію.

і так по кругу

for(; ; )

{

}

накінець мисля сформувалась :)

можна ж таймер на половині відрізку моніторити, все складне - просто

Посилання на коментар
Поділитись на інші сайти

блін я просто якись містер невезучість

все написав прогнав пошагово гляну в протеусі все працює

знайшов на роботі свої атмеги і получив тупий непрацюючий камішок який навіть непаше під програмою(інший проект під юсб паше)

куди копати?

Посилання на коментар
Поділитись на інші сайти

Ще один невеличкий проект на Attiny13:

Детальніше:

http://habrahabr.ru/post/241728/

Змінено користувачем HWman
  • +1 1
Посилання на коментар
Поділитись на інші сайти

Карма не дозволяє. З такими темпами ще не скоро зможу дати комусь інвайт.

Мені дали інвайт за одну статтю, причому у той же день що і опублікував, думаю це найшвидший спосіб отримати його.

Посилання на коментар
Поділитись на інші сайти

  • 1 місяць потому...

Може трохи відхилюсь від теми. Є датчик (АЦП, 24 біт) типу ad7793, працює по SPI шині. В інтернеті є куча схем роботи SPI з МК, прошивок звичайно що не надають. В когось був досвід роботи по SPI ?

ad997x це не датчик, це АЦП. Не "просто АЦП", а дуже хороший АЦП. "Заточений" пiд PT100/1000 (2 високостабiльнi джерела струму для збудження PT i вбудований дуже хороший пiдсилювач). ad997x годиться i на термопари.

З SPI проблем немае, з ad779x е нюанси iнiцiалiзацii (описано 1000 разiв в iнетi).

А що у Вас не так?

На Бордi мало досвiдчених, такi запитання треба задавати на сайтах, що спецiалiзуються на електронiцi.

Посилання на коментар
Поділитись на інші сайти

Може кому пригодиться ідея для зарядки с балансиром:

xjETXjzJbpU.jpg

Делаті тут http://arduino.ru/fo...1#comment-90785

Посилання на коментар
Поділитись на інші сайти

Для публікації повідомлень створіть обліковий запис або авторизуйтесь

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйте новий обліковий запис у нашій спільноті. Це дуже просто!

Реєстрація нового користувача

Увійти

Вже є акаунт? Увійти до системи.

Увійти
×
×
  • Створити...