Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 20132
Зарегистрирован: Чт сен 01, 2011 12:53:27
Откуда: ТьмуТаракания. Почетный житель подмостовья

Сообщение oleg63m »

насколько я понимаю, там либо логика, либо обычный анальный выход, а ля переменный резистор
Шекспир сказал: Судить меня -дано лишь Богу, другим я укажу дорогу... https://natribu.org/
Я его полностью поддерживаю.
Программирую на Fuse AtmelAVR.
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт июн 26, 2014 15:27:55

Сообщение Starmarik »

Привет всем радиолюбителям :) может у кого есть прошивка или исходник суточного таймера для avr, или может кто видел где на просторах инета, прошу послать в том направлении :)))) В общем, нужна прошивка, которая бы включала свет в аквариуме на 8 часов, и раз в сутки влючала на 5 секунд кормушку автоматическую. Кто может чем помочь, прошу откликнутся :))) А может кто согласится написать безвозмездно? :))))) Прошу не сочесть за наглость :)))
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 81
Зарегистрирован: Вт май 08, 2012 23:15:45
Откуда: Санкт - Петербург

Сообщение ua1arn »

Правьте под себя - это таймер на много-много часов.
Вложения
timeratm.zip
(231.12 КБ) 184 скачивания
Встал на лапы
Аватара пользователя
Сообщения: 116
Зарегистрирован: Пт сен 07, 2012 19:38:09
Откуда: Белая Церковь, Украина

Сообщение Саша Леськив »

Собираю тест-плату с серцем на микроконтроллере ATmega64A. Пошарил в нете, что его нужно программировать, используя ноги юарта для miso i mosi. Вопрос - почему именно юарт, а не спецеализированные для этих целей ножки miso i mosi? Будут последние работать или нет?
P.S. Я не проверял, как с ножками miso i mosi, но порты юарта работают на ура и микра прошивается полностью за пару секунд не смотря на свои 64к.
P.P.S Эти ноги не могу использовать, ибо нужен юарт.
P.P.P.S Сам проверить не могу сейчас по некоторым причинам.
Зарание спасибо!
Все получится!! Главное не сдаваться, ведь не ошибается тот, кто не ничего не делает!!!
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

datasheet: 28.8 SPI Serial Programming Pin Mapping
Изображение
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

Управление какое-нибудь нужно или тупо вкл-выкл по времени?
Fucking static initialization order fiasco
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 81
Зарегистрирован: Вт май 08, 2012 23:15:45
Откуда: Санкт - Петербург

Сообщение ua1arn »

Возьмусь предположить, что требуется только установка начала суток - чтобы свет в аквариуме не ночью зажигался.
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

Это можно сделать по факту включения питания. Чтобы не заморачиваться с установками.
Fucking static initialization order fiasco
Контактная информация:
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

С датчиком хола не так все просто, часто они идут либо сразу с логическим выходом - либо полноценный либо с ОК, который надо подпереть резистором сверху либо идет просто мост из магниточувствительных элементов, который надо запитать и снять с него дифференциальный сигнал и усилить.
Контактная информация:
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

Сообщение nirq »

чтобы свет в аквариуме
Чтоб не заморачиваться с установками, по факту лучше сразу предусмотреть часы, чем сначала сделать безвозмездно неважно что, потом выкрасить, выбросить и начать делать уже нормально.
Халява, сэээр...

Хинт: тарифы на электричество, день/ночь; перебой в розетке, буквально на полсекунды, через час ещё на полчаса, а потом ближе к вечеру опять на полсекунды;...
СпойлерУ меня есть уже готовая конструкция, которой описанная задача решается как часть общего функционала ... но конструкция не продаётся безвозмездно, а документация не раздаётся безвозмездно. Такие дела.
Зато на зелёной "фирменной" плате и опционально в "фирменном" же корпусе. С дисплеем на русском языке, батарейкой от перебоев и всеми делами.
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Саша Леськив писал(а):Собираю тест-плату с серцем на микроконтроллере ATmega64A
Там 2 уарта, вы используете оба?
Шить можно через JTAG.
Шить можно через бутлоадер, здесь вообще любой доступный интерфейс накрутить можно.
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт июн 26, 2014 15:27:55

Сообщение Starmarik »

