
Мелкие вопросы по МК и ПЛИС.
-
koteika
- Встал на лапы
- Сообщения: 147
- Зарегистрирован: Пт ноя 27, 2009 18:24:25
- Откуда: Харьков
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
в общем геморроя больше чем профита выйдет) а есть в линейке авр мк со схожими характеристиками и работающие на 8МГц без танцев с бубном от внутреннего генератора или внешнего кварца? мне с головой хватит 1кб памяти и 6 I/O а использовать мега8/16 для таких задач считаю кощунство 

- КАШАК
- Это не хвост, это антенна
- Сообщения: 1303
- Зарегистрирован: Вс апр 19, 2009 17:20:22
- Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Например Tiny45
Опыт растет прямо пропорционально выведенному из строя оборудованию...
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
А чем вас 9,6 не устраивает? Казалось бы, быстрее — не медленнее 

[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
-
koteika
- Встал на лапы
- Сообщения: 147
- Зарегистрирован: Пт ноя 27, 2009 18:24:25
- Откуда: Харьков
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
сломался дверной звонок - купить новый не спортивно, ведь нужно применять знания на практике
есть кусок кода с прошлого проекта для воспроизведения мелодии рассчитанный на 8МГц, пересчитывать все для 9,6 неохота
хм... тини 45 у нас стоит почти как мега16( вот где здравый смысл?
хм... тини 45 у нас стоит почти как мега16( вот где здравый смысл?
Re: Мелкие вопросы по МК и ПЛИС.
на alliexpress mega 8 дешевле чем tiny 13
подал на tiny 13A на АЦП сигнал (напряжение батареи) через делитель 30К верхний 10 нижний.
Показывало напряжение нормальное.
Потом на второй ацп подал сигнал через делитель 3К и 1К.
И на первый АЦП пошли глюки через пару минут работы показывало слишком маленькое напряжение через делитель - как будто АЦП пожирает энергию.
Поставил и там делитель 3К и 1К и вроде пока нормально.
Как это объяснить?
Цифровые порты отключены на ножках АЦП - DIDR0=0b00011000;
подал на tiny 13A на АЦП сигнал (напряжение батареи) через делитель 30К верхний 10 нижний.
Показывало напряжение нормальное.
Потом на второй ацп подал сигнал через делитель 3К и 1К.
И на первый АЦП пошли глюки через пару минут работы показывало слишком маленькое напряжение через делитель - как будто АЦП пожирает энергию.
Поставил и там делитель 3К и 1К и вроде пока нормально.
Как это объяснить?
Цифровые порты отключены на ножках АЦП - DIDR0=0b00011000;
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Друзья. Начинаю писать чуть ли не первую прошивку. Что я делаю не так? По идее, МК должен мигать светодиодом на пятой ножке (работает) а по приходу фронта (любого) на ножку 2, это событие INT0, должен сформировать импульс 5мс и продолжить мигать. Вот импульса то и нет. Судя по всему рукожопо обработано прерывание. но полчаса гугла не дали понимания -- что не так.
МК = ATtiny24
Код: Выделить всё
#define F_CPU 8000000
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
void INTERRUPT(INT0_vect) {
_delay_ms(5);
PORTA = 0x01;
_delay_ms(5);
PORTA = 0x00;
}
int main (void){
sei();
GIMSK |= (1<<INT0);
MCUCR = (0<<ISC01) | (1<<ISC00); //íàñòðîèëèñü
DDRA = 0xfb; // ïîðò Ñ - âûõîä
while (1){
_delay_ms(1000);
PORTA = 0x10;
_delay_ms(1000);
PORTA = 0x00;
}
return 0;
}
МК = ATtiny24
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Мелкие вопросы по МК и ПЛИС.
может ISR(INT0_vect) вместо void INTERRUPT(INT0_vect)
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Мелкие вопросы по МК и ПЛИС.
на всякий флаг бы очистить - добавить после MCUCR = (0<<ISC01) | (1<<ISC00);
это GIFR=(1<<INTF0) | (0<<PCIF1) | (0<<PCIF0);
да и режим это Falling Edge - должно на 0 вроде срабатывать, не ошибся по любому уровню
это GIFR=(1<<INTF0) | (0<<PCIF1) | (0<<PCIF0);
да и режим это Falling Edge - должно на 0 вроде срабатывать, не ошибся по любому уровню
-
pcb
- Опытный кот
- Сообщения: 833
- Зарегистрирован: Пт авг 12, 2011 09:14:27
- Откуда: Млечный путь/Земля/РФ/Екатеринбург
Re: Мелкие вопросы по МК и ПЛИС.
Ну и задержки в прерываниях эт да
а) убрать из прерывания delay
b) в прерывании только ставить флаг нажатия/отпускания кнопы и/или обрабатывать это самое нажатие
г) всю кухню делать в main.

