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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
olegators68
Поставщик валерьянки для Кота
Сообщения: 2253
Зарегистрирован: Пн ноя 01, 2010 12:19:31
Откуда: Серпухов

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

Сообщение olegators68 »

ANALOG писал(а):Наверное, я не точно выразился: У меня в USBasp не прошит управляющий контроллер и я его пытаюсь прошить с помощью громова, через Uniprof, но что-то не получается :cry:

В питалоее 8-й меги либо "корявъ" СОМ-порт, машина если Б/М современная , порт типа нубук, не тянет. LРТ пробуем с внешним питаловом.
Вот блин, опять в галерее картину малевича вверх ногами повесили.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Necroteeth писал(а):upd: я имел в виду, что контроллер у меня тактируется внутренним генератором, а сигналы с ноги T1 просто считает, т.е. падающий фронт T1 является тиком для Таймера1

Сразу так слабо было написать? Читайте раздел даташита про таймеры.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Chettuser

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

Сообщение Chettuser »

AVT-28 писал(а):...по нажатию кнопки в программе что бы например появилась единичка на PORTB 0b00100000.

Может так?

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

RB3 = RE3
(Я с трудом догадываюсь что за у Вас компилятор - Ваш код вроде скушал MicroC, но ругнулся на ANS).
Кидайте весь проект, будем разбираться.
Аватара пользователя
AVT-28
Потрогал лапой паяльник
Сообщения: 378
Зарегистрирован: Вс сен 11, 2011 12:35:11

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

Сообщение AVT-28 »

Проект нет смысла кидать. Там нет опроса клавиш. Могу кинуть то что надо доработать и что у меня не работает..

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

#include <pic.h>   // Include header file for MCU
#define _XTAL_FREQ   20000000   // Define Frequency 20.0 MHz for function __delay_ms
__CONFIG(HS & WDTDIS & LVPDIS);   // Config. High speed clock,Disable watchdog and Disable LVP
void Delay_ms(unsigned int tick)
{
     while(tick--)   // Loop counter delay time
     {
      __delay_ms(1);   // Delay 1 ms
     }     
}
void main()
{
   TRISC = 0;      // Set PORTC output mode
   PORTC = 0;      // Clear port
   ANS6 = 0;      // Set RE1 as digital port
   ANS12 = 0;      // Set RB0 as digital port
   TRISB0 = 1;      // Set RB0 input mode
   TRISA4 = 1;      // Set RA4 input mode
   TRISE1 = 1;      // Set RE1 input mode
   while(1)   // Infinite loop
   {
      if(RB0==0)   // Switch at RB0 press?
      {
         //что то делается
         Delay_ms(200);      // Delay 0.5 sec
      }

      if(RA4==0)   // Switch at RA4 press?
      {
         // что то делается
         Delay_ms(200);      // Delay 0.5 sec
      }
      if(RE1==0)   // Switch at RE1 press?
      {
         //что то делается
         Delay_ms(200);      // Delay 0.5 sec
      }

// теперь я к этому добавляю вот так и это НЕ РАБОТАЕТ.

if(RB1==0)   // Switch at RB0 press?
      {
         //что то должно делаться но не делается
         Delay_ms(200);      // Delay 0.5 sec
      }
if(RB2==0)   // Switch at RB0 press?
      {
         //что то должно делаться но не делается
         Delay_ms(200);      // Delay 0.5 sec
      }
if(RB3==0)   // Switch at RB0 press?
      {
         //что то должно делаться но не делается
         Delay_ms(200);      // Delay 0.5 sec
      }
if(RB4==0)   // Switch at RB0 press?
      {
         //что то должно делаться но не делается
         Delay_ms(200);      // Delay 0.5 sec
      }
if(RB5==0)   // Switch at RB0 press?
      {
         //что то должно делаться но не делается
         Delay_ms(200);      // Delay 0.5 sec
      }

   }
}
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

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

Сообщение Soir »

AVT-28 писал(а):Проект нет смысла кидать. Там нет опроса клавиш. Могу кинуть то что надо доработать и что у меня не работает..
...
ANS12 = 0; // Set RB0 as digital port
...
// теперь я к этому добавляю вот так и это НЕ РАБОТАЕТ.

if(RB1==0) // Switch at RB0 press?
...

