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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
sheva_s
Грызет канифоль
Сообщения: 256
Зарегистрирован: Пт апр 27, 2007 14:32:48
Откуда: Украина Кривой Рог
Контактная информация:

Сообщение sheva_s »

Спасибо за ответы буду разбираться , пока никто не отвечал пытался сам разобраться чуть получилось только тут без подавления дребезга контактов. Вобщем так скелет ну работает покрайней мере в протеусе.

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

#include <mega8>
#include <delay>

int a;                // переменная для хранения состояния порта В
void main(void)
{
//инициализируем порты
        PORTB=0x3F;
        DDRB=0x00;
        PORTD=0x00;
        DDRD=0xFF;
//********************       
while (1)                                                 
      {
        a=PINB&0x3F;    //считываем состояние порта и проверяем
                        //по маске биты порта к которым подключены
                        //кнопки.
//цикл определения какая кнопка нажата и выдача информации на соответствующий пин порта Д                       
switch (a) {
    case 0b00111110    :  PORTD.0=~PORTD.0;        break; 
    case 0b00111101    :  PORTD.1=~PORTD.1;        break;
    case 0b00111011   :   PORTD.2=~PORTD.2;        break;
    case 0b00110111    :  PORTD.3=~PORTD.3;        break; 
    case 0b00101111    :  PORTD.4=~PORTD.4;        break; 
    case 0b00011111    :  PORTD.5=~PORTD.5;        break; 
    };
          delay_ms (200);
        a=0;             // обнуляем переменную  порта В
        };
}
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

послушайте, уважаемый sheva_s, то, что вы написали - полностью противоречит вашему воплю о помощи:
sheva_s писал(а):опрос происходит в прерывании таймера с частатой 400 гц

что вы голову всем морочите?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Neekeetos
Держит паяльник хвостом
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула
Контактная информация:

Сообщение Neekeetos »

sheva_s писал(а):Спасибо за ответы буду разбираться , пока никто не отвечал пытался сам разобраться чуть получилось только тут без подавления дребезга контактов. Вобщем так скелет ну работает покрайней мере в протеусе.


В твоей программе есть одна проблема - нажатие нескольких кнопок одновременно будет потеряно, можно сделать немного по другому, например так:

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

while (1)                                                 
      {
        a=PINB&0x3F;   

      if(!a&0x01) { PORTD.0=~PORTD.0;}
      if(!a&0x02) { PORTD.1=~PORTD.1;}
      if(!a&0x04) { PORTD.2=~PORTD.2;}
      if(!a&0x08) { PORTD.3=~PORTD.3;}
      if(!a&0x10) { PORTD.4=~PORTD.4;}
      if(!a&0x20) { PORTD.5=~PORTD.5;}

      delay_ms (200);
      };
}


Не самый прямой способ обрабатывать кнопки зато наглядно и можно отделить каждую кнопку от других.
Аватара пользователя
sheva_s
Грызет канифоль
Сообщения: 256
Зарегистрирован: Пт апр 27, 2007 14:32:48
Откуда: Украина Кривой Рог
Контактная информация:

Сообщение sheva_s »

ARV писал(а): что вы голову всем морочите?

Голову неморочу про прерывание я писал правильно, а тот код который я выложил появился в процессе разбора как вобще обрабатываються кнопки и выложен для примера как простой способ опроса 6 кнопок я же написал что это просто скелет программы , когда я пытался разобраться ваших постов небыло, а когда у меня хоть что то получилось решил поделиться вдруг такому начинающему как я нужна будет хоть какая-то помощь с кнопками на простом примере вот и выложил.
А ваши примеры щяс пытаюсь анализировать . Я пишу программу для часов на МЕГА8 и с кнопками мучался целый день у меня невыходило получалось только через оператор if() меня это неустраивало так как делать опрос 3 кнопок в прерывании которое задействовано на динамической индикации нехочеться. вот и искал другие способы.
Всем спасибо за помощь буду разбираться дальше.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

вообще-то тут была тема про обработку кнопок... я там высказывал мнение (и продолжаю так считать), что заморачиваться с опросом кнопок в прерываниях - это очень часто (может, почти всегда) явно лишнее.

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

Мой уютный бложик... заходите!
сахар
Встал на лапы
Сообщения: 142
Зарегистрирован: Пт дек 05, 2008 18:19:27
Откуда: Кривой Рог Украина

Сообщение сахар »

здрасти,вопрос мож не в тему,но помогите плиз,вообщем купил я три атмеги8,в одну зашил нех для "призрака",потом подключил,проверять,а он мне меню выдал,но на клаву не реагирует,но я не о том,короче когда я его стираю,а потом читаю то он мне вместо---- выдает какойто текст,а с фьюзами вообще лажа,все котрые отвечают за частоту установлены в 1,(а для проэктам там нужен только один,который я и записал),не пойму в чем именно проблема.в мк или в програматоре?
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

Сообщение pirotehnick »

Я меня возник вопрос по поводу использования SPI Atmega, т.е. совмещения c ним карты MMC.

Не совсем понятно как принимать данные от карты. Ведущее устройство здесь МК, т.е. SPI у него настроен в режиме мастера. А как при этом регистрировать данные от карты. Как я понял бит SPIF должен устанавливаться как при окончании передачи данных, так и при окончании их приёма (от ведомого к ведущему) ? А при этом, направления передачи данных для линий отстаются прежними, т.е.

