Страница 1 из 2

Задержка в 0,1мкс

Добавлено: Ср июн 16, 2021 11:46:02
Михаил_avr
Спойлер

Код: Выделить всё

.      #define F_CPU 16000000UL //частота 16 мегагерц
#include <avr/io.h>      // Подключим файл io.h
#include <util/delay.h>  // Подключим файл delay

int i;

int main(void)
{
    DDRB|=(1<<PD5);
    TCCR0A|=(1<<WGM01);//сброс при совпадении
    TCCR0B|=(1<<CS00);  //предделитель на 1
    OCR0A=160;
    TIMSK0|=(1<<OCIE0A);
    i=10000;
    sei();
    
    while (1)
    {
        i=10000;
        
        while(i)
        {
          
        }
        PORTB=1<<5 ;
      i=10000;
        while(i)
        {
          
        }
    
        PORTB=0<<5;
    }
    
}
ISR (TIMER0_COMPA_vect)
{
    i--;
}  
Здравствуйте,все,я хотел сделать задержку в 0,1 МКС,а чтобы проверить написал программу для мигания светодиодом,но так не работает ,если же запись в порт поместить в цикл то все работает ,но это не годиться,а хотелось бы делать вот так

Код: Выделить всё

while(i){}
PORTB^=1<<5;
но только не знаю как это исправить

Re: Задержка в 0,1мкс

Добавлено: Ср июн 16, 2021 15:20:10
Аlex
Михаил_avr писал(а):задержку в 0,1 МКС
Михаил_avr писал(а):для мигания светодиодом
Куда мир катится :facepalm:

Re: Задержка в 0,1мкс

Добавлено: Ср июн 16, 2021 15:37:08
dgrett
Какие нахрен циклы? На указанной частоте 2 такта уже 0,125 мкС!

Re: Задержка в 0,1мкс

Добавлено: Сб июн 19, 2021 18:11:22
Dimon456
Неужели нельзя просто сказать человеку, по чему его код не работает?

Re: Задержка в 0,1мкс

Добавлено: Сб июн 19, 2021 19:39:57
Аlex
Знать почему, и что значит "не работает" - сказали бы :dont_know:

Re: Задержка в 0,1мкс

Добавлено: Сб июн 19, 2021 19:43:13
Starichok51
Dimon456 писал(а):Неужели нельзя просто сказать человеку, по чему его код не работает?
ну так скажи. или обязательно кто-то другой это должен сказать, а не ты?

Re: Задержка в 0,1мкс

Добавлено: Сб июн 19, 2021 19:55:43
Dimon456
Пропущен квалификатор volatile

Код: Выделить всё

volatile int i;

Re: Задержка в 0,1мкс

Добавлено: Сб июн 19, 2021 20:36:25
КРАМ
[uquote="Dimon456",url="/forum/viewtopic.php?p=4049934#p4049934"]Пропущен квалификатор[/uquote]
Это вы серьезно? :)))
То есть если волатайл вставить, то можно при машинном цикле в 62,5 нс дергать ногой создавать задержку с разрешением в 100 нс?
:tea:

Re: Задержка в 0,1мкс

Добавлено: Сб июн 19, 2021 22:04:58
Dimon456
КРАМ писал(а):Это вы серьезно?
Да, серезно
Михаил_avr писал(а):чтобы проверить написал программу для мигания светодиодом
учитывая настройку таймера прерывание отрабатывает со скоростью 10мкс.
Этот кусок кода

Код: Выделить всё

i=10000;       
        while(i)
        {        
        }
        PORTB=1<<5 ;
отработает через 10мкс*10000 = 0,1с.
Стоило бы догадаться о чем речь идет.

Если отключить оптимизацию, можете без квалификатора volatile обойтись, в противном случае его i=10000; и что там далее просто компилятром будет пропущено.

А вопрос был
Михаил_avr писал(а):но так не работает
а хотелки
Михаил_avr писал(а):хотелось бы делать вот так
Михаил_avr писал(а):но только не знаю как это исправить

Re: Задержка в 0,1мкс

Добавлено: Сб июн 19, 2021 22:11:23
КРАМ
[uquote="Dimon456",url="/forum/viewtopic.php?p=4050038#p4050038"]Стоило бы догадаться о чем речь идет.[/uquote]
ТС дважды, в заголовке и сообщении (причем в сообщении капсом), повторил свои притязания на 100 нс. С чего бы мне догадаться, что речь идет о 100 мс? Может о 100 мкс? Или вообще о 0,1 мин?

Re: Задержка в 0,1мкс

Добавлено: Пн июн 21, 2021 12:40:26
slav0n
шо он там хочет контролировать такой задержкой

Re: Задержка в 0,1мкс

Добавлено: Пн июн 21, 2021 14:03:07
Рязанцев Владислав
А чего-нибудь побыстрее не вариант? ESP32 например.

Re: Задержка в 0,1мкс

Добавлено: Вс июн 27, 2021 16:47:19
Михаил_avr
Dimon456 писал(а):Пропущен квалификатор volatile

Код: Выделить всё

volatile int i;
спасибо большое реально заработало!
slav0n писал(а):шо он там хочет контролировать такой задержкой
по vga что нибудь простое вывести

Добавлено after 17 minutes 34 seconds:
Всем остальным тоже спасибо

Re: Задержка в 0,1мкс

Добавлено: Вс июн 27, 2021 21:23:32
Dimon456
Михаил_avr писал(а):по vga что нибудь простое вывести
а за чем вам в vga задержка в 0,1мкс?
Для нормального разрешения 0,1мкс мало, вот, к примеру, на стандартной частоте кварца 16МГц
СпойлерИзображение

Исходники тут

Re: Задержка в 0,1мкс

Добавлено: Пн июн 28, 2021 03:29:54
Михаил_avr
Ну там разрешение 640 на 480, а вот для 800 на 600 хватает

Добавлено after 14 minutes 52 seconds:
Изображение

Re: Задержка в 0,1мкс

Добавлено: Пн июн 28, 2021 12:24:07
Dimon456
Михаил_avr писал(а):а вот для 800 на 600 хватает
Чего хватает? На четыре квадрата? Вы какой нибудь текст выведите сначала.
Тем более у вас нарушена синхронизация.

Re: Задержка в 0,1мкс

Добавлено: Пн июн 28, 2021 13:28:16
Михаил_avr
Dimon456 писал(а):1)Чего хватает ? 2) Вы какой нибудь текст выведите сначала.
3)Тем более у вас нарушена синхронизация.
1)задержки
2)хорошо попробую
3)где?

Re: Задержка в 0,1мкс

Добавлено: Ср июн 30, 2021 09:53:18
Михаил_avr
https://img.radiokot.ru/files/143954/2k0ku92328.jpg
Ну вот такая буква П получилась (мне не очень понравилось её качества), попробую 640х480 ведь оно более медленное)

Re: Задержка в 0,1мкс

Добавлено: Ср июн 30, 2021 11:50:50
Starichok51
Михаил_avr, уменьшай картинку до разумных пределов или давай просто ссылку.
не помещай в текст такой огромный размер.

Re: Задержка в 0,1мкс

Добавлено: Ср июн 30, 2021 12:46:11
Михаил_avr
А как её уменьшать?