реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Краткое резюме по поводу обвязки МК при SPI-прог-ии?, на примере ATmega16
MakFatum
сообщение Mar 18 2006, 03:18
Сообщение #31


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



420, 480, 580, 720, 780 Гц
и модулируется 8 или 12 Герцами
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Mar 18 2006, 09:22
Сообщение #32


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
420, 480, 580, 720, 780 Гц
и модулируется 8 или 12 Герцами

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

Сообщение отредактировал beer_warrior - Mar 18 2006, 09:24


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
MakFatum
сообщение Mar 18 2006, 12:12
Сообщение #33


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



вот-вот, про это и хотел спросить...
а где про это хорошо так, понятненько написано, а?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Mar 18 2006, 12:38
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
вот-вот, про это и хотел спросить...
а где про это хорошо так, понятненько написано, а?

Описания таймеров - в даташите на камень.
Нахождение наименьшего общего кратного - учебник математики 5 класс.

Могу еще посоветовать аппликэйшн ноты, относящиеся к DTMF - там частоты такого же порядка и есть примеры.

Сообщение отредактировал beer_warrior - Mar 18 2006, 12:41


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
MakFatum
сообщение Mar 18 2006, 13:31
Сообщение #35


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



Хорошо, буду разбираться....

НОК вроде помню...

неотвеченные вопросы..:

3 осциллограмма = 1осциллограмма умножить на 2 осц., или + ???
......просто чтобы быть уверенным, мне кажется умножить...
в маткаде что ли попробовать....

Как лучше организовать опрос портов на наличие минуса...
Код
if(!PIND.2)     {/* Если на ножке PB2 низкий логический уровень -
                        то выполнить определенный код */
                            };
ELSE { выполнить другой код}


.....А если без ELSE, ведь это не обязательный параметр,..?

ТОгда программа если не истина просто пойдет дальше?а если истина сделает код в скобках и тоже потом побежит дальше? я правильно понял?

или лучше будет поступить так: (все совместить....)

Код
if(!PIND.2)     {  // если НЛУ то делать код пока не измениться состояние

while((PIND>>2)&0)
{/* код выполняется пока на PIND.2 - НЛУ  */
                                              }
};


...и вот еще один вопрос, не совсем понимаю...
когда на PIND.2 ничего не будет (он просто будет в воздухе), как воспримет его вышеуказанный цикл?...Ведь на нем 0, а низкий лог.уровень - больше 1 В...
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Mar 18 2006, 13:40
Сообщение #36


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
......просто чтобы быть уверенным, мне кажется умножить...

Логичски умножить т.е. логическое И
Цитата
ТОгда программа если не истина просто пойдет дальше?а если истина сделает код в скобках и тоже потом побежит дальше? я правильно понял?

Именно так.
Цитата
или лучше будет поступить так: (все совместить....)

Я бы опрашивал весь порт сразуи использовал бы оператор switch.
Цитата
когда на PIND.2 ничего не будет (он просто будет в воздухе), как воспримет его вышеуказанный цикл?...Ведь на нем 0, а низкий лог.уровень - больше 1 В...

Если нога просто в воздухе уровень будет зависеть от фазы Луны.
Надо либо включить внутренние пулл-ап резисторы или поставить внешние.
Кстати об этих входах там, как я понял висит ЭСЛ-ТТЛ преобразователи?


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
MakFatum
сообщение Mar 18 2006, 13:44
Сообщение #37


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



нет, это простые оптопары, по-моему 4N35
Uп=+-20В
Uп1=8,2В
Go to the top of the page
 
+Quote Post
MakFatum
сообщение Mar 21 2006, 11:00
Сообщение #38


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



Вот у меня несколько вопросов:
привожу кусочек:

Код
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here

}

// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Place your code here

}

// Declare your global variables here