а) убрать из прерывания delay
b) в прерывании только ставить флаг нажатия/отпускания кнопы и/или обрабатывать это самое нажатие
г) всю кухню делать в main.
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Мона с примером? Флаги я пока не пробовал.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Хм... Странно. После запуска протеус регистрирует таки импульс, который должен появиться в прерывании.. только в 40мс длинной и 1 раз. Как это понимать?
Код: Выделить всё
#define F_CPU 8000000
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
ISR(INT0_vect) {
_delay_ms(5);
PORTA = 0x02;
_delay_ms(5);
PORTA = 0x00;
}
int main (void){
sei();
GIMSK |= (1<<INT0);
MCUCR = (0<<ISC01) | (1<<ISC00); //настроились
GIFR=(1<<INTF0) | (0<<PCIF1) | (0<<PCIF0);
DDRA = 0xfb; // порт С - выход
while (1){
_delay_ms(1000);
PORTA = 0x10;
_delay_ms(1000);
PORTA = 0x00;
}
return 0;
}- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Мелкие вопросы по МК и ПЛИС.
Так работает
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
ISR(INT0_vect) {
_delay_ms(5);
PORTA |= 0x02;
_delay_ms(5);
PORTA &= ~0x02;
}
int main (void){
// Crystal Oscillator division factor: 1
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
// Analog Comparator: Off
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
ADCSRB=(0<<ACME);
GIMSK |= (1<<INT0);
MCUCR = (0<<ISC01) | (1<<ISC00); //íàñòðîèëèñü
GIFR=(1<<INTF0) | (0<<PCIF1) | (0<<PCIF0);
DDRA = 0xFF; // ïîðò A - âûõîä
sei();
while (1){
_delay_ms(1000);
PORTA |= 0x10;
_delay_ms(1000);
PORTA &= ~0x10;
}
return 0;
}- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Проверял -- не пашет. Думал.. Потом понял в чём-таки подвох... Вход INT0 это же PORTB.2. А я ему всё в А тыкался...

- Balzercvua
- Потрогал лапой паяльник
- Сообщения: 311
- Зарегистрирован: Вт дек 31, 2013 17:36:43
Atmel ATXMEGA128A3-AU
Ребята подскажите каким простым самопальным прогером можна прошить ИКСмЕгА???насколько я понимаю СТК200.300 далеко не покатит!!!
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Такой ещё вопрос.. А какой командой задаётся потолок счёта таймеру? т.е. чтоб не по переполнению, а по совпадению. Такого не могу чёт найти, хотя явно есть.Надо взвести его на 10мс.
- КРАМ
- Друг Кота
- Сообщения: 25123
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
При каждом таймере (кроме нулевого) есть регистр (OCR), который подключен вместе с таймером к цифровому компаратору.
Достаточно записать в этот регистр необходимую величину пересчета и Вы добьетесь искомого.
Достаточно записать в этот регистр необходимую величину пересчета и Вы добьетесь искомого.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Не достаточно, но необходимо. Ещё необходимо сконфигурировать режим СТС или иной подходящий.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Код: Выделить всё
// При частоте генератора 14.7456 МГц и делителе 1024, 1000ms - 14400 тактов.
OCR3AH=56; OCR3AL=63;Из какого-то примера. Что есть 56 и 63? Разве не с ОДНИМ числом совпадение?
И да, какими командами запускать/прекращать действие таймера?

