Ви не увійшли.
Прочитать. Просто пишите Serial.print(PMCR, HEX);
Записать: PMCR = 1<<CLKOEN1; и т.п.
Нафига все эти дикие макросы!
"Будьте проще и люди к вам потянутся!"
Дело не в макросе...
#ifndef bit_is_set
#define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit))  // читаем заданый бит
#endif 
bool BIT;
 
void setup()  { 
Serial.begin(57600);
Serial.println("  Test - PMCR: 0x01  default - 0000 0001 ");
    BIT = bit_is_set(PMCR, PMCE);      Serial.print(BIT);
    BIT = bit_is_set(PMCR, CLKFS);    Serial.print(BIT);
    BIT = bit_is_set(PMCR, CLKSS);    Serial.print(BIT);
//    BIT = bit_is_set(PMCR, WCLKS);    Serial.print(BIT);
  Serial.print("?");
  Serial.print(" ");  
    BIT = bit_is_set(PMCR, OSCKEN);   Serial.print(BIT);
    BIT = bit_is_set(PMCR, OSCMEN); Serial.print(BIT);
  Serial.print("?");
    BIT = bit_is_set(PMCR, RCKEN);    Serial.print(BIT);
    BIT = bit_is_set(PMCR, RCMEN);    Serial.println(BIT);
  } 
 
void loop()  {
delay (5000);	
  //=========================================================     
  }при компиляции выдает ошибку:
Arduino: 1.8.5 (Windows 7), Плата:"WEMOS XI (Retired)"
In file included from c:\users\admin\appdata\local\arduino15\packages\arduino\tools\avr-gcc\4.8.1-arduino5\avr\include\avr\io.h:99:0,
from c:\users\admin\appdata\local\arduino15\packages\arduino\tools\avr-gcc\4.8.1-arduino5\avr\include\avr\pgmspace.h:88,
from C:\Program Files (x86)\Arduino\hardware\wemos\XI\cores\lgt8f/Arduino.h:28,
from sketch\sketch_aug02a.ino.cpp:1:
C:\Temp\arduino_modified_sketch_368192\sketch_aug02a.ino: In function 'void setup()':
sketch_aug02a:18: error: 'OSCMEN' was not declared in this scope
BIT = bit_is_set(PMCR, OSCMEN); Serial.print(BIT);
^
exit status 1
'OSCMEN' was not declared in this scope
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
Аналогично и с WCLKS, поэтому я и заменил строку на коммет с "?" ...   ![]()
Неактивний
К примеру, ваш перевод на 32 мгц.
cli();
CKPR = 1<<CLKPCE;
CLKPR = 0;
sei();
У меня работает несколько дней от 3,7 в. Хотя спокойствия на душе нет.(

CLKPCE  -  эта переменная определяется !!!!  и у меня переводится прескаллер и работает...
а вот несколько переменных НЕ определяются  
   
   
   в скетче я эти строки закомментировал... и заменил на знак вопроса...
Serial.println("  Test - PMCR: 0x01  default - 0000 0001 ");
    BIT = bit_is_set(PMCR, PMCE);      Serial.print(BIT);
    BIT = bit_is_set(PMCR, CLKFS);    Serial.print(BIT);
    BIT = bit_is_set(PMCR, CLKSS);    Serial.print(BIT);
//    BIT = bit_is_set(PMCR, WCLKS);    Serial.print(BIT);
  Serial.print("?");
  Serial.print(" ");  
    BIT = bit_is_set(PMCR, OSCKEN);   Serial.print(BIT);
//    BIT = bit_is_set(PMCR, OSCMEN); Serial.print(BIT);
  Serial.print("?");
    BIT = bit_is_set(PMCR, RCKEN);    Serial.print(BIT);
    BIT = bit_is_set(PMCR, RCMEN);    Serial.println(BIT);
 
Serial.println("  Test - CLKPR: 0x03  default - 0000 0011 ");
    BIT = bit_is_set(CLKPR, CLKPCE);    Serial.print(BIT);
//  Serial.print("?");
//    BIT = bit_is_set(CLKPR, CLKOEN1);  Serial.print(BIT);
  Serial.print("?");
//    BIT = bit_is_set(CLKPR, CLKOEN0);  Serial.print(BIT);
  Serial.print("?");
  Serial.print("- ");
    BIT = bit_is_set(CLKPR, CLKPS3);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS2);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS1);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS0);    Serial.println(BIT);Неактивний