SS - выход (низкий уровень)
SCK - выход
MOSI - выход
MISO - вход

Я всё правильно понял?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

направления сигналов остаются всегда одинаковыми. но самое главное, что момент окончания приема и окончания передачи - это один и тот же момент! оба процесса ОДНОВРЕМЕННЫ
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

Сообщение pirotehnick »

Вот это не совсем понял, ОДНОВРЕМЕННО - в каком смысле?
Как я понимаю, когда мы общаемся с внешним устройством, например с этой картой, мы отсылаем данные и ждём окончания их передачи, а затем ждём ответа.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

pirotehnick писал(а):Вот это не совсем понял, ОДНОВРЕМЕННО - в каком смысле?
в абсолютно прямом, как луч лазера :)
передача байта по SPI всегда сопровождается одновременным приемом байта. занес в регистр UDR (или как он там зовется) байт - передал его - считал из UDR принятый байт :) вот так. без передачи приема не выйдет, равно и наоборот.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

Сообщение pirotehnick »

Мммда... А мне SPI представлялся несколько в ином свете.
Т.е. по окончании передачи байта, у нас уже имеется готовый пришедший байт, так что-ли?
Тогда, не совсем понятно. А если имеется такая ситуация. Необходимо связать 2 МК. Допустим первый - ведущий, а второй ведомый. Первый отсылает команду, состоящую из нескольких байт, которую должен обработать второй МК и выдать ответ первому. В этом случае, что ведущий МК должен в определёный момент времени организовать передачу произвольных данных, что бы получить ответ второго, а второй в этот момент должен отвечать. Так что-ли?
Аватара пользователя
biDE
Встал на лапы
Сообщения: 84
Зарегистрирован: Пн ноя 12, 2007 20:53:05
Откуда: Одесса

Сообщение biDE »

pirotehnick писал(а):ведущий МК должен в определёный момент времени организовать передачу произвольных данных, что бы получить ответ второго, а второй в этот момент должен отвечать. Так что-ли?

Именно так. Это позволяет ведущему передавать команды и получать ответы тогда, когда ему это удобно.
кот байкера
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Пн сен 08, 2008 21:40:11
Откуда: Ижевск

Сообщение кот байкера »

Помогите разобраться! как подключить кварцевый генератор с четырьмя выводами (на фото) к МК ATmega8? Раньше использовал только часовой кварц с 2 выводами, а как быть с четырьмя?
Вложения
новый-7.jpg
(94.51 КБ) 472 скачивания
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

кот байкера писал(а):Помогите разобраться! как подключить кварцевый генератор с четырьмя выводами (на фото) к МК ATmega8? Раньше использовал только часовой кварц с 2 выводами, а как быть с четырьмя?

2 минуты в гугле
http://www.q-crystal.com/upload/7/20087 ... 821943.pdf 181 кБайт
кот байкера
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Пн сен 08, 2008 21:40:11
Откуда: Ижевск

Сообщение кот байкера »

здесь я уже был, хотелось бы чего нибудь по конкретнее. Ну и на этом спасибо. Единственное что я понял - используются только 3 вывода. Может я что то не то купил? Во всех схемах у кварца 2 вывода. Может это резонаторы? Да, с этим у меня пока плохо. :?
Аватара пользователя
DiGiCat
Друг Кота
Сообщения: 4793
Зарегистрирован: Пт июл 11, 2008 09:42:35
Откуда: Made in USSR

Сообщение DiGiCat »

Это похоже генератор кварцевый ( по цене дороже раз в 5) , поэтому и три вывода задействуется. Еще возможно прийдется в конфигурации ATmega8 фьюзы выставить на работу от внешнего тактирования.
Обычные кварцы в других корпусах идут - HC-49/U3H ( KX-3HT ) , HC-49/U ( KX-49 ) , QSMD ( КХ-К ) и т.д.
Вложения
GEYER.JPG
(7.28 КБ) 495 скачиваний
Аватара пользователя
ChipManyak
Потрогал лапой паяльник
Сообщения: 363
Зарегистрирован: Сб сен 20, 2008 14:59:28

Сообщение ChipManyak »

Опять опередили...
*******************

Кварцевый генератор как на духу
DiGiCat прав.
Хорошая вещь кстати.
На выходе меандр.
Вложения
новый-7.jpg
(143.41 КБ) 471 скачивание
Радиоэлектроника, это наука о КОНТАКТАХ!
кот байкера
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Пн сен 08, 2008 21:40:11
Откуда: Ижевск

Сообщение кот байкера »

Здорово я прокошачился! До сегодняшнего дня думал что генератор и резонатор это одно и тоже. Значит вывод #5 генератора на XTAL2 (а XTAL1-в воздухе?), и никаких дополнительных конденсаторов. А фьюзы как обычно - тактирование от внешнего кварца, и вот оно счастье?.
Аватара пользователя
ChipManyak
Потрогал лапой паяльник
Сообщения: 363
Зарегистрирован: Сб сен 20, 2008 14:59:28

Сообщение ChipManyak »

YES ! Счастье есть, его не может не быть!
Радиоэлектроника, это наука о КОНТАКТАХ!
кот байкера
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Пн сен 08, 2008 21:40:11
Откуда: Ижевск

Сообщение кот байкера »

А стоит он действительно в 5 раз дороже! Спасиб всем кто разжевал! Завтра паяю!
Ответить

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