В питалоее 8-й меги либо "корявъ" СОМ-порт, машина если Б/М современная , порт типа нубук, не тянет. LРТ пробуем с внешним питаловом.ANALOG писал(а):Наверное, я не точно выразился: У меня в USBasp не прошит управляющий контроллер и я его пытаюсь прошить с помощью громова, через Uniprof, но что-то не получается
Мелкие вопросы по МК и ПЛИС.
Вот блин, опять в галерее картину малевича вверх ногами повесили.
- Реклама
Сразу так слабо было написать? Читайте раздел даташита про таймеры.Necroteeth писал(а):upd: я имел в виду, что контроллер у меня тактируется внутренним генератором, а сигналы с ноги T1 просто считает, т.е. падающий фронт T1 является тиком для Таймера1
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Может так?AVT-28 писал(а):...по нажатию кнопки в программе что бы например появилась единичка на PORTB 0b00100000.
Код: Выделить всё
RB3 = RE3Кидайте весь проект, будем разбираться.
- Сообщения: 378
- Зарегистрирован: Вс сен 11, 2011 12:35:11
Проект нет смысла кидать. Там нет опроса клавиш. Могу кинуть то что надо доработать и что у меня не работает..
Код: Выделить всё
#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
}
}
}
Трудно без схемы понять, как подключена клавиатура. Во вложении простой проект - пример опроса кнопок и вывод на дисплей номера нажатой кнопки. Если пользуетесь Proteus, то будет все наглядно.AVT-28 писал(а):Проект нет смысла кидать. Там нет опроса клавиш. Могу кинуть то что надо доработать и что у меня не работает..
...
ANS12 = 0; // Set RB0 as digital port
...
// теперь я к этому добавляю вот так и это НЕ РАБОТАЕТ.
if(RB1==0) // Switch at RB0 press?
...
В Вашем исходнике RB1-RB5 не сконфигурированы как цифровые входа.
Кстати
ANS12 = 0; - не относится к RB0...
- Вложения
-
- 16F887.ZIP
- (68.66 КБ) 122 скачивания
- Реклама
- Сообщения: 190
- Зарегистрирован: Пн сен 25, 2006 17:47:10
Хочу попросить знающих людей - нужно получить hex файл из программы на Си. Хочу сделать передатчик к трассоискателю, но в описании к конструкции (
Underground locator generator for Radiodetection® RD400 LLTS Precision Line Trace unit (underground cable locator) (это ее название) только программа на Си.
Underground locator generator for Radiodetection® RD400 LLTS Precision Line Trace unit (underground cable locator) (это ее название) только программа на Си.
- Вложения
-
- Программа.txt
- (2.38 КБ) 202 скачивания
Нужно установить CCS PIC C и откомпилировать данный файл.IRF840 писал(а):...нужно получить hex файл из программы на Си...
Вот, что у меня получилось.
- Вложения
-
- Test.zip
- (647 байт) 127 скачиваний
- Сообщения: 190
- Зарегистрирован: Пн сен 25, 2006 17:47:10
Спасибо, выручили.Soir писал(а):Нужно установить CCS PIC C и откомпилировать данный файл.IRF840 писал(а):...нужно получить hex файл из программы на Си...
Вот, что у меня получилось.
Я еще хочу уточнить - в программе фигурирует PIC16F628A, а на схеме у автора PIC16F628 (без А). Надо ставить именно PIC16F628A (полагая, что в схеме ошибка)? Посмотрел его другие схемы - там все совпадает, вот теперь в раздумьях - как будет правильно?
Вникать в программу как-то лень. Думаю, должен быть PIC16F628A, раз прошивка для него. Об отличиях PIC16F628 и PIC16F628A можно почитать здесь: http://www.microchip.ru/files/d-sheets- ... 6F6xxA.pdfIRF840 писал(а):Я еще хочу уточнить - в программе фигурирует PIC16F628A, а на схеме у автора PIC16F628 (без А). Надо ставить именно PIC16F628A (полагая, что в схеме ошибка)? Посмотрел его другие схемы - там все совпадает, вот теперь в раздумьях - как будет правильно?
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Подскажите - почему то вот такая конструкция не выключает UARTы в atmega128
Т.е. надо просто сбрасывать в 0 ( насколько я понял) биты RXEN TXEN в регистре UCSRxB ?
Код: Выделить всё
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);
};
};
};Смотря какие цели. Иногда больше подходит запрещение соответствующих прерываний.demiurg301 писал(а):Т.е. надо просто сбрасывать в 0 ( насколько я понял) биты RXEN TXEN в регистре UCSRxB ?
P.S. Лучше писать так, читабельней будет:
Код: Выделить всё
UCSR0B &= ~((1 << RXEN0) | (1 << TXEN0));- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Не , мне надо отключать, чтобы батарею в powerdown не жрало. А оно не выключает...
Тогда и на портах при отключенном UART нужно уровни правильные выставить.
Через ЛПТ всё нормально прошилось, USBasp работает хорошо (можете меня поздравить, это мой первый девайс на МК), но с некоторыми глюками:olegators68 писал(а):В питалоее 8-й меги либо "корявъ" СОМ-порт, машина если Б/М современная , порт типа нубук, не тянет. LРТ пробуем с внешним питаловом.ANALOG писал(а):Наверное, я не точно выразился: У меня в USBasp не прошит управляющий контроллер и я его пытаюсь прошить с помощью громова, через Uniprof, но что-то не получается
1. работает только с установленной перемычкой "тормоз"
2. работает не со всеми портами на компе
3. Когда комп стоит на зарядке, работает только через хаб
Я так думаю, что это из-за отсутствия стабилитронов? (планирую в ближайшем будущем их поставить)
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...Ничегонеработает писал(а):Тогда и на портах при отключенном UART нужно уровни правильные выставить.
При этом если просто обнулить все регистры портов - всё отключается - и потребление становится 16 мкА.
А разве так можно? Получаются висящие в воздухе КМОП-входы. Если снаружи подключена какая-то цепь, фиксирующая уровень, тогда можно. А если, например, выход TXD подключен на чей-то КМОП-вход? Тогда вся цепь будет висеть в воздухе, будут бороться утечки, и если уровень окажется где-то посередине питания, потребление подскочит.demiurg301 писал(а):Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...
Тогда не понял, в чем проблема?demiurg301 писал(а):При этом если просто обнулить все регистры портов - всё отключается - и потребление становится 16 мкА.
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Хм, вроде получается "разрыв"? Всмысле высокомная линия...Ничегонеработает писал(а):А разве так можно? Получаются висящие в воздухе КМОП-входы. Если снаружи подключена какая-то цепь, фиксирующая уровень, тогда можно. А если, например, выход TXD подключен на чей-то КМОП-вход? Тогда вся цепь будет висеть в воздухе, будут бороться утечки, и если уровень окажется где-то посередине питания, потребление подскочит.demiurg301 писал(а):Так там и стоит DDRD=0x00 PORTD=0x00 , т.е. "разрыв"...
Тогда не понял, в чем проблема?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
подскажите, что произойдет если запустить преобразование АЦП, и не дождавшись конца преобразования, вывод этого ацп сделать выходом, допустим с логической единицей. Что будет в регистре данных АЦП (ADCH, ADCL)
??
??
KIT
А самому проверить?O-LED писал(а):Что будет в регистре данных АЦП (ADCH, ADCL)??
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Продолжаю мудрить. МК Атмега16 считает количество срабатываний геркона и это число динамически выводит на 2 7-сегментных индикатора с общим анодом. "Шина данных" на порту А, катод подключается PD5 и PD6, общая точка геркона и резистора идет на PB1 (используется как T1).
Проблема: за одно срабатываение геркона происходит инкремент на ДВА, а не на один, как надо
в симуляторе АВР студии счетчик вроде отрабатывает как надо. Если у кого-нибудь есть желание глянуть, в чем я ошибся, выкладываю архив проэкта с условной схемой в Пэйнте.
Я не спец в герконах, посему посмотрел на осциллографе, нету ли левых переключений - переключение идеально, фронты ровнейшие
Проблема: за одно срабатываение геркона происходит инкремент на ДВА, а не на один, как надо
Я не спец в герконах, посему посмотрел на осциллографе, нету ли левых переключений - переключение идеально, фронты ровнейшие
- Вложения
-
- 7Seg_counter.zip
- (35.06 КБ) 128 скачиваний
Последний раз редактировалось Necroteeth Пн окт 03, 2011 08:53:37, всего редактировалось 1 раз.