Ну так нету там у него таких наименований бит! Смотрите хедеры.
#define PMCR    (*((volatile unsigned char *)0xf2))
#define RCMEN    0
#define RCKEN    1
#define SCMEN    2
#define OSCKEN    3
#define WCES    4
#define CLKSS   5
#define EXTEN   5
#define CLKFS   6
#define PMCE    7
И не пишите такие портянки с кодом. Всё равно никто не читает.
Неактивний
Ну так нету там у него таких наименований бит! Смотрите хедеры.
#define PMCR (*((volatile unsigned char *)0xf2))
#define RCMEN 0
#define RCKEN 1
#define SCMEN 2
#define OSCKEN 3
#define WCES 4
#define CLKSS 5
#define EXTEN 5
#define CLKFS 6
#define PMCE 7
И не пишите такие портянки с кодом. Всё равно никто не читает.
Это капец....  
 

*****
а CLKPR: 0x03 можете глянуть ?
Неактивний
renoshnik пише:а CLKPR: 0x03 можете глянуть ?
А что смотреть то! 0 - 32, 1 - 16, 2 - 8, 3 - 4 мгц и т.д. Какие вопросы?
ошибся CLKPR: 0x61 адресс

Наименование бит...
    BIT = bit_is_set(CLKPR, CLKPCE);    Serial.print(BIT);
//  Serial.print("?");
//    BIT = bit_is_set(CLKPR, CLKOEN1);  Serial.print(BIT);
  Serial.print("?");
//    BIT = bit_is_set(CLKPR, CLKOEN0);  Serial.print(BIT);
  Serial.print("?");
  Serial.print("- ");
    BIT = bit_is_set(CLKPR, CLKPS3);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS2);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS1);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS0);    Serial.println(BIT);
у меня такие в даташите ... соответственно два имени глючат ...
Остання редакція renoshnik (2018-08-02 14:07:59)
Неактивний
Только компилятор работает не с даташитом, а с хедерами!)
  
   Хе́дер (идиш חדר хе́йдэр — начальная еврейская школа; восходит к ивр. חֶדֶר — комната)
а я наивный с даташитами работаю...  
 
В PMCR    исправил, теперь все читается !!!!  
 
Засветите, что там в CLKPR   ![]()
Неактивний
)) То то я думаю, почему меня именно в эту сторону тянет...
header - хидер точно не подходит, да и неприлично как то, созвучно с пидар.)
Ну а что там может быт в CLKPR? Что записал, то и будет, или нет?)
Специально для вас. CLKPR 0.))
Неактивний
)) То то я думаю, почему меня именно в эту сторону тянет...
header - хидер точно не подходит, да и неприлично как то, созвучно с пидар.)
Ну а что там может быт в CLKPR? Что записал, то и будет, или нет?)
Специально для вас. CLKPR 0.))
А откуда вы взяли это ?
Green пишет:
Ну так нету там у него таких наименований бит! Смотрите хедеры.
#define PMCR    (*((volatile unsigned char *)0xf2))
#define RCMEN    0
#define RCKEN    1
#define SCMEN    2
#define OSCKEN    3
#define WCES    4
#define CLKSS   5
#define EXTEN   5
#define CLKFS   6
#define PMCE    7
в даташите другое записано :

С даташитовскими именами у меня были глюки !!! сейчас заменил НА ВАШИ ИМЕНА переменные и все отлично читается !!!!
Теперь нужны имена ПРАВИЛЬНЫЕ в регистре CLKPR: 0x61
даташит выдает следующее:

