Ви не увійшли.
Прочитать. Просто пишите 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)
Неактивний