- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
struct
{
unsigned char * low; //младшая часть адреса
unsigned char * high; //страшая часть адреса(только младших 3 бита)
} padr;
void filladdr(unsigned int * addr) //подготовка адресных ног МК
{
padr.low = (unsigned char *)addr;
padr.high = padr.low + 1;
PORTB = *padr.low;
PORTE &= 0x8;
PORTE |= *padr.high;
}
unsigned char readFromSRAM(unsigned int * adrss)
{
char outD;
TRISD = 0xFF;
filladdr(adrss);
PORTA &= 0xFC;
NOP(); // задержка на время доступа
outD = PORTD;
PORTA |= 0x7;
return outD;
}
void writeToSRAM(unsigned int * adrss, unsigned char * data)
{
TRISD = 0x0;
filladdr(adrss);
PORTD = *data;
PORTA &= 0xF8;
NOP(); // задержка на время доступа
PORTA |= 0x7;
PORTD = 0x0;
}
говнокод для работы с 2кб внешней SRAM памяти для микроконтролеров pic
guest 02.01.2011 23:23 # +1
где говнокод?
если у тебя есть не говнокодное решение, то приводи своё, а мы оценим насколько твоё лучше...
nice_penguin 02.01.2011 23:36 # −2
guest 03.01.2011 00:03 # −1
nice_penguin 03.01.2011 00:04 # −2
guest 03.01.2011 00:05 # −1
guest 03.01.2011 00:06 # −1
таймер с такой мелочью не справится
guest 03.01.2011 00:07 # 0
nice_penguin 03.01.2011 00:13 # −3
guest 03.01.2011 00:15 # −2
nice_penguin 03.01.2011 00:17 # 0
guest 03.01.2011 00:21 # −1
если это не улучшает совместимость для работы на разночастотных кристалах, то зачем "платить больше"?
nice_penguin 03.01.2011 00:24 # −2
guest 03.01.2011 00:22 # −1
это позволяло бы писать код, который нет необходимости менять, в случае смены частоты кристала
guest 03.01.2011 00:18 # −1
пока это прерывание вызоветься - пол дня пройдет, а ноп это быстро
понятно, почему я вижу тормозящую стиралку у себя дома...
nice_penguin 03.01.2011 00:20 # −2
guest 03.01.2011 00:31 # −1
придётся отловить эту ошибку и переписать код
это ничем не лучше нопов в таком случае
nice_penguin 03.01.2011 00:35 # −2
guest 03.01.2011 00:38 # −1
это также, можно указывать числом, если хоть немного владеешь дифайнами
nice_penguin 03.01.2011 00:42 # −2
guest 03.01.2011 01:12 # −1
guest 03.01.2011 01:16 # −4
fixed
Dummy00001 03.01.2011 01:02 # +8
одна из прелестей работы с микроконтроллерами, это то что у них тайминг как правило предсказуем и часто задается в циклах самого микроконтроллера. поэтому тривиальный NOP есть во многих случаях правильный ответ.
в общем, почитай тайминг инструкций и сравни с таймингом SRAM. если это на самом деле SRAM то он должен быть с высокой вероятностью быстрее твоего микроконтроллера.
ЗЫ это не ПЦ с парой десятков шин и у каждой из них своя частота. тут да надо парится с синхронизацией.
bugmenot 02.01.2011 23:28 # +2
guest 02.01.2011 23:34 # −2
guest 03.01.2011 01:13 # −1
guest 03.01.2011 00:55 # −5
shm 03.01.2011 17:15 # +3
guest 05.01.2011 00:59 # −6
guest 03.01.2011 17:22 # +1
что-бы каждый мог зайти и почитать "выводы" по результатам спора о случае из данного говнокода
bugmenot 04.01.2011 15:30 # +2
ложное говно
блжад, PHP! форматирование в жопе!
guest 04.01.2011 20:42 # +1
Если начинали пользоваться при этом таймерами, то это получалась слишком большая задержка. Пустая растрата производительности.
shm 05.01.2011 00:50 # +1
guest 05.01.2011 00:54 # −6
shm 05.01.2011 00:59 # −3
guest 05.01.2011 01:01 # −5
guest 05.01.2011 01:02 # −5
guest 05.01.2011 01:07 # −5
guest 05.01.2011 01:08 # −5
guest 05.01.2011 01:09 # −5
shm 05.01.2011 00:58 # −1
guest 05.01.2011 00:59 # −4