и два имени у меня глючат ,,,  ![]()
Неактивний
А откуда вы взяли это ?
Green пишет:
Ну так нету там у него таких наименований бит! Смотрите хедеры.
#define PMCR (*((volatile unsigned char *)0xf2))
#define RCMEN 0
#define RCKEN 1
#define SCMEN 2
#define OSCKEN 3
#define WCES 4
#define CLKSS 5
#define EXTEN 5
#define CLKFS 6
#define PMCE 7в даташите другое записано :
Ну как откуда? Я ж написал!
На заборе х.й написано и что?
Неактивний
renoshnik пише:А откуда вы взяли это ?
Green пишет:
Ну так нету там у него таких наименований бит! Смотрите хедеры.
#define PMCR (*((volatile unsigned char *)0xf2))
#define RCMEN 0
#define RCKEN 1
#define SCMEN 2
#define OSCKEN 3
#define WCES 4
#define CLKSS 5
#define EXTEN 5
#define CLKFS 6
#define PMCE 7в даташите другое записано :
Ну как откуда? Я ж написал!
На заборе х.й написано и что?
просто я не понял (т.к. не специалист) " Смотрите хедеры. " где это.  Ткните пожалуйста  ![]()
Остання редакція renoshnik (2018-08-02 17:46:50)
Неактивний
... просто я не понял (т.к. не специалист) " Смотрите хедеры. " где это. Ткните пожалуйста
В установочном каталоге Ардуино ищите, в ветвях ../hardware/LGT8F/cores/lgt8f/***.h , или как-то наподобии.
Неактивний
renoshnik пише:... просто я не понял (т.к. не специалист) " Смотрите хедеры. " где это. Ткните пожалуйста
В установочном каталоге Ардуино ищите, в ветвях ../hardware/LGT8F/cores/lgt8f/***.h , или как-то наподобии.
Спасибо. Интуитивно подозревал, что где-то там, только ковырял файл HID.cpp а оказалось совсем рядом.
Нашел три файла и в каждом разные значения...
lgt88a.h
#define PMCR	(*((volatile unsigned char *)0xf2))
#define RCMEN		0
#define RCKEN		1
#define SCMEN		2
#define SCKEN		3
#define WCES    	4
#define EXTEN   	5
#define LFEN    		6
#define PMCE		7
//#define CLKPR	(*(volatile unsigned char *)0x61)
//#define CLKPCE	7
#define CLKOE		5
#define CLKOE1		6
#define CLKOE0		5
//#define CLKPS3	3
//#define CLKPS2	2
//#define CLKPS1	1
//#define CLKPS0	0
//#define CLKPS	0
lgtx8e.h
#define PMCR	(*((volatile unsigned char *)0xf2))
#define RCMEN		0
#define RCKEN		1
#define SCMEN		2
#define OSCKEN	3
#define WCES    	4
#define CLKSS  	 	5
#define EXTEN   	5
#define CLKFS   		6
#define PMCE		7
// CLKPR
#define CLKOE		5
#define CLKOE1		6
#define CLKOE0		5
#define VDTCR	(*((volatile unsigned char *)0x62))
#define VDTCE		7
#define SWRSTN	6
#define VSEL		1
#define	VDTEN		0
lgtx8p.h
#define PMCR	(*((volatile unsigned char *)0xF2))
#define PMCE		7
#define CLKFS		6
#define CLKSS		5
#define WCLKS		4
#define WCES		4
#define OSCKEN	3
#define OSCMEN	2
#define RCKEN		1
#define RCMEN		0
// Bits of CLKPR
#define WCE		7
#define CLKOE1		6 
#define CLKOE0		5
#define CLKOE		5 взял значения из файлов :
lgtx8e.h      #define PMCR    (*((volatile unsigned char *)0xf2))  
lgt88a.h      //#define CLKPR    (*(volatile unsigned char *)0x61)
теперь компилятор не ругается
#ifndef bit_is_set
#define bit_is_set(sfr, bit) (_SFR_BYTE(sfr) & _BV(bit))  // читаем заданый бит
#endif 
 
bool BIT;
 
void setup()  { 
Serial.begin(57600);
/*		lgtx8e.h
#define PMCR    (*((volatile unsigned char *)0xf2))  
#define RCMEN    	0
#define RCKEN   	1
#define SCMEN    	2
#define OSCKEN    	3
#define WCES    	4
#define CLKSS   	5
#define EXTEN   	5
#define CLKFS   	6
#define PMCE    	7
 */
