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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

В dallas извращенцы сидят... У всех нормальных людей в SPI линия называется (n)CSx и активной считается при "0", а у них она RST и активной считается "1" :facepalm: :))) Да еще и MOSI с MISO объединили...
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Реклама
Родился
Сообщения: 3
Зарегистрирован: Ср июн 04, 2014 19:45:50
Откуда: Санкт-петербург

Сообщение pibyk »

Посоветуйте с чего именно мне начать знакомство с МК? Хочу очень изучить все это
Реклама
Опытный кот
Аватара пользователя
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Сообщение Pavel_1978 »

pibyk писал(а):Посоветуйте с чего именно мне начать знакомство с МК? Хочу очень изучить все это
А что именно интересно? что есть?
Друг Кота
Аватара пользователя
Сообщения: 3795
Зарегистрирован: Ср дек 24, 2008 09:58:58

Сообщение Ser60 »

pibyk - Вам, наверное, лучше сюда: http://radiokot.ru/forum/viewtopic.php?f=62&t=33
Реклама
Эиком - электронные компоненты и радиодетали
Chettuser

Сообщение Chettuser »

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

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

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

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

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

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

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

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

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

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


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

Сообщение ximik »

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

Сообщение Alexeyslav »

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

Сообщение ximik »

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

Сообщение Alexeyslav »

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

Сообщение Chettuser »

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

Сообщение pyzhman »

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

Сообщение Alexeyslav »

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

Сообщение pyzhman »

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

Сообщение Alexeyslav »

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

Сообщение 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;
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 КБ) 306 скачиваний
hell.png
1
(53.32 КБ) 268 скачиваний
Контактная информация:
Ответить

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