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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Gmp
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 17, 2011 09:03:13

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

Сообщение Gmp »

Есть. Но нет ограничений на 8-разрядный адрес.


у меня тогда такой вопрос, кто или что, устанавливает разрядность адреса?

не пойму как цитаты вставлять правильно..
Реклама
Gmp
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 17, 2011 09:03:13

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

Сообщение Gmp »

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: Мелкие вопросы по МК и ПЛИС.

Сообщение GP1 »

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
Чем дальше, тем больше становлюсь занудой...
Изображение
Gmp
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Пн окт 17, 2011 09:03:13

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

Сообщение Gmp »

спасибо за ответы
Реклама
Эиком - электронные компоненты и радиодетали
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

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

Сообщение Челюскин »

Нет, в отладчике не пробовал. на макетке проще - схема не велика. может кто-нить поможет все таки?
Вложения
программа дистанционной сигнализации.doc
(48.5 КБ) 320 скачиваний
Лень - двигатель прогресса!
Реклама
Аватара пользователя
zvykov
Встал на лапы
Сообщения: 86
Зарегистрирован: Чт апр 02, 2009 01:18:09
Откуда: Минск
Контактная информация:

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

Сообщение zvykov »

Привет всем!!!!!!Назрел такой вопросец: сколько виртуальных шин i2c можно организовать в мк, и можно ли вовсе это сделать, знаю, что если есть аппаратная шина i2c можно сделать еще одну виртуальную, дак вот вопрос можно ли более одной виртуальной шины организовать. Просто есть 4 микрухи с одинаковыми адресами (адрес не меняется), но писать в них надо не одновременно. можно использовать и коммутатор шин, но хотелось бы все же задействовать ноги мк, а не приделывать левые микрухи. Подскажите кто чего думает, контроллер еще не выбран, так что можете чего посоветовать, если это можно вообще реализовать, Заранее благодарен.
Реклама
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

программно можно реализовать сколько угодно шин I2C - на сколько ног МК хватит.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
zvykov
Встал на лапы
Сообщения: 86
Зарегистрирован: Чт апр 02, 2009 01:18:09
Откуда: Минск
Контактная информация:

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

Сообщение zvykov »

а это сильно усложнит код программы??? и еще можно ли будет иметь функцию одновременной записи данных во все микрухи, или если они будут на разных шинах то писать в них одновременно нельзя, сильно прошу не пинать за вопросы, еще только учусь программированию.
Аватара пользователя
просто КОТ
Друг Кота
Сообщения: 12364
Зарегистрирован: Пт дек 17, 2010 15:07:50
Откуда: Крымский Федеральный Округ
Контактная информация:

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

Сообщение просто КОТ »

Собрал програматор, а КониПрог его не видит. Всё проерил, перепаял, просмотрел, обдумал, третий раз пробую -- ничего!!!!!!!!!
Что мне делать?!
Вложения
Проггер.png
Программатор!
(18.7 КБ) 345 скачиваний
Изображение
И ты врёшь!!! © Vladisman
Изображение
Челюскин
Прорезались зубы
Сообщения: 209
Зарегистрирован: Ср ноя 03, 2010 14:46:17

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

Сообщение Челюскин »

Подскажите пожалуйста, как сделать генератор импульсов на микроконтр., чтобы заданное число импульсов выдавал, например при подсоединении к нему клавиатуры и нажатии на соотв. кнопку.. вникаю в таймеры - ниче пока не понимаю, с чего начинать, куда смотреть?
Лень - двигатель прогресса!
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

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: Мелкие вопросы по МК и ПЛИС.

Сообщение К@Т »

Добрый день коты и кошечки.Начал изучать си,в мплаб впихнул компилятор без оганичения кода и получил следующую картину :shock:
Изображение
Что я не так сделал?
Вложения
1.jpg
(86.58 КБ) 728 скачиваний
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Ничегонеработает писал(а):
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
Soir
Друг Кота
Сообщения: 3956
Зарегистрирован: Ср окт 14, 2009 10:37:49
Откуда: Украина

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

Сообщение Soir »

К@Т писал(а):Начал изучать си,в мплаб впихнул компилятор без оганичения кода и получил следующую картину :shock:
Что я не так сделал?

#include <pic.h>
void main() {
}
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

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

Сообщение К@Т »

Soir писал(а):
К@Т писал(а):Начал изучать си,в мплаб впихнул компилятор без оганичения кода и получил следующую картину :shock:
Что я не так сделал?

#include <pic.h>
void main() {
}

тоже самое выдаёт :cry: void-пустое с англ.,т.е функця main ни чего ни кому не передаёт,значит можно это не писать(хотя я проверил и этот вариант).Ещё есть какие-нибуть идеи?
У кошки 4 ноги и хвост-плюс,минус,вход,выход,а хвост-земля.....Надо переходить с китайской бурды на канифоль.......[url=http://infobar.hsdn.org/][img]http://static.hsdn.org/infobar/350x60.gif[/img][/url]
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Ещё есть какие-нибуть идеи?

А если на ошибку посмотреть, ничего не проясняется? Или нафиг не надо на них смотреть?

Компилятор-то активирован?
Аватара пользователя
К@Т
Говорящий с текстолитом
Сообщения: 1573
Зарегистрирован: Сб окт 09, 2010 12:33:48
Откуда: Незалежная

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

Сообщение К@Т »

ploop писал(а):

Компилятор-то активирован?

Не понял вопроса :o Я сделал так как в инструкции написано
Запускаем 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: Мелкие вопросы по МК и ПЛИС.

Сообщение Antifritz »

Помогите, пожалуйста, запустить ШИМ на ATTiny261A, а то уж очень он там навороченный. Мне нужен обычный Fast-PWM с выходами на ОС1А и ОС1В со сбросом, когда TCNT1 становиться больше OCR. Прочитал несколько раз даташит - с трудом запустил сам таймер (кто ж знал что ТОР хранится в ОСR1C), а вот на выходах ШИМ ничего не меняется. Можете кто-нибудь написать что должно находится в каком из регистров? Заранее благодарен!

Разобрался уже сам так и не понял где ошибка была, может кому понадобится:

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

DDRB = 0b00001010;
TCCR1A = 0b10100011;
TCCR1B = 0b00000001;
TCCR1C = 0;
TCCR1D = 0;
OCR1C = 0xFF;

ну а OCR1А и OCR1В какие нам нужно выставляем.
Последний раз редактировалось Antifritz Ср окт 19, 2011 22:21:47, всего редактировалось 1 раз.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

Не понял вопроса Я сделал так как в инструкции написано

Я не знаю, что за хренью вы пользуетесь, но он пишет явно, что не активирован. Дальше уж сами разбирайтесь. Или покупайте по честному.
Ответить

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