Мелкие вопросы по МК и ПЛИС.
Re: Мелкие вопросы по МК и ПЛИС.
Есть. Но нет ограничений на 8-разрядный адрес.
у меня тогда такой вопрос, кто или что, устанавливает разрядность адреса?
не пойму как цитаты вставлять правильно..
у меня тогда такой вопрос, кто или что, устанавливает разрядность адреса?
не пойму как цитаты вставлять правильно..
Re: Мелкие вопросы по МК и ПЛИС.
Gudd-Head писал(а):Gmp писал(а):так а сколько же?
2 байта. Просто старший байт адреса ОЗУ полагается равным нулю.
правильно ли я понимаю:
1. адреса регистровой памяти записываются числом в 1 байт- с размером информации по каждому адресу в 1 байт
2. адреса SRAM - 2 байта, с размером информации по каждому адресу в 1 байт
3. FLASH- ячейки адресов не имеют, но в каждую из них нужно записать 2 байта информации.. или имеют адреса?
4. EEPROM - аналогично FLASH?
простите за терминалогию
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Gmp писал(а):Gudd-Head писал(а):Gmp писал(а):так а сколько же?
2 байта. Просто старший байт адреса ОЗУ полагается равным нулю.
правильно ли я понимаю:
1. адреса регистровой памяти записываются числом в 1 байт- с размером информации по каждому адресу в 1 байт
2. адреса SRAM - 2 байта, с размером информации по каждому адресу в 1 байт
3. FLASH- ячейки адресов не имеют, но в каждую из них нужно записать 2 байта информации.. или имеют адреса?
4. EEPROM - аналогично FLASH?
простите за терминалогию
1. так и есть
2. если SRAM превышает 256 байт, как в старших моделях
3. FLASH имеют словную (2 байта) адресацию, команды занимают минимум 1 слово
4. аналогично SRAM
Re: Мелкие вопросы по МК и ПЛИС.
спасибо за ответы
Re: Мелкие вопросы по МК и ПЛИС.
Нет, в отладчике не пробовал. на макетке проще - схема не велика. может кто-нить поможет все таки?
- Вложения
-
- программа дистанционной сигнализации.doc
- (48.5 КБ) 319 скачиваний
Лень - двигатель прогресса!
- zvykov
- Встал на лапы
- Сообщения: 86
- Зарегистрирован: Чт апр 02, 2009 01:18:09
- Откуда: Минск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Привет всем!!!!!!Назрел такой вопросец: сколько виртуальных шин i2c можно организовать в мк, и можно ли вовсе это сделать, знаю, что если есть аппаратная шина i2c можно сделать еще одну виртуальную, дак вот вопрос можно ли более одной виртуальной шины организовать. Просто есть 4 микрухи с одинаковыми адресами (адрес не меняется), но писать в них надо не одновременно. можно использовать и коммутатор шин, но хотелось бы все же задействовать ноги мк, а не приделывать левые микрухи. Подскажите кто чего думает, контроллер еще не выбран, так что можете чего посоветовать, если это можно вообще реализовать, Заранее благодарен.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
программно можно реализовать сколько угодно шин I2C - на сколько ног МК хватит.
битва с дураками проиграна, победители торжествуют. слава победителям!
- zvykov
- Встал на лапы
- Сообщения: 86
- Зарегистрирован: Чт апр 02, 2009 01:18:09
- Откуда: Минск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
а это сильно усложнит код программы??? и еще можно ли будет иметь функцию одновременной записи данных во все микрухи, или если они будут на разных шинах то писать в них одновременно нельзя, сильно прошу не пинать за вопросы, еще только учусь программированию.
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Собрал програматор, а КониПрог его не видит. Всё проерил, перепаял, просмотрел, обдумал, третий раз пробую -- ничего!!!!!!!!!
Что мне делать?!
Что мне делать?!
- Вложения
-
- Проггер.png
- Программатор!
- (18.7 КБ) 345 скачиваний
Re: Мелкие вопросы по МК и ПЛИС.
Подскажите пожалуйста, как сделать генератор импульсов на микроконтр., чтобы заданное число импульсов выдавал, например при подсоединении к нему клавиатуры и нажатии на соотв. кнопку.. вникаю в таймеры - ниче пока не понимаю, с чего начинать, куда смотреть?
Лень - двигатель прогресса!
Re: Мелкие вопросы по МК и ПЛИС.
zvykov писал(а):а это сильно усложнит код программы??? и еще можно ли будет иметь функцию одновременной записи данных во все микрухи, или если они будут на разных шинах то писать в них одновременно нельзя, сильно прошу не пинать за вопросы, еще только учусь программированию.
Да как хочешь, так и делай. Хочешь одновременно, хочешь - последовательно. А усложнит или нет - реализуй один программный канал, и сам поймёшь
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
zvykov писал(а):а это сильно усложнит код программы?
Программный порт I2C выглядит примерно так:
Код: Выделить всё
//---------- Константы: ----------
#define I2C_QP_DELAY 2.5 //I2C quarter period delay 2.5 us
#define I2C_HP_DELAY 5.0 //I2C half period delay 5 us
//---------- Генерация условия "Старт": ----------
void I2C_Start(void)
{
Port_SDA_0; //force SDA low
Delay_us(I2C_QP_DELAY); //quarter period delay
}
//---------- Передача байта по I2C: ----------
bool I2C_Wr(char b)
{
bool ask = 0;
for(char i = 0; i < 8; i++)
{
Port_SCL_0; //force SCL low
if(b & 0x80)
Port_SDA_Z; //release SDA
else Port_SDA_0; //force SDA low
b = b << 1;
Delay_us(I2C_HP_DELAY); //half period delay
Port_SCL_1; //release SCL
Delay_us(I2C_HP_DELAY); //half period delay
}
Port_SCL_0; //force SCL low
__delay_cycles(2); //delay
Port_SDA_Z; //release SDA
Delay_us(I2C_HP_DELAY); //half period delay
Port_SCL_1; //release SCL
Delay_us(I2C_HP_DELAY); //half period delay
if(!Pin_SDA) ask = 1; //receive ASK
Delay_us(I2C_HP_DELAY); //half period delay
return(ask);
}
//---------- Чтение байта данных по I2C + ACK: ----------
char I2C_RdAck(void)
{
char data;
for(char i = 0; i < 8; i++)
{
Port_SCL_0; //force SCL low
__delay_cycles(2); //delay
Port_SDA_Z; //release SDA
Delay_us(I2C_HP_DELAY); //half period delay
Port_SCL_1; //release SCL
Delay_us(I2C_HP_DELAY); //half period delay
data = data << 1; //shift data
if(Pin_SDA) data |= 0x01; //input data bit
}
Port_SCL_0; //force SCL low
__delay_cycles(2); //delay
Port_SDA_0; //force SDA low (ASK=0)
Delay_us(I2C_QP_DELAY); //quarter period delay
Port_SCL_1; //release SCL
Delay_us(I2C_HP_DELAY); //half period delay
return(data);
}
//---------- Чтение байта данных по I2C + NAK: ----------
char I2C_RdNak(void)
{
char data;
for(char i = 0; i < 8; i++)
{
Port_SCL_0; //force SCL low
__delay_cycles(2); //delay
Port_SDA_Z; //release SDA
Delay_us(I2C_HP_DELAY); //half period delay
Port_SCL_1; //release SCL
Delay_us(I2C_HP_DELAY); //half period delay
data = data << 1; //shift data
if(Pin_SDA) data |= 0x01; //input data bit
}
Port_SCL_0; //force SCL low
Delay_us(I2C_HP_DELAY); //half period delay
Port_SCL_1; //release SCL
Delay_us(I2C_HP_DELAY); //half period delay
return(data);
}
//---------- Генерация условия "Стоп": ----------
void I2C_Stop(void)
{
Port_SCL_0; //force SCL low
__delay_cycles(2); //delay
Port_SDA_0; //force SDA low
Delay_us(I2C_HP_DELAY); //half period delay
Port_SCL_1; //release SCL
Delay_us(I2C_QP_DELAY); //quarter period delay
Port_SDA_Z; //release SDA
Delay_us(I2C_HP_DELAY); //half period delay
}
//----------
- К@Т
- Говорящий с текстолитом
- Сообщения: 1573
- Зарегистрирован: Сб окт 09, 2010 12:33:48
- Откуда: Незалежная
Re: Мелкие вопросы по МК и ПЛИС.
Добрый день коты и кошечки.Начал изучать си,в мплаб впихнул компилятор без оганичения кода и получил следующую картину 