Serial.println("   ");
Serial.println("  Test - PMCR: 0x01  default - 0000 0001 ");
Serial.print("  Test - PMCR: 0x01  real   -  ");
    BIT = bit_is_set(PMCR, PMCE);      	Serial.print(BIT);
    BIT = bit_is_set(PMCR, CLKFS);    	Serial.print(BIT);
    BIT = bit_is_set(PMCR, CLKSS);    	Serial.print(BIT);
    BIT = bit_is_set(PMCR, WCES);    	Serial.print(BIT);
										Serial.print(" ");  
    BIT = bit_is_set(PMCR, OSCKEN);   	Serial.print(BIT);
    BIT = bit_is_set(PMCR, SCMEN); 		Serial.print(BIT);
    BIT = bit_is_set(PMCR, RCKEN);    	Serial.print(BIT);
    BIT = bit_is_set(PMCR, RCMEN);    	Serial.println(BIT);
/*		lgt88a.h
//#define CLKPR	(*(volatile unsigned char *)0x61)
//#define CLKPCE	7
#define CLKOE		5
#define CLKOE1		6
#define CLKOE0		5
//#define CLKPS3	3
//#define CLKPS2	2
//#define CLKPS1	1
//#define CLKPS0	0
//#define CLKPS		0
 */	
Serial.println("   ");
Serial.println("  Test - CLKPR: 0x03 default - 0000 0011 ");
Serial.print("  Test - CLKPR: 0x03 real   -  ");
    BIT = bit_is_set(CLKPR, CLKPCE);    Serial.print(BIT);
	BIT = bit_is_set(CLKPR, CLKOE1);  	Serial.print(BIT);
	BIT = bit_is_set(CLKPR, CLKOE0);  	Serial.print(BIT);
										Serial.print("- ");					
    BIT = bit_is_set(CLKPR, CLKPS3);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS2);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS1);    Serial.print(BIT);
    BIT = bit_is_set(CLKPR, CLKPS0);    Serial.println(BIT);
	
  } 
 
void loop()  {
  //=========================================================     
  }  
  Test - PMCR: 0x01  default - 0000 0001 
  Test - PMCR: 0x01  real   -  0000 0011
   
  Test - CLKPR: 0x03 default - 0000 0011 
  Test - CLKPR: 0x03 real   -  000- 0001
Неактивний
Да, сообщения у вашего теста ну очень информативные.)))
Задача была прочитать состояние регистра и контролировать изменение.
Правда смущает в регистре PMCR что RCMEN = 1 и RCKEN = 1 помоему в регистр RMCR(3-0) должна быть
только одна единица.
Неактивний
По моему в PMCR может быть что хош, только что бы выполнилось желаемое действие нужно выполнить определённую последовательность. Причём быстренько.)
Странно, у меня перестал изменяться прескаллер... на всех трех платах... ![]()
Неактивний
Я уже давал образец. Попробуйте.
cli();
CKPR = 1<<CLKPCE;
CLKPR = 0;
sei();
Пробовал.  
 
Странно, что ранее все работало менялось и блинк чаще моргал, а теперь виснет... на всех трех платах.
CKPR = 1<<CLKPCE эта строка правильная ? Компилятор ругается, заменил на CLKPR = 1<<CLKPCE
*******
За то две платы начали адекватно работать и программироваться при 5 Вольтах ( третья только 3.3В принимает )
Остання редакція renoshnik (2018-08-03 12:29:49)
Неактивний