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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Chettuser

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

Сообщение Chettuser »

Чет нифига не пойму! В PIC16F887 вообще возможно сохранение таблицы в памяти программ аналогично PIC18м?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25156
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Да, возможно.
Только не очень удобно. Через байт получается 6 бит.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Возможно. Но обращение будет не как в PIC18 (табличное чтение), а через retlw. Собственно, при проганье на Си это по барабану :)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25156
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Аlex писал(а):Возможно. Но обращение будет не как в PIC18 (табличное чтение), а через retlw.

Именно как в 18-х. Табличное.
887-ой один из первых 16-х ПИКов с самопрограммированием. А значит можно читать флеш как данные через косвенную адресацию
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

КРАМ писал(а):Именно как в 18-х. Табличное.
Хм... , точно. Поспешил я с ответом, извиняюсь :roll:
Параграф 10.0 даташита, DATA EEPROM AND FLASH PROGRAM MEMORY CONTROL.
Chettuser

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

Сообщение Chettuser »

Мои нейроны забодала ошибка:
Error [1098] .... conflicting declarations for variable "_Lcd_puts" (D:\My designs\Dozer\Dozer.c:28)
(908) exit status = 1

Вызов этой функции изнутри Lcd_test(); проблем не вызывает, а вручную из void main() валит ошибками.
Заранее спасибо за желание помочь. :beer:


Отбой - я не там вписал используемые функции, всего то. :)))
Аватара пользователя
ximik
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Вс ноя 07, 2010 14:48:55
Откуда: Москва

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

Сообщение ximik »

Кто нибудь работал с таким синизубым модулем или чем нибудь оналогичным? xs3868 интересует общение по UART, как переименовать , вводить команды... я попробовал, забивать команды из даташита но на команды не реагирует, а отвечает какойто кашей. :kill: :kill хелп Изображение
Если болит голова, значит она есть!)
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Скорость передачи нужно правильную установить.
Аватара пользователя
ximik
Потрогал лапой паяльник
Сообщения: 301
Зарегистрирован: Вс ноя 07, 2010 14:48:55
Откуда: Москва

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

Сообщение ximik »

Alexeyslav писал(а): правильную установить.

скорость ставил рекомендуемую, я ее выделил, 8 дата бит, 1 стоп бип программа терминал 1.9
Вложения
58.jpg
(24.74 КБ) 215 скачиваний
Если болит голова, значит она есть!)
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

На заборе тоже написано... а там дрова лежат. Твой терминал не ругается на Framing error или другие ошибки? Посмотри осциллографом реально какая скорость в порту на выходе модуля, он ведь может быть настроен на ЛЮБУЮ скорость а не дефолтную. Кто его знает у кого и где он побывал прежде чем попасть к тебе. Обычно они приходят настроенные на 38400.
Chettuser

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

Сообщение Chettuser »

Мучает вопрос - для чего ставятся 2 конденсатора от кварца на общий? Собственно не знаю в какую тему вопрос - поскольку он и генераторов на логике с кварцем тоже касается.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Это своеобразный кикстартер.
Docendo discimus
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Конденсаторы являются частью генератора, они создают необходимый сдвиг фазы для того чтобы генератор смог работать устойчиво на основной частоте кварца. Без них он будет долго раскачиваться и может не завестись вовсе, или завестись на фундаментальной частоте кварца или на одной из его гармоник. Если посмотреть даташит на конкретный кварцевый резонатор там указываются оптимальные значения этих емкостей, с которыми кварц будет работать наиболее устойчиво.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Alexeyslav писал(а):Если посмотреть даташит на конкретный кварцевый резонатор

Поправлю - на конкретный микроконтроллер, ибо генератор в микрконтроллере.
Docendo discimus
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Нет, именно на кварцевый резонатор. эти конденсаторы являются одновременно элементами генератора и элементами эквивалентной схемы резонатора. Из-за их несоответствия резонатору последний может возбуждаться на неродной частоте или вовсе частота уйдет от номинала. В даташите на МК имеются номиналы РЕКОМЕНДУЕМЫЕ, а на кварцевый резонатор - оптимальные.
Аватара пользователя
sphincs
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь
Контактная информация:

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

