mirror of
https://github.com/sergeyyarkov/yarkov.tech.git
synced 2026-10-11 10:29:21 +03:00
ts fixes
This commit is contained in:
parent
61001cbb38
commit
864c0aeb2f
1538
package-lock.json
generated
1538
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -12,11 +12,12 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "astro dev",
|
"dev": "astro dev",
|
||||||
"start": "astro dev",
|
"start": "astro dev",
|
||||||
"build": "astro build",
|
"build": "astro check && astro build",
|
||||||
"preview": "astro preview",
|
"preview": "astro preview",
|
||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@astrojs/check": "^0.9.4",
|
||||||
"@astrojs/rss": "^3.0.0",
|
"@astrojs/rss": "^3.0.0",
|
||||||
"@astrojs/sitemap": "^3.0.0",
|
"@astrojs/sitemap": "^3.0.0",
|
||||||
"@astrojs/solid-js": "^3.0.1",
|
"@astrojs/solid-js": "^3.0.1",
|
||||||
@ -34,10 +35,11 @@
|
|||||||
"rehype-autolink-headings": "^7.0.0",
|
"rehype-autolink-headings": "^7.0.0",
|
||||||
"rehype-slug": "^6.0.0",
|
"rehype-slug": "^6.0.0",
|
||||||
"sharp": "^0.32.6",
|
"sharp": "^0.32.6",
|
||||||
"solid-js": "^1.7.12"
|
"solid-js": "^1.7.12",
|
||||||
|
"typescript": "^5.8.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/mime-types": "^2.1.2",
|
"@types/mime-types": "^2.1.4",
|
||||||
"sass": "^1.68.0"
|
"sass": "^1.68.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,6 @@ const { heading } = Astro.props;
|
|||||||
<li>
|
<li>
|
||||||
<a href={`#${heading.slug}`}>{heading.text}</a>
|
<a href={`#${heading.slug}`}>{heading.text}</a>
|
||||||
<ul>
|
<ul>
|
||||||
{heading.subheadings.map((subheading) => <Astro.self heading={subheading} />)}
|
{heading.subheadings?.map((subheading) => <Astro.self heading={subheading} />)}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -12,6 +12,7 @@ tags:
|
|||||||
pubDate: 2023-10-15T16:28:52.587Z
|
pubDate: 2023-10-15T16:28:52.587Z
|
||||||
updatedDate: 2023-10-15T16:28:52.601Z
|
updatedDate: 2023-10-15T16:28:52.601Z
|
||||||
---
|
---
|
||||||
|
|
||||||
# Способы реализации
|
# Способы реализации
|
||||||
|
|
||||||
Существует два способа как можно реализовать задержку - это использовать аппаратные таймеры микроконтроллера или использовать простой цикл который выполняется определенное количество тактов. Преимущество использования аппаратного таймера микроконтроллера перед обычным программным циклом заключается в неблокирующем выполнении программы за счет того что работа таймера-счетчика не зависит от выполнения основной программы. Но иногда нужно использовать задержку всего в несколько микросекунд, что особо не повлияет на работу программы в некоторых случаях, тогда можно посмотреть в сторону простых циклов. Будет рассмотрен вариант и с длительной задержкой в несколько часов или дней. Программы будут представлены на языке Си и Ассемблера для микроконтроллера AVR ATtiny45V. В качестве основной программы будет моргающий светодиод который переключается раз в 0.5 секунд.
|
Существует два способа как можно реализовать задержку - это использовать аппаратные таймеры микроконтроллера или использовать простой цикл который выполняется определенное количество тактов. Преимущество использования аппаратного таймера микроконтроллера перед обычным программным циклом заключается в неблокирующем выполнении программы за счет того что работа таймера-счетчика не зависит от выполнения основной программы. Но иногда нужно использовать задержку всего в несколько микросекунд, что особо не повлияет на работу программы в некоторых случаях, тогда можно посмотреть в сторону простых циклов. Будет рассмотрен вариант и с длительной задержкой в несколько часов или дней. Программы будут представлены на языке Си и Ассемблера для микроконтроллера AVR ATtiny45V. В качестве основной программы будет моргающий светодиод который переключается раз в 0.5 секунд.
|
||||||
@ -598,13 +599,13 @@ int main(void) {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Заключение
|
# Заключение
|
||||||
|
|
||||||
Рассмотрены два основных способа реализации задержки используя таймеры и циклы. Выяснили что используя таймер-счетчик можно сделать задержку, которая не будет блокировать основной поток выполнения программы. Для длительных задержек, где необходимо отслеживать прошедшее время в секундах или часах, можно использовать глобальные переменные.
|
Рассмотрены два основных способа реализации задержки используя таймеры и циклы. Выяснили что используя таймер-счетчик можно сделать задержку, которая не будет блокировать основной поток выполнения программы. Для длительных задержек, где необходимо отслеживать прошедшее время в секундах или часах, можно использовать глобальные переменные.
|
||||||
|
|
||||||
## Полезные материалы
|
# Полезные материалы
|
||||||
|
|
||||||
* [AVR Instruction Set](https://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf)
|
- [AVR Instruction Set](https://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf)
|
||||||
* [AVR130: Setup and Use of AVR Timers](https://ww1.microchip.com/downloads/en/Appnotes/Atmel-2505-Setup-and-Use-of-AVR-Timers_ApplicationNote_AVR130.pdf)
|
- [AVR130: Setup and Use of AVR Timers](https://ww1.microchip.com/downloads/en/Appnotes/Atmel-2505-Setup-and-Use-of-AVR-Timers_ApplicationNote_AVR130.pdf)
|
||||||
* [AVR Delay Loop Calculator](http://darcy.rsgc.on.ca/ACES/TEI4M/AVRdelay.html)
|
- [AVR Delay Loop Calculator](http://darcy.rsgc.on.ca/ACES/TEI4M/AVRdelay.html)
|
||||||
* [AVR Timer Calculator](https://eleccelerator.com/avr-timer-calculator/)
|
- [AVR Timer Calculator](https://eleccelerator.com/avr-timer-calculator/)
|
||||||
|
|||||||
@ -18,7 +18,6 @@ export interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const canonicalUrl = new URL(Astro.url.pathname, Astro.site);
|
const canonicalUrl = new URL(Astro.url.pathname, Astro.site);
|
||||||
const t = useTranslation(Astro);
|
|
||||||
const { lang = DEFAULT_LANGUAGE, article, headings, availableOnLangs } = Astro.props as Props;
|
const { lang = DEFAULT_LANGUAGE, article, headings, availableOnLangs } = Astro.props as Props;
|
||||||
const {
|
const {
|
||||||
data: { title, description, coverImage },
|
data: { title, description, coverImage },
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
---
|
---
|
||||||
import { CollectionEntry, getCollection } from "astro:content";
|
import type { CollectionEntry } from "astro:content";
|
||||||
|
import { getCollection } from "astro:content";
|
||||||
import ArticleLayout from "@root/layouts/article.astro";
|
import ArticleLayout from "@root/layouts/article.astro";
|
||||||
import { createRelativeArticleUrl, removeLanguageCodeFromPath } from "@root/utils";
|
import { createRelativeArticleUrl, removeLanguageCodeFromPath } from "@root/utils";
|
||||||
import { getLanguageFromURL, useTranslation } from "@i18n/utils";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate articles pages from `blog` collection.
|
* Generate articles pages from `blog` collection.
|
||||||
|
|||||||
@ -64,7 +64,7 @@ export function getUniqueTags(articles: CollectionEntry<"blog">[]): string[] {
|
|||||||
return Array.from(new Set(articles.map((a) => a.data.tags).flat()));
|
return Array.from(new Set(articles.map((a) => a.data.tags).flat()));
|
||||||
}
|
}
|
||||||
|
|
||||||
export type MarkdownHeadingToc = MarkdownHeading & { subheadings: MarkdownHeading[] };
|
export type MarkdownHeadingToc = MarkdownHeading & { subheadings?: MarkdownHeading[] };
|
||||||
|
|
||||||
export function buildToc(headings: MarkdownHeading[], maxDepth: number = 2) {
|
export function buildToc(headings: MarkdownHeading[], maxDepth: number = 2) {
|
||||||
const toc: MarkdownHeadingToc[] = [];
|
const toc: MarkdownHeadingToc[] = [];
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
export const encode = (data: object) => {
|
export const encode = (data: Record<string, string>) => {
|
||||||
return Object.keys(data)
|
return Object.keys(data)
|
||||||
.map((key) => encodeURIComponent(key) + "=" + encodeURIComponent(data[key]))
|
.map((key) => encodeURIComponent(key) + "=" + encodeURIComponent(data[key]))
|
||||||
.join("&");
|
.join("&");
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
"extends": "astro/tsconfigs/strict",
|
"extends": "astro/tsconfigs/strict",
|
||||||
|
"include": [".astro/types.d.ts", "**/*"],
|
||||||
|
"exclude": ["dist"],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"strictNullChecks": true,
|
"strictNullChecks": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
@ -17,5 +19,5 @@
|
|||||||
"typeRoots": ["./node_modules/@types", "./src/types"],
|
"typeRoots": ["./node_modules/@types", "./src/types"],
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"jsxImportSource": "solid-js"
|
"jsxImportSource": "solid-js"
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user