Всем спасибо за ответы, потихоньку разбираюсь сам. Решил сделать на Attiny13, использовать таймер, прерывания по совпадению. Как раз бьюсь над этим в cvavr :) начало включения света по факту включения питания, далее через 7 часов включение автокормушки на 5 секунд, через 8 часов отключение света, через 16 часов включение. Точности тут не надо, так как корректировать могу простым перезапуском таймера.
Встал на лапы
Аватара пользователя
Сообщения: 116
Зарегистрирован: Пт сен 07, 2012 19:38:09
Откуда: Белая Церковь, Украина

Сообщение Саша Леськив »

a_skr, то, что вы скинули я уже видел, спасибо. Я спрашиваю лично ваше мнение о том, почему здесь такой казус; В чем причина такой перестановки назначений выводов мк? Зачем юарт выводы для ISP программирования, а не MISO i MOSI :wink:
Все получится!! Главное не сдаваться, ведь не ошибается тот, кто не ничего не делает!!!
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

Лично моё? :dont_know: Никогда не задумывался... Может, конструктивно в таком "большом" 64-ногом корпусе Atmel'у так было удобнее... :)))
P.P.S Эти ноги не могу использовать, ибо нужен юарт.
Почему не можете? Перемычку между MAX232 (или что там у Вас) и МК. И снимать ее на время программирования.
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт июн 26, 2014 15:27:55

Сообщение Starmarik »

Помогите сделать правильный расчет таймера. Хочу сделать прерывание по совпадению с частотой раз в 1/100 секунды. Частота процессора 8 Mhz. 1сек/8000000=0,000000125. 0,001 сек/0,000000125=8000. 8000 делится нацело на предделитель 64 = 125. Выбираю прерывание по совпадению, записываю значение сравнения 7d (он же 125 в десятичной). Теперь по логике таймер должен прерываться с частотой 1/100 секунды. Значит, если переменную, которая увеличивается на единицу за одно прерывание, увеличить до 100, должна получится 1 секунда. Но в Протеусе почемуто таймер отсчитывает не 10 секунд, а 8. Посмотрите код пожалуйста. Я еще только начинаю изучать контроллеры, не все понимаю. Код написан в CVAVR.
Спойлер

Код: Выделить всё

#include <tiny13.h>
unsigned char m_sec=0x00;//переменная мсек
unsigned char sec=0x00;//переменная сек
// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
m_sec++;//переменная увеличивается за одно прерывание
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
// State5=T State4=0 State3=0 State2=0 State1=0 State0=0 
PORTB=0x00;
DDRB=0x1F;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x02;
TCCR0B=0x03; //предделитель на 64
TCNT0=0x00;
OCR0A=0x7D; //значение сравнения 125
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x04;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// Global enable interrupts
#asm("sei")

while (1)
      {
      if(m_sec==100){m_sec=0;sec++;}  //должна получатся 1 секунда
      if(sec==100){PORTB.0=1;}        //должно тикать 10 секунд

      }
}

Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

1/100 секунды не равна 0,001 сек. и равно 100Гц
Внутренний генератор тини13 9.6 MHz.
В документации есть формула из нее получается:
OCR=(Fclk/Focn*N)-1
N - коэффициент предделителя (1, 8, 64, 256, or 1024)
OCR=(9600000/100*N)-1=(9600000/(100*1024))-1= 92.75=93 
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Чт июн 26, 2014 15:27:55

Сообщение Starmarik »

oleg110592 спасибо, заработало!!! :)) мой промах, я думал, CVAVR сам знает, у какого процессора какая частота, ан нет :)) В следующий раз начну с даташита :)
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт май 13, 2014 19:22:27
Откуда: г. Сургут

Сообщение kLeR1k »

Почему то на ноге Attiny13 с ШИМ в сигнале импульсы идут двойные.
СпойлерИзображение
Из за чего это может происходить?
И как можно отключить ШИМ и посадить ногу на землю? Нужно управлять светодиодным драйвером на zxld1360, а если посадить его ADJ ногу на землю (логический 0 на выходе Attiny), то он отключает светодиод от питания
Последний раз редактировалось kLeR1k Сб июн 28, 2014 18:08:28, всего редактировалось 1 раз.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

У компилятора телепатические способности? А ведь контроллер может работать на частотах от 0 гц он и эти частоты должен угадывать?
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

kLeR1k, код в студию!
kLeR1k писал(а):И как можно отключить ШИМ и посадить ногу на землю?

Код: Выделить всё

TCCR0A &= ~((1<<COM0A0)|(1<<COM0A1)); // если выход А
TCCR0A &= ~((1<<COM0B0)|(1<<COM0B1)); // если выход B
PORT &= ~(1<<BIT);
Ставим плюсы: )
Ответить

Вернуться в «Разные вопросы по МК»