|
Краткое резюме по поводу обвязки МК при SPI-прог-ии?, на примере ATmega16 |
|
|
|
Feb 15 2006, 10:37
|
Участник

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

|
Всем Доброго Времени!... я в курсе что это уже спрашивали, но это все разбросано кусками по всему форуму... читал-читал и в голове одна каша... можно ли подвести краткое резюме всему написанному ранее?... Собрал простой SPI программатор по схеме :  Отдельно от него отладочная плата с панелькой. Вопрос первый: какой длины я могу использовать провод между LPT (саму схему я поместил в разъеме LPT) и отладочной платой? Читал что 20-30 см?(придется сидеть тогда с платой и программатором глубоко под столом  ). Можно ли использовать удлинитель в виде шнура от матричного принтера???? (было бы для меня удобно, но не будут ли помехи наводиться???(хотя шнур от матричного принтера экранированный ведь?)) Вопрос второй, по отладочной плате. Ниже приведена обвязка, насобирал сведения отовсюду....Вопрос -такая схема с этими номиналамии будет работать?  Я помню обсуждалось, что AREF можно оставлять пустым? В какой-то pdf-ке прочитал "Connect ICP to Vcc if not used" (20 вывод PD6)....Зачем?? и еще интересует RESET. Правильно ли будет ТАК, как на схеме?.... Заранее благодарен...
|
|
|
|
3 страниц
< 1 2 3
|
 |
Ответов
(30 - 44)
|
Mar 18 2006, 03:18
|
Участник

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

|
420, 480, 580, 720, 780 Гц и модулируется 8 или 12 Герцами
|
|
|
|
|
Mar 18 2006, 09:22
|

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

|
Цитата 420, 480, 580, 720, 780 Гц и модулируется 8 или 12 Герцами Ну и вперед, открывай главу по таймерам и просчитывай, как делить тактовую для получения искомых частот.
Сообщение отредактировал beer_warrior - Mar 18 2006, 09:24
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 18 2006, 12:12
|
Участник

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

|
вот-вот, про это и хотел спросить... а где про это хорошо так, понятненько написано, а?
|
|
|
|
|
Mar 18 2006, 12:38
|

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

|
Цитата вот-вот, про это и хотел спросить... а где про это хорошо так, понятненько написано, а? Описания таймеров - в даташите на камень. Нахождение наименьшего общего кратного - учебник математики 5 класс. Могу еще посоветовать аппликэйшн ноты, относящиеся к DTMF - там частоты такого же порядка и есть примеры.
Сообщение отредактировал beer_warrior - Mar 18 2006, 12:41
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 18 2006, 13:31
|
Участник

Группа: Новичок
Сообщений: 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 В...
|
|
|
|
|
Mar 18 2006, 13:40
|

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

|
Цитата ......просто чтобы быть уверенным, мне кажется умножить... Логичски умножить т.е. логическое И Цитата ТОгда программа если не истина просто пойдет дальше?а если истина сделает код в скобках и тоже потом побежит дальше? я правильно понял? Именно так. Цитата или лучше будет поступить так: (все совместить....) Я бы опрашивал весь порт сразуи использовал бы оператор switch. Цитата когда на PIND.2 ничего не будет (он просто будет в воздухе), как воспримет его вышеуказанный цикл?...Ведь на нем 0, а низкий лог.уровень - больше 1 В... Если нога просто в воздухе уровень будет зависеть от фазы Луны. Надо либо включить внутренние пулл-ап резисторы или поставить внешние. Кстати об этих входах там, как я понял висит ЭСЛ-ТТЛ преобразователи?
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Mar 18 2006, 13:44
|
Участник

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

|
нет, это простые оптопары, по-моему 4N35 Uп=+-20В Uп1=8,2В
|
|
|
|
|
Mar 21 2006, 11:00
|
Участник

Группа: Новичок
Сообщений: 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....и еще....прошу извинения у админа форума за то, что пихаю в этот топик все подряд....по пути.... не подумал сразу, далее постараюсь придерживаться общепринятых правил...
|
|
|
|
|
Mar 21 2006, 16:13
|
Участник

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

|
и Uп - Земля... Вроде там все ок, при отсутствии -20 В на входе оптопар - на входе порта лог.1., иначе лог.0., т.е. опрашивать надо на лог.0... НО...у меня ничего не работает в протеусе... только WD исправно сброс генерирует и всё... ....видимо косяки....чувствую просто, что косяки.... ???
|
|
|
|
|
Mar 21 2006, 20:47
|

кекс
     
Группа: Свой
Сообщений: 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 к выходной точке делителя...
|
|
|
|
|
Mar 22 2006, 16:53
|
Участник

Группа: Новичок
Сообщений: 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 Может что-то неправильно в формулу подставляю?..
|
|
|
|
|
May 27 2006, 15:29
|
Участник

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

|
Господа, а вот кто подскажет, что происходит с сигналами на неиспользующихся при SPI-программировании выводах? В схеме на SPI повешаны MMC и ещё там одна микросхема - надо обеспечить им во время программирования высокий уровень на CS.
|
|
|
|
|
May 27 2006, 21:43
|
Участник

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

|
GetSmart Премного благодарен. Теперь нашёл. Действительно - высокоимпедансное состояние.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|