Что я не так сделал?
Что я не так сделал?
- Вложения
-
- 1.jpg
- (86.58 КБ) 728 скачиваний
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Re: Мелкие вопросы по МК и ПЛИС.
Ничегонеработает писал(а):zvykov писал(а):а это сильно усложнит код программы?
Программный порт I2C выглядит примерно так:
Вот так на ассемблере (тут пример для DS1307, но работа практически полная - чтение/запись):
Код: Выделить всё
;=========================
; Работа с IIC
;=========================
iic_10clock: ; даёт 10 тактовых импульсов на линию
ldi rx1,10 ; для приведения в чувства slave'а
iic_10_1: ; после перезагрузки или подачи питания
pull_scl
rcall iic_delay
release_scl
dec rx1
brne iic_10_1
ret
;----------
iic_full_reset:
ldi XH,high(clock_buf) ; полный сброс часов
ldi XL,low(clock_buf)
ldi rx1,7
full_res1:
st X+,null
dec rx1
brne full_res1
rcall transmit_iic
rjmp reset
ret
;----------
iic_test_sda: ; проверка занятости SDA
clt ; устанавливает флаг Т если линия занята
sbis sda_pin,sda_bit
set
ret
;----------
iic_test_scl: ; проверка занятости SCL
clt ; устанавливает флаг Т если линия занята
sbis scl_pin,scl_bit
set
ret
;----------
iic_test2line: ; проверка занятости двух линий
rcall iic_test_sda ; если хоть одна занята, ставится флаг T
brtc iic_test2line0
ret
iic_test2line0:
rcall iic_test_scl
ret
;----------
iic_delay: ; простая задержка
ldi del,delay
i2c_delay0:
dec del
brne i2c_delay0
ret
;----------
iic_start: ; даёт на линию команду start
pull_sda
rcall iic_delay
pull_scl
rcall iic_delay
release_sda
ret
;----------
iic_stop: ; даёт на линию команду stop
pull_sda
rcall iic_delay
release_scl
rcall iic_delay
release_sda
ret
;----------
iic_check_ask: ; Проверяет сигнал ASK на линии
release_sda ; Если есть - ставит бит T
rcall iic_delay
release_scl
rcall iic_delay
rcall iic_test_sda
pull_scl
pull_sda
ret
;----------
transmit_iic: ; Передача 7-ми байтного буфера
ldi XH,high(clock_buf)
ldi XL,low(clock_buf)
rcall iic_test2line ; если хоть одна линия занята
brts iic_error0 ; выводится ошибка 0 и зацикливается
rcall iic_start ; даётся на линию start
ldi rx1,write1307adr ; ; передаётся адрес и команду на запись
rcall send_byte
clr rx1 ; адрес, с какого писать (ноль)
rcall send_byte
ldi rx9,7
tr_iic_0: ; пересылаем весь буфер
ld rx1, X+
rcall send_byte
dec rx9
brne tr_iic_0
rcall iic_stop ; отправляется stop на линию
ret
;----------
send_byte: ; отправка байта
; в rx1 должен быть пересылаемый байт
ldi rx2,8 ; обе линии в нуле
send_byte_0:
mov rx3,rx1
andi rx3,128 ; выделим старший бит.
breq send_byte_1 ; если он в нуле, оставляем линии как есть
release_sda ; иначе поднимаем SDA
send_byte_1:
rcall iic_delay
release_scl
rcall iic_delay
pull_scl
rcall iic_delay
pull_sda
lsl rx1
dec rx2
brne send_byte_0
rcall iic_delay ; Слушаем ASK. Если нет - ошибка 1
rcall iic_check_ask
brtc iic_error1
ret
Re: Мелкие вопросы по МК и ПЛИС.
К@Т писал(а):Начал изучать си,в мплаб впихнул компилятор без оганичения кода и получил следующую картину
Что я не так сделал?
#include <pic.h>
void main() {
}
- К@Т
- Говорящий с текстолитом
- Сообщения: 1573
- Зарегистрирован: Сб окт 09, 2010 12:33:48
- Откуда: Незалежная
Re: Мелкие вопросы по МК и ПЛИС.
Soir писал(а):К@Т писал(а):Начал изучать си,в мплаб впихнул компилятор без оганичения кода и получил следующую картину
Что я не так сделал?
#include <pic.h>
void main() {
}
тоже самое выдаёт
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Re: Мелкие вопросы по МК и ПЛИС.
Ещё есть какие-нибуть идеи?
А если на ошибку посмотреть, ничего не проясняется? Или нафиг не надо на них смотреть?
Компилятор-то активирован?
- К@Т
- Говорящий с текстолитом
- Сообщения: 1573
- Зарегистрирован: Сб окт 09, 2010 12:33:48
- Откуда: Незалежная
Re: Мелкие вопросы по МК и ПЛИС.
ploop писал(а):
Компилятор-то активирован?
Не понял вопроса
Или ещё надо чтото делать чтобы его активировать?Запускаем HI-TECH_PICC_9.50_PL2.exe. Папка назначения «C:Program Files» + Извлечь. Происходит распаковка. После распаковки запускаем
C:\Program Files\HI-TECH Software\PICC\9.50\resources\PICC9.50PL2_REG.reg
и добавляем информацию в реестр. Далее запускаем конфигуратор
C:\Program Files\HI-TECH Software\PICC9.50\bin\MPLABConfig.exe
В окне указывается расположение папки C:\HTSOFT\MPLAB_toolsuites + Install . В следующем окне стоит галочка и предлагается сразу же запустить MPLAB IDE ; галочку оставляем и жмем Finish. Автоматически запускается оболочка MPLAB IDE.
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
- Antifritz
- Прорезались зубы
- Сообщения: 222
- Зарегистрирован: Чт июл 08, 2010 01:03:40
- Откуда: Украина, Киев
Re: Мелкие вопросы по МК и ПЛИС.
Помогите, пожалуйста, запустить ШИМ на ATTiny261A, а то уж очень он там навороченный. Мне нужен обычный Fast-PWM с выходами на ОС1А и ОС1В со сбросом, когда TCNT1 становиться больше OCR. Прочитал несколько раз даташит - с трудом запустил сам таймер (кто ж знал что ТОР хранится в ОСR1C), а вот на выходах ШИМ ничего не меняется. Можете кто-нибудь написать что должно находится в каком из регистров? Заранее благодарен!
Разобрался уже сам так и не понял где ошибка была, может кому понадобится:
ну а OCR1А и OCR1В какие нам нужно выставляем.
Разобрался уже сам так и не понял где ошибка была, может кому понадобится:
Код: Выделить всё
DDRB = 0b00001010;
TCCR1A = 0b10100011;
TCCR1B = 0b00000001;
TCCR1C = 0;
TCCR1D = 0;
OCR1C = 0xFF;
ну а OCR1А и OCR1В какие нам нужно выставляем.
Последний раз редактировалось Antifritz Ср окт 19, 2011 22:21:47, всего редактировалось 1 раз.
Re: Мелкие вопросы по МК и ПЛИС.
Не понял вопроса Я сделал так как в инструкции написано
Я не знаю, что за хренью вы пользуетесь, но он пишет явно, что не активирован. Дальше уж сами разбирайтесь. Или покупайте по честному.