Трудно без схемы понять, как подключена клавиатура. Во вложении простой проект - пример опроса кнопок и вывод на дисплей номера нажатой кнопки. Если пользуетесь Proteus, то будет все наглядно.
В Вашем исходнике RB1-RB5 не сконфигурированы как цифровые входа.
Кстати
ANS12 = 0; - не относится к RB0...
Вложения
16F887.ZIP
(68.66 КБ) 121 скачивание
IRF840
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пн сен 25, 2006 17:47:10

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

Сообщение IRF840 »

Хочу попросить знающих людей - нужно получить hex файл из программы на Си. Хочу сделать передатчик к трассоискателю, но в описании к конструкции (
Underground locator generator for Radiodetection® RD400 LLTS Precision Line Trace unit (underground cable locator) (это ее название) только программа на Си.
Вложения
Программа.txt
(2.38 КБ) 200 скачиваний
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

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

Сообщение Soir »

IRF840 писал(а):...нужно получить hex файл из программы на Си...

Нужно установить CCS PIC C и откомпилировать данный файл.
Вот, что у меня получилось.
Вложения
Test.zip
(647 байт) 126 скачиваний
IRF840
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пн сен 25, 2006 17:47:10

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

Сообщение IRF840 »

Soir писал(а):
IRF840 писал(а):...нужно получить hex файл из программы на Си...

Нужно установить CCS PIC C и откомпилировать данный файл.
Вот, что у меня получилось.


Спасибо, выручили.

Я еще хочу уточнить - в программе фигурирует PIC16F628A, а на схеме у автора PIC16F628 (без А). Надо ставить именно PIC16F628A (полагая, что в схеме ошибка)? Посмотрел его другие схемы - там все совпадает, вот теперь в раздумьях - как будет правильно?
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

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

Сообщение Soir »

IRF840 писал(а):Я еще хочу уточнить - в программе фигурирует PIC16F628A, а на схеме у автора PIC16F628 (без А). Надо ставить именно PIC16F628A (полагая, что в схеме ошибка)? Посмотрел его другие схемы - там все совпадает, вот теперь в раздумьях - как будет правильно?

Вникать в программу как-то лень. Думаю, должен быть PIC16F628A, раз прошивка для него. Об отличиях PIC16F628 и PIC16F628A можно почитать здесь: http://www.microchip.ru/files/d-sheets-rus/PIC16F62x-PIC16F6xxA.pdf
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Подскажите - почему то вот такая конструкция не выключает UARTы в atmega128

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

void UART_switch(unsigned char U0,unsigned char U1 ,unsigned char _switch)
{
if (U0==1)
        {
        if (_switch==0)
                {
                UCSR0B &=~((1<<4)|(1<<3));
                }
                else
                {
                UCSR0B |=(1<<4)|(1<<3);
                };
        };
if (U1==1)
        {
        if (_switch==0)
                {
                UCSR1B &=~((1<<4)|(1<<3));
                }
                else
                {
                UCSR1B |=(1<<4)|(1<<3);
                };
        };

};


Т.е. надо просто сбрасывать в 0 ( насколько я понял) биты RXEN TXEN в регистре UCSRxB ?
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

demiurg301 писал(а):Т.е. надо просто сбрасывать в 0 ( насколько я понял) биты RXEN TXEN в регистре UCSRxB ?


Смотря какие цели. Иногда больше подходит запрещение соответствующих прерываний.

P.S. Лучше писать так, читабельней будет:

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

UCSR0B &= ~((1 << RXEN0) | (1 << TXEN0));
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Не , мне надо отключать, чтобы батарею в powerdown не жрало. А оно не выключает...
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

Тогда и на портах при отключенном UART нужно уровни правильные выставить.
Аватара пользователя
ANALOG
Мучитель микросхем
Сообщения: 444
Зарегистрирован: Вс ноя 28, 2010 15:18:52
Откуда: Минск

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

Сообщение ANALOG »

olegators68 писал(а):
ANALOG писал(а):Наверное, я не точно выразился: У меня в USBasp не прошит управляющий контроллер и я его пытаюсь прошить с помощью громова, через Uniprof, но что-то не получается :cry:

В питалоее 8-й меги либо "корявъ" СОМ-порт, машина если Б/М современная , порт типа нубук, не тянет. LРТ пробуем с внешним питаловом.

Через ЛПТ всё нормально прошилось, USBasp работает хорошо (можете меня поздравить, это мой первый девайс на МК), но с некоторыми глюками:
1. работает только с установленной перемычкой "тормоз"
2. работает не со всеми портами на компе
3. Когда комп стоит на зарядке, работает только через хаб
Я так думаю, что это из-за отсутствия стабилитронов? (планирую в ближайшем будущем их поставить)
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Ничегонеработает писал(а):Тогда и на портах при отключенном UART нужно уровни правильные выставить.


Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...

При этом если просто обнулить все регистры портов - всё отключается - и потребление становится 16 мкА.
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

demiurg301 писал(а):Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...


А разве так можно? Получаются висящие в воздухе КМОП-входы. Если снаружи подключена какая-то цепь, фиксирующая уровень, тогда можно. А если, например, выход TXD подключен на чей-то КМОП-вход? Тогда вся цепь будет висеть в воздухе, будут бороться утечки, и если уровень окажется где-то посередине питания, потребление подскочит.

demiurg301 писал(а):При этом если просто обнулить все регистры портов - всё отключается - и потребление становится 16 мкА.


Тогда не понял, в чем проблема?
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение demiurg301 »

Ничегонеработает писал(а):
demiurg301 писал(а):Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...


А разве так можно? Получаются висящие в воздухе КМОП-входы. Если снаружи подключена какая-то цепь, фиксирующая уровень, тогда можно. А если, например, выход TXD подключен на чей-то КМОП-вход? Тогда вся цепь будет висеть в воздухе, будут бороться утечки, и если уровень окажется где-то посередине питания, потребление подскочит.

demiurg301 писал(а):При этом если просто обнулить все регистры портов - всё отключается - и потребление становится 16 мкА.


Тогда не понял, в чем проблема?


Хм, вроде получается "разрыв"? Всмысле высокомная линия...

ФОрмировать на выход "нуля"? Тогда же будут утечки логического нуля? Или нет?


Проблема в том что вот так всё отключает:

UCSR0A=0x00;
UCSR0B=0x00;
UCSR0C=0x00;
UBRR0H=0x00;
UBRR0L=0x00;

UCSR1A=0x00;
UCSR1B=0x00;
UCSR1C=0x00;
UBRR1H=0x00;
UBRR1L=0x00;

А код , который я привёл выше, не отключает... Порты изначально выставлены в высокоомное состояние...
Аватара пользователя
O-LED
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57
Контактная информация:

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

Сообщение O-LED »

подскажите, что произойдет если запустить преобразование АЦП, и не дождавшись конца преобразования, вывод этого ацп сделать выходом, допустим с логической единицей. Что будет в регистре данных АЦП (ADCH, ADCL)
??
KIT
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20091
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

O-LED писал(а):Что будет в регистре данных АЦП (ADCH, ADCL)??

А самому проверить? :) Могу предположить, что вы спрашиваете про АВР. Тут возможны как минимум два варианта: 1. АЦП завершит преобразование, и порт поменяет своё назначение только после этого (тогда данные будут корректные) или же 2. в регистрах рехультата будет полная лажа.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Necroteeth
Потрогал лапой паяльник
Сообщения: 362
Зарегистрирован: Вс окт 10, 2010 17:43:48
Откуда: Воронеж

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

Сообщение Necroteeth »

Продолжаю мудрить. МК Атмега16 считает количество срабатываний геркона и это число динамически выводит на 2 7-сегментных индикатора с общим анодом. "Шина данных" на порту А, катод подключается PD5 и PD6, общая точка геркона и резистора идет на PB1 (используется как T1).
Проблема: за одно срабатываение геркона происходит инкремент на ДВА, а не на один, как надо :( в симуляторе АВР студии счетчик вроде отрабатывает как надо. Если у кого-нибудь есть желание глянуть, в чем я ошибся, выкладываю архив проэкта с условной схемой в Пэйнте.
Я не спец в герконах, посему посмотрел на осциллографе, нету ли левых переключений - переключение идеально, фронты ровнейшие
Вложения
7Seg_counter.zip
(35.06 КБ) 127 скачиваний
Последний раз редактировалось Necroteeth Пн окт 03, 2011 08:53:37, всего редактировалось 1 раз.
Ответить

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