Бибилиотека LCD Nokia 1616 (SPFD54124B)

Khludenkov
Offline
Зарегистрирован: 11.11.2015

Хорошо, посмотрю. Частота ардуины 16 МГц?

Да, я про Фому, вы про Ерёму...

Я спрашивал про работу с дисплеем Nokia1616.

 

Какие выводы ардуины цеплять к дисплею от Nokia1616 При использовании скетча Nokia_1616_soft?

 

Если можно и не жалко, покажите последнюю рабочую версию.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

в 42 и 44 посту зашел разговор о тестировании скорости ногодрыга

да 16 мгц

в soft же прописано. это пины по даташиту

#define Port         PORTB
#define CS           2
#define Data         3
#define Clock        5

 

Khludenkov
Offline
Зарегистрирован: 11.11.2015

А почему тогда

 

  pinMode(CS, OUTPUT);
  pinMode(Data, OUTPUT);
  pinMode(Clock, OUTPUT);
 
 
? Это же другие ноги.
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а может и нет. я уже запутался

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не дождался когда человек наконец проверит. потестил коды и заодно свой китайский лог. анализатор

1 вариант: 1,043 мгц

2 вариант: 1 мгц. все таки запись PORTB = 1<<3 быстрее работает чем PORTB |= 1<<3, хоть и кто то говорит менее правильная

ввобще поразительно что пауза между импульсами такая огромная, хз что там компилятор накомпилировал

3 вариант: digitalWrite. все и так знали что эта функция медленная

4 вариант: более чем в 2.5 раза быстрее. хотя это таже функция из которой просто выкинул "лишнее"

5. вариант. тут все сложнее

это 13 пин, clock. все таки промежуток между посылками большой, при том что данные не подготавливаются, они уже готовы и мк "больше вообще ничего не делает" )))

data 11 пин. не вдавался в подробности spi, но но длинная еденица в конце предполагаю означает конец посылки

 

к 2 варианту провел допольнительные экспрерименты:

#define PIN   11

#define PIN_On          PORTB = 1<<3
#define PIN_Off         PORTB = 0<<3

void setup(){
  pinMode(PIN, OUTPUT);
}

void loop(){
  PIN_On;
  PIN_Off;
  PIN_On;
  PIN_Off;
  PIN_On;
  PIN_Off;
  PIN_On;
  PIN_Off;
  PIN_On;
  PIN_Off;
  PIN_On;
  PIN_Off;
  PIN_On;
  PIN_Off;
  PIN_On;
  PIN_Off;
}

8мгц. как клок у spi с минимальным делителем

захотелось еще эксперимента, так ли void loop безобиден. внутри ядра кажется есть записть в которой loop крутится внутри while(1) или что то вроде

#define PIN   11

#define PIN_On          PORTB = 1<<3
#define PIN_Off         PORTB = 0<<3

void setup(){
  pinMode(PIN, OUTPUT);
}

void loop(){
  while(1){
    PIN_On;
    PIN_Off;
  }
}

4 мгц. из этого следует если в коде выполняется много операций и требуется быстродействие имеет смысл поставить while(1) внутри лупа, хотя я всегда считал что по скорости они почти одинаково выполняются, потому что даже в ядре похожая запись

на этом все)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

jeka_tm ,   почему ?

03 #define PIN_On    PORTB |=   1<<3;
04 #define PIN_Off   PORTB &= ~(1<<3);

а не

03 #define PIN_On    PORTB |=  0x08;
04 #define PIN_Off   PORTB &= ~0x08;

разве без сдвигов не будет быстрее ?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да нет. тоже самое

#define PIN   11

#define PIN_On          PORTB |=  0x08

#define PIN_Off         PORTB &= ~0x08


void setup(){
  pinMode(PIN, OUTPUT);
}

void loop(){

    PIN_On;
    PIN_Off;

}

#define PIN   11

#define PIN_On          PORTB |=  0x08

#define PIN_Off         PORTB &= ~0x08


void setup(){
  pinMode(PIN, OUTPUT);
}

void loop(){
  while(1){
    PIN_On;
    PIN_Off;
  }
}

#define PIN   11

#define PIN_On          PORTB |= 1<<3; 
#define PIN_Off         PORTB &= ~(1<<3);

void setup(){
  pinMode(PIN, OUTPUT);
}

void loop(){
  while(1){
    PIN_On;
    PIN_Off;
  }
}

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

понял графически - спасибо !!!!

IgorU
Offline
Зарегистрирован: 03.12.2014

jeka_tm пишет:
заодно свой китайский лог. анализатор

Какой утилитой снимаете графики???

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013
IgorU
Offline
Зарегистрирован: 03.12.2014

Спасибо!