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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
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 КБ) 319 скачиваний
Лень - двигатель прогресса!
Аватара пользователя
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 »

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

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

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