Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
28.05.2012, 16:45
|
|
Временная регистрация
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
|
Софтовый UART для PIC12F675
Проблема при реализации софтового UART для pic12F675. Работаю на скорости 9600, соответственно задержка между битами данных 104 us. Какая должна быть задержка после выставления стоп-бита (при различных вариациях меняется отсылаемые данные), на терминале принимается полная фигня. Кому не сложно, подскажите, плиз, что я делаю не так.
void io_init()
{
TRISIO = 0b00000000;
GP4 = 0;
WPU4 = 0;
CMCON = 0x07;
ANSEL = 0x00;
}
void Soft_Uart_Init()
{
for (i = 0; i ‹ 8; i++)
{
__delay_us(104);
data1 = ((data ›› i) & 0x01);
if (data1 == 0x01)
{
GP4 = 0;
}
else
{
GP4 = 1;
}
}
}
void main (void)
{
io_init();
while(1)
{
data = 0x21;
GP4 = 1; // Start Bit
Soft_Uart_Init();
GP4 = 0; // Stop Bit
__delay_ms(1000);
//eewrite();
//test_port();
}
}
|
|
|
Сказали "Спасибо" Fair88Play
|
|
|
28.05.2012, 16:50
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
Ну кто же так коды выкладывает? Глаза сломать можно.
Вы знаете, сколько тактов занимает ваша строчка GP4=1?
На какой частоте работает контроллер?
Сколько тактов занимает data1 = ((data ›› i) & 0x01); ?
И откуда эта жуть?
if (data1 == 0x01)
И какой у вас компилятор?
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
28.05.2012, 16:56
|
|
Временная регистрация
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
Контроллер pic12F675 работает на частоте 4 Мгц от внутреннего генератора, сколько тактов занимает сказать не могу, поскольку очень плохо шарю, только разбираюсь, если подскажите как узнать, буду очень признателен. За выложенный код извиняюсь, пишу здесь первый раз, поэтому не знаю как выложить нормально. А жуть if (data1 == 0x01) проверяю какое значение выставлять на линию (0 или 1), или я не правильно пишу?
Компилятор Hi-TECH ANSI C Compiler
|
|
|
Сказали "Спасибо" Fair88Play
|
|
|
28.05.2012, 17:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
Вообще то, start_bit=0, а stop_bit=1, у Вас же наоборот.
Ну и естественно, надо изменить начальную инициализацию GP4 на обратную.
Последний раз редактировалось nonamedov; 28.05.2012 в 18:37.
|
|
|
Сказали "Спасибо" nonamedov
|
|
|
28.05.2012, 18:02
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
|
|
|
|
28.05.2012, 19:20
|
|
Вид на жительство
Регистрация: 16.09.2011
Сообщений: 343
Сказал спасибо: 10
Сказали Спасибо 171 раз(а) в 104 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
Сообщение от Fair88Play
|
сколько тактов занимает сказать не могу
|
Для этого нужно знать ассемблер и внутреннее устройство контроллера.
Каждая инструкция (за исключением инструкций перехода и проверки бит) выполняется на 4 такта осциллятора. Инструкции перехода выполняются за 8 тактов.
Если частота осциллятора 4 МГц, то одна инструкция будет выполняться за 1 мкс. Это инструкции микроконтроллера. А вот в Си одной строкой может быть выполнено несколько инструкций.
Последний раз редактировалось Bumbarra; 28.05.2012 в 20:25.
|
|
|
Сказали "Спасибо" Bumbarra
|
|
|
28.05.2012, 20:09
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
Fair88Play, Вам лень считать и разбираться ?
Hi Tech явно не для вас .
CCS и все заработает ...
__________________
Осторожно , злой кот
|
|
|
Сказали "Спасибо" dosikus
|
|
|
28.05.2012, 20:41
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
Сообщение от Bumbarra
|
А вот в Си одной строкой может быть выполнено несколько инструкций.
|
Это ж насколько СИ быстрее АСМа!!!
|
|
|
|
28.05.2012, 22:50
|
|
Временная регистрация
Регистрация: 28.05.2012
Сообщений: 51
Сказал спасибо: 0
Сказали Спасибо 32 раз(а) в 32 сообщении(ях)
|
Re: Софтовый UART для PIC12F675
Сообщение от dosikus
|
Fair88Play, Вам лень считать и разбираться ?
Hi Tech явно не для вас .
CCS и все заработает ...
|
Да нет, не лень, просто до этого никогда не сталкивался. Всем большое спасибо за ответы!
|
|
|
Сказали "Спасибо" Fair88Play
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:59.
|
|