void main(void)
{

init_mk();

while (1)
      {

opros_D:
switch (PIND)
{
case 0xFD:       // IF PD1 "-", then 420
TCNT0=107;

break;
case 0xFB:       // IF PD2 "-", then 480
TCNT0=126;

break;
case 0xF7:       // IF PD3 "-", then 580
TCNT0=148;

break;           // IF PD0 "-", then 720
case 0xFE:
TCNT0=169;

break;
case 0xBF:       // IF PD6 "-", then 780
TCNT0=176;

break;
};


Вопрос 1. Хочу сначала попробовать выдавить несущие прерыванием по переполнению таймера (кстати почему-то на той схеме так и есть, хотя это, я так понял, не очень рационально..), а потом сбросом при совпадении Внес необходимые десятичные значения в регистр счета T0, соответствующие частотам. Дальше таймер начинает тикать,...переполняется, возникает прерывание - уходит в подпрограмму обработки...Поскольку подпрограмма начинает работу в момент, когда состояние счетчика сбрасывается с 255 в 0, ведь вновь нужно занести в регистр счетчика необходимое начальное значение (допустим соответсвующее 420 Гц)???
Как мне сделать в подпрограмме прерывания, чтобы выбиралась нужная константа из нескольких (в моем случае 5), и в зависимости от этой константы формировались импульсы нужной частоты? Ведь регистр TCNT0 уже обнулился и сравнивать не с чем чтобы выбрать??? Вообщем я не очень представляю струтуры подпрограммы для моего случая....
никак дойти до этого не могу, видимо чего-то не знаю...
Вопрос 2.Вот использую я оператор switch (PIND) - он опрашивает весь порт, а как этим же оператором опрашивать, допустим, только PINB.5, PINB.4 на наличие gnd???

Вопрос 3. Чем явл-ся "-5В" для МК? ведь 0,3Uп<лог.0<0,6 Uпит.???Мне же надо опрашивать на наличие "-5В"...
фундамент пока мисть у меня не прочный...много белых пятен..

P.s....и еще....прошу извинения у админа форума за то, что пихаю в этот топик все подряд....по пути....
не подумал сразу, далее постараюсь придерживаться общепринятых правил...
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Mar 21 2006, 11:18
Сообщение #39


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



1. требует обдумывания
2.что- нибудь типа:
mode = (PINB & 0x30)>> 4; // даст числа от 0 до 4
swich (mode)
{
}
3.Что такое -Uп земля или -5?
Если -5 срочно перерабатывать схему, камень питаеться сейчас от 10В.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
MakFatum
сообщение Mar 21 2006, 16:13
Сообщение #40


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



и Uп - Земля...
Вроде там все ок, при отсутствии -20 В на входе оптопар - на входе порта лог.1., иначе лог.0., т.е. опрашивать надо на лог.0...
НО...у меня ничего не работает в протеусе...
только WD исправно сброс генерирует и всё...
....видимо косяки....чувствую просто, что косяки....
???
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 21 2006, 20:47
Сообщение #41


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(beer_warrior @ Mar 21 2006, 13:18) *
Если -5 срочно перерабатывать схему, камень питаеться сейчас от 10В.

Уже б давно сгорела..

Цитата
Чем явл-ся "-5В" для МК?

ничем - пустым звуком, который садится через защитные диоды на "Землю". Земля (GND) в схемах считается точкой опоры - условный 0 вольт.

Цитата
ведь 0,3Uп<лог.0<0,6 Uпит.???

Uп = 5V, а GND = 0V, так во всяком случае принято считать. (но естественно все относительно).
Конкретно в вашей схеме, и конкретно для MK Uп = +5V, а Земля = 0V.

Цитата
Мне же надо опрашивать на наличие "-5В"...

чтобы МК смог "увидеть" сигнал с уровнем напряжения ниже 0V относительно "Земли" МК, требуется этот сигнал подтянуть до уровня который бы лежал в пределах 0V +5V относительно "GND" MK, с помощью делителя напряжения на паре резисторов и напряжения смещения, которое подается третим резистором с Vcc к выходной точке делителя...
Go to the top of the page
 
+Quote Post
MakFatum
сообщение Mar 22 2006, 16:53
Сообщение #42


Участник
*

Группа: Новичок
Сообщений: 54
Регистрация: 7-12-05
Пользователь №: 11 912



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

вот написал тут

Код
#include <mega8.h>

// Declare your global variables here

void main(void)
{

PORTB=0x00;
DDRB=0x08;
      
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 0,977 kHz
// Mode: CTC top=OCR2
// OC2 output: Clear on compare match
ASSR=0x00;
TCCR2=0b00011101;
TCNT2=0x00;
OCR2=0xff;

}


В протеусе работает, НО при значении ff в OCR2 показывает почему-то 15 Гц, может считаю не так?
формула: fOCn=fclk_/2*N(1+OCRn)
fclk=976,5625 при 1/1024
N соотв-но 1024
Может что-то неправильно в формулу подставляю?..
Go to the top of the page
 
+Quote Post
あっ!
сообщение May 27 2006, 15:29
Сообщение #43


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 20-05-06
Пользователь №: 17 297



Господа, а вот кто подскажет, что происходит с сигналами на неиспользующихся при SPI-программировании выводах? В схеме на SPI повешаны MMC и ещё там одна микросхема - надо обеспечить им во время программирования высокий уровень на CS.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 27 2006, 20:17
Сообщение #44


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата
Господа, а вот кто подскажет, что происходит с сигналами на неиспользующихся при SPI-программировании выводах?

На большинстве процессоров (и Меге8) выводы отключены (являются входами). А вообще, обычно для портовых регистров пишут их состояния после сбросе (при программировании они такие же). Большинство будут сконфигурированны как входы без подтяжки. Иногда с подтяжкой. Если у вас подключена ММС, то желательно её CS снаружи подтягивать к питанию резистором. И конечно пин CS не должен быть пином, участвующим в программировании.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
あっ!
сообщение May 27 2006, 21:43
Сообщение #45


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 20-05-06
Пользователь №: 17 297



GetSmart
Премного благодарен. Теперь нашёл. Действительно - высокоимпедансное состояние.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016