Сообщение sphincs »

почему при передаче по UART получается так: при первой передаче от одного контроллера другому второй на дисплей выводит только 4 символа из N переданных? при последующих передачах все нормально.
передатчик
Спойлерvoid USART_transmitter(unsigned char data)
{
while ( ! ( UCSRA & (1<<UDRE)));
UCSRB &= ~(1<<TXB8);
if ( data & 0x100)
UCSRB |= (1<<TXB8);
UDR = data;
// PORTB.0=1;
}

void main(void)
unsigned char d[]={'h','e','l','l','o','-','m','i','r','\0'};
while (1)
if (PINC.2==1)
{
for (i=0; i<10; i++)
{
unsigned char symbol = d[i];
USART_transmitter(symbol);
}
//PORTB.0=0;
}


приемник
Спойлер// USART Receiver buffer
#define RX_BUFFER_SIZE 10
char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE <= 256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif

// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index++]=data;
lcd_out=1;

#if RX_BUFFER_SIZE == 256
// special case for receiver buffer size=256
if (++rx_counter == 0) rx_buffer_overflow=1;
#else
if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
}
#endif
}
}

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index++];
#if RX_BUFFER_SIZE != 256
if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#endif
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif

// Standard Input/Output functions
#include <stdio.h>

// Declare your global variables here

void main(void)
{
lcd_clear();

while (1)
{
// Place your code here
if (lcd_out==1)
{
lcd_clear();
lcd_puts(&rx_buffer[0]);
delay_ms(200);
lcd_out = 0;
rx_wr_index= 0;
rx_counter = 0;
}
}
}


скрины протеуса в прикрепленке

этот усарт меня убивает :(
Вложения
hello-mir.png
2
(51.22 КБ) 299 скачиваний
hell.png
1
(53.32 КБ) 261 скачивание
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

можно попробовать восстановить как нагенерил Codevision
т.е. убрать lcd_out=1;
и так сделать:

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

if (rx_buffer_overflow)
{
lcd_clear();
for (i=0; i<10; i++)
{
lcd_puts(&rx_buffer[i]);
}
//delay_ms(200); это зачем - пока пауза могут прийти данные с компорта многократно
rx_buffer_overflow = 0;
rx_wr_index= 0;
rx_counter = 0;
}

а вот когда посылаем надо выдержать паузу между посылками - пока микроконтроллер выводит на индикатор:

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

while (1)
if (PINC.2==1)
{
for (i=0; i<10; i++)
{
unsigned char symbol = d[i];
USART_transmitter(symbol);
}
delay_ms(200);
}
Аватара пользователя
sphincs
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь
Контактная информация:

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

Сообщение sphincs »

oleg110592 писал(а)://delay_ms(200); это зачем - пока пауза могут прийти данные с компорта многократно

я отправляю по нажатию кнопки пока что. паузы были потому что отслеживал выполнение программы светодиодами :)

премного благодарен. все заработало, но с небольшими комментариями:
конструкция

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

for (i=0; i<10; i++)
{
lcd_puts(&rx_buffer[i]);
}

не нужна. в rx_buffer хранится вся принятая строка и выходит так, что она целиком выводится на дисплей командой lcd_puts(&rx_buffer[0]). в случае for'a она просто 10 раз подряд пишется и с какими-то искажениями уже (индекс в скобках обозначает символ, с которого начинается передача строки. поставил экран побольше и проверил)
ну и задержка в передатчике понадобилась при исправленном приемнике (а то лишнее докидывал передатчик), хотя до этого и без нее обходилось, начиная со второй передачи :)
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

тогда наверное можно просто так выводить строку из массива:
lcd_puts(rx_buffer);
Аватара пользователя
sphincs
Нашел транзистор. Понюхал.
Сообщения: 174
Зарегистрирован: Вт сен 11, 2012 09:13:52
Откуда: Брест, Беларусь
Контактная информация:

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

Сообщение sphincs »

oleg110592 писал(а):lcd_puts(rx_buffer);

да, действительно работает
Ответить

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