The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Новая версия среды разработки Arduino IDE 2.3 , opennews (??), 11-Фев-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


109. "Новая версия среды разработки Arduino IDE 2.3 "  +/
Сообщение от bOOster (ok), 12-Фев-24, 12:36 
Это из того-же разряда экономить операционную память на сервере с устоявшимся набором софта и нагрузки.

А На самом деле, если можешь использовать регистры - зачем лезти в память?

Ответить | Правка | Наверх | Cообщить модератору

146. "Новая версия среды разработки Arduino IDE 2.3 "  +/
Сообщение от n00by (ok), 13-Фев-24, 08:47 
Имел ввиду память под код, там размер прошивки 60 байт (а на "языке Wiring" с доработками 244). Откопал ту idb, рядом авторский исходник. Похоже, автор высчитывал времянки, зная время исполнения команд. Но толку от этого мало - без кварца, на внутреннем генераторе, частота создаваемого меандра отличается от требуемых 75 Гц (для проверки я и сравнивал прошивку на соответствие исходнику). Даже когда в серийном устройстве (https://tes.spb.ru/images/dtinstruction_compressed.pdf) стоит кварц (если там вообще есть Атмега), в любом случае придётся проверять осциллографом, значит можно и подобрать константы.


;HiFreq TES @ Ext 16 Mhz

.include "tn25def.inc"

;********
.def       Temp         = r16              ; Temporary Register

.def       CntLo         = r24              ; Count Register
.def       CntHi         = r25
    
;********      
.Cseg
        
.Org    $0000

;********
Reset:
    ldi    Temp,    $07            ; PortB (0,1,2) as Outputs
    out    DDRB,    Temp
    out    PORTB,    Temp
    
;********
LoopA:
    ldi    CntHi,    High (323)        ; 3.225 mSecs Loop
    ldi    CntLo,    Low  (323)

    ldi    Temp,    $02            ; 2.5 uSecs Loop        
    out    PORTB,    Temp
    ldi    Temp,    12
    dec    Temp                
    brne    pc-1
    nop
    nop

    ldi    Temp,    $04            ; 7.5 uSecs Loop            
    out    PORTB,    Temp
    ldi    Temp,    38
    dec    Temp                
    brne    pc-1

    sbiw    CntLo,    1
    brne    LoopA+2                

;********
LoopB:
        ldi    CntHi,    High (967)        ; 9.675 mSecs Loop
    ldi    CntLo,    Low  (967)

    ldi    Temp,    $03            ; 2.5 uSecs Loop            
    out    PORTB,    Temp
    ldi    Temp,    12
    dec    Temp                
    brne    pc-1
    nop
    nop

    ldi    Temp,    $05            ; 7.5 uSecs Loop            
    out    PORTB,    Temp
    ldi    Temp,    38
    dec    Temp                
    brne    pc-1
    
    sbiw    CntLo,    1
    brne    LoopB+2

        rjmp    LoopA


/*
* TES
* см. http://www.ullasmann.eu/
*/

//#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>

#define O1 (1 << PB0)
#define O2 (1 << PB1)
#define O4 (1 << PB2)

// пауза в 10 мкс
#define u_pause(_10uS) __builtin_avr_delay_cycles((_10uS) * F_CPU / 10000000)

// должно быть 2.5 мкс
// подстроено под внутренний генератор
#define PULSE 26

// должно быть 7.5 мкс
// подстроено под внутренний генератор
#define PAUSE 78

// длительность сеанса 30 мин
//#define SEANCE (30 * 60 * 77)

int main(void)
{
  DDRB = O1 | O2 | O4;

  // 30 минут
  for (unsigned s = 30; s; s-- )
    for (unsigned m = 60 * 77; m; m-- ) {
      // длина пульса 3.225 мс
      for (unsigned ps = 323; ps; ps--) {
        PORTB = O2;
        u_pause(PULSE);
        PORTB = O4;
        u_pause(PAUSE);
      }
      // длина паузы 9.675 мс
      for (unsigned ps = 967; ps; ps--) {
        PORTB = O2 | O1;
        u_pause(PULSE);
        PORTB = O4 | O1;
        u_pause(PAUSE);
      }
    }
  // экономим питание
  PORTB = 0;
  MCUCR |= 0x70; // Idle
  __builtin_avr_cli();
  __builtin_avr_sleep();
}


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру