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

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

Сообщение olegators68 »

ANALOG писал(а):Наверное, я не точно выразился: У меня в USBasp не прошит управляющий контроллер и я его пытаюсь прошить с помощью громова, через Uniprof, но что-то не получается :cry:
В питалоее 8-й меги либо "корявъ" СОМ-порт, машина если Б/М современная , порт типа нубук, не тянет. LРТ пробуем с внешним питаловом.
Вот блин, опять в галерее картину малевича вверх ногами повесили.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Necroteeth писал(а):upd: я имел в виду, что контроллер у меня тактируется внутренним генератором, а сигналы с ноги T1 просто считает, т.е. падающий фронт T1 является тиком для Таймера1
Сразу так слабо было написать? Читайте раздел даташита про таймеры.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Chettuser

Сообщение Chettuser »

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

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

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

Сообщение 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
		}

	}
}
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

Сообщение 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 КБ) 122 скачивания
Реклама
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пн сен 25, 2006 17:47:10

Сообщение IRF840 »

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

Сообщение Soir »

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

Сообщение IRF840 »

Soir писал(а):
IRF840 писал(а):...нужно получить hex файл из программы на Си...
Нужно установить CCS PIC C и откомпилировать данный файл.
Вот, что у меня получилось.
Спасибо, выручили.

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

Сообщение Soir »

IRF840 писал(а):Я еще хочу уточнить - в программе фигурирует PIC16F628A, а на схеме у автора PIC16F628 (без А). Надо ставить именно PIC16F628A (полагая, что в схеме ошибка)? Посмотрел его другие схемы - там все совпадает, вот теперь в раздумьях - как будет правильно?
Вникать в программу как-то лень. Думаю, должен быть PIC16F628A, раз прошивка для него. Об отличиях PIC16F628 и PIC16F628A можно почитать здесь: http://www.microchip.ru/files/d-sheets- ... 6F6xxA.pdf
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Сообщение 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
Откуда: Минск

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

demiurg301 писал(а):Т.е. надо просто сбрасывать в 0 ( насколько я понял) биты RXEN TXEN в регистре UCSRxB ?
Смотря какие цели. Иногда больше подходит запрещение соответствующих прерываний.

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

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

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

Сообщение demiurg301 »

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

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

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

Сообщение ANALOG »

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

Сообщение demiurg301 »

Ничегонеработает писал(а):Тогда и на портах при отключенном UART нужно уровни правильные выставить.
Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...

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

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

demiurg301 писал(а):Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...
А разве так можно? Получаются висящие в воздухе КМОП-входы. Если снаружи подключена какая-то цепь, фиксирующая уровень, тогда можно. А если, например, выход TXD подключен на чей-то КМОП-вход? Тогда вся цепь будет висеть в воздухе, будут бороться утечки, и если уровень окажется где-то посередине питания, потребление подскочит.
demiurg301 писал(а):При этом если просто обнулить все регистры портов - всё отключается - и потребление становится 16 мкА.
Тогда не понял, в чем проблема?
Контактная информация:
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Сообщение 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;

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

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

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

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

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

Сообщение Necroteeth »

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

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