Strict Standards: Declaration of action_plugin_importoldchangelog::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php on line 8
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/feedcreator.class.php on line 62
Deprecated: Function split() is deprecated in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/auth.php on line 146
Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/auth.php on line 236
Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/feed.php on line 60
Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/feed.php on line 61
Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/feed.php on line 62
Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/pageutils.php on line 442
Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/pageutils.php on line 445
Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/inc/pageutils.php on line 446
Warning: Cannot modify header information - headers already sent by (output started at /home/aqq20189/public_html/embedders.org/kurt/wiki/lib/plugins/importoldchangelog/action.php:8) in /home/aqq20189/public_html/embedders.org/kurt/wiki/feed.php on line 66 embedders WiKi sources
https://kurt.embedders.org/wiki/
2022-08-08T11:29:42+00:00embedders WiKi
https://kurt.embedders.org/wiki/
https://kurt.embedders.org/wiki/lib/images/favicon.icotext/html2021-10-09T14:22:55+00:00sources:at45db
https://kurt.embedders.org/wiki/sources:at45db?rev=1633789375
/**
* @file at45db.c
* @brief AT45DB Module
*
* Support Atmel AT45DB Flash Memory
*
* @author Rustem Kalimullin
* @par E-mail:
* hellos@mail.ru
* @par Copyright:
* (c) Kurt, 2005
*/
#include "common.h"
#include "at45db.h"
#include "spi.h"
// Define DF_AUTODETECT_FEATURES to enable autodetect features
//#define DF_AUTODETECT_FEATURES
//! defines for all opcodes
enum {
BLOCK_ERASE = 0x50, /**< erase 512 pages */
MAIN_MEMORY_PAGE_READ …text/html2021-10-09T14:22:55+00:00sources:circ_buf
https://kurt.embedders.org/wiki/sources:circ_buf?rev=1633789375
Циклический буфер
Не самая красивая реализация буфера. Мне самому он не нравится, поэтому и выкладываю :-)
Для формирования используется финт ушами из макроса DECLARE_CIRC_BUFFER(). Первый параметр переменная для буфера, второй - размер буфера в байтах. Очень важно чтобы размер был …text/html2021-10-09T14:22:55+00:00sources:flash
https://kurt.embedders.org/wiki/sources:flash?rev=1633789375
text/html2021-10-09T14:22:55+00:00sources:lcd_hd44780
https://kurt.embedders.org/wiki/sources:lcd_hd44780?rev=1633789375
Модуль управления ЖКИ HD44780
Работа с ЖКИ. Используется 8-битная шина данных без чтения флага готовности.
* h-file
* c-file
* example
example
// Настройка подключения ЖКИ
#define PIN_LCD_RS P5OUT_bit.P5OUT_1
#define PIN_LCD_E P5OUT_bit.P5OUT_0
#define LED_BUS_OUT P4OUT
#define LED_BUS_DIR P4DIR
#define LCD_RS_DATA() PIN_LCD_RS = 1
#define LCD_RS_COMMAND() PIN_LCD…text/html2021-10-09T14:22:55+00:00sources:macros
https://kurt.embedders.org/wiki/sources:macros?rev=1633789375
Набор часто используемых макросов, включается обычно во все файлы проекта, через “common.h”
#ifndef KR_MACROS_INCLUDED
#define KR_MACROS_INCLUDED
#ifndef bool
typedef unsigned char bool;
#endif
#ifndef true
#define true (1)
#define false (!true)
#endif
#define BIT_CLR(port,bit) ( (port) &= ~(1<<(bit)) )
#define BIT_SET(port,bit) ( (port) |= (1<<(bit)) )
#define BIT_CPL(port,bit) ( (port) ^= (1<<(bit)) )
#define BIT_…text/html2021-10-09T14:22:55+00:00sources:spi0
https://kurt.embedders.org/wiki/sources:spi0?rev=1633789375
/**
* @file spi.c
* @brief SPI functions
*
* Implement SPI inteface communications
*
* @author Rustem Kalimullin
* @par E-mail:
* hellos@mail.ru
* @par Copyright:
* (c) Kurt, 2005
*/
#include "common.h"
#define SPI_PORT_WR (P3OUT) //!< Output port
#define SPI_PORT_RD (P3IN) //!< Input port
#define SPI_PORT_DIR (P3DIR)
#define SPI_PORT_SEL (P3SEL) //!< Port options
#define SPI_DO (1<<1) //!< Output pin mask
#define SPI_DI (1<<2) //!< Input p…text/html2021-10-09T14:22:55+00:00sources:uart1
https://kurt.embedders.org/wiki/sources:uart1?rev=1633789375
Аппаратный UART
* c-file
* h-file
c-file
/**
* @file uart1.c
* @brief UART1 module
*
* @author Rustem Kalimullin
* @par E-mail:
* hellos@mail.ru
*/
#include "common.h"
#include "circ_buf.h"
#ifndef UART1_BUFFER_SIZE
#define UART1_BUFFER_SIZE 0x10
#endif
#if (UART1_BUFFER_SIZE & (UART1_BUFFER_SIZE-1))
#error UART1_BUFFER_SIZE must be power of 2
#endif
DECLARE_CIRC_BUFFER( RxBuf1, UART1_BUFFER_SIZE );
DECLARE_CIRC_BUFFER( TxBuf1, UART1_BUFFER_SIZE );
//-----…text/html2021-10-09T14:22:55+00:00sources:xtal
https://kurt.embedders.org/wiki/sources:xtal?rev=1633789375
Вариант 1
Запускаем внешний кварц, выдерживаем паузу на устаканивание и проверяем флаг. Если флаг сброшен, то все нормально - MCLK и SMCLK тактируются от кварца. В противном случае, делаем еще несколько попыток и переключаемся на тактирование от внутреннего DCO.