5277 (5277) wrote,
5277
5277

core5277, примеры использования

  Пример освновного файла:
    ;Идентификаторы задач и драйверов(1-16)
    ;---DIREVER-IDS---
    .EQU    TID_LOG_DRV                                = 0x01
    .EQU    TID_PCINT_DRV                            = 0x02
    .EQU    TID_BUS5277_DRV                        = 0x03
    .EQU    TID_1WIRE_DRV                            = 0x04
    .EQU    TID_DS18B20_DRV                        = 0x05
    ;---TASK-IDS---
    .EQU    TID_MONITOR                                = 0x09
    .EQU    TID_LEDS                                    = 0x0a
    .EQU    TID_PCINT_CHECK                        = 0x0b
    .EQU    TID_BUS                                    = 0x0c
    .EQU    TID_TEMPERATURE                        = 0x0e

    ;---TIMER_IDS---
    .EQU    TIMER_BUS5277                            = 0x01
    ;---FLAG-IDS---
    .EQU    FLAG_PCINT_DOOR                        = 0x01
    .EQU    FLAG_PCINT_BUS5277_RX                = 0x02
    .EQU    FLAG_BUS5277_RX_BUSY                    = 0x03
    .EQU    FLAG_BUS5277_TX_BUSY                    = 0x04
    .EQU    FLAG_BUS5277_HAVE_DATA                = 0x05
    ;---
    .EQU    BUS5277_BUS_ADDR                        = 0x7f

;---INCLUDES---------------------------------------------
    ;Обязательный блок, добавляем всегда
    .INCLUDE "core5277_header328.asm"
    .INCLUDE "core5277.asm"
    ;Не обязательный, добавляем по мере необходимости
    .INCLUDE "core5277_ram.asm"
    .INCLUDE "drv5277_log.asm"
    .INCLUDE "drv5277_pcint8.asm"
    .INCLUDE "drv5277_bus5277.asm"
    .INCLUDE "drv5277_1wire.asm"
    .INCLUDE "drv5277_ds18b20.asm"
    ;Блок задач
    .INCLUDE    "task_monitor.asm"
    .INCLUDE "task_temperature.asm"
    .INCLUDE    "task_sim_leds.asm"


MAIN:
    ;Запрещение прерываний
    CLI
    ;Инициализация стека
    LDI TEMP_H,high(RAMEND)
    LDI TEMP_L,low(RAMEND)
    OUT SPH,TEMP_H
    OUT SPL,TEMP_L

    ;Инициализация ядра
    CALL CORE5277_INIT

    ;Инициализация драйвера логирования
    LDI DRIVER_ID,TID_LOG_DRV
    LDI TEMP,high(DRV_LOG_INIT)
    MOV r0,TEMP
    LDI TEMP,low(DRV_LOG_INIT)
    MOV r1,TEMP
    LDI TEMP_H,PORTC
    LDI TEMP_L,(1<<PC0)
    CALL CORE5277_DRIVER_CREATE

    ;Инициализация драйвера внешних прерываний
    LDI DRIVER_ID,TID_PCINT_DRV
    LDI TEMP,high(DRV_PCINT_INIT)
    MOV r0,TEMP
    LDI TEMP,low(DRV_PCINT_INIT)
    MOV r1,TEMP
    CALL CORE5277_DRIVER_CREATE

    ;Инициализация драйвера шины 5277
    LDI DRIVER_ID,TID_BUS5277_DRV                                    ;Driver id
    LDI TEMP,high(DRV_BUS5277_INIT)                                ;Driver init offset
    MOV r0,TEMP
    LDI TEMP,low(DRV_BUS5277_INIT)
    MOV r1,TEMP
    LDI XH,(PORTD<<4|PD0)                                            ;RX pin
    LDI XL,(PORTD<<4|PD1)                                            ;TX pin
    LDI YH,(PORTB<<4|PB0)                                            ;DR pin
    LDI YL,(PORTB<<4|PB2)                                            ;TX led pin
    LDI ZH,BUS5277_BUS_ADDR                                            ;Bus Addr
    LDI TEMP_H,FLAG_BUS5277_RX_BUSY                                ;RX busy flag id
    LDI TEMP_L,FLAG_BUS5277_TX_BUSY                                ;TX busy flag id
    LDI LOOP_CNTR,FLAG_BUS5277_HAVE_DATA                        ;ES have data flag id
    LDI TEMP_EH,TID_PCINT_DRV                                        ;PCINT driver id
    LDI TEMP_EL,FLAG_PCINT_BUS5277_RX                            ;PCINT RX flag id
    LDI ACCUM,TIMER_BUS5277                                            ;Soft timer id
    ;CALL CORE5277_DRIVER_CREATE

    ;Инициализация 1wire
    LDI DRIVER_ID,TID_1WIRE_DRV
    LDI TEMP,high(DRV_1WIRE_INIT)
    MOV r0,TEMP
    LDI TEMP,low(DRV_1WIRE_INIT)
    MOV r1,TEMP
    LDI TEMP_H,PORTB
    LDI TEMP_L,(1<<PB2)
    CALL CORE5277_DRIVER_CREATE

    ;Инициализация DS18B20
    LDI DRIVER_ID,TID_DS18B20_DRV
    LDI TEMP,high(DRV_DS18B20_INIT)
    MOV r0,TEMP
    LDI TEMP,low(DRV_DS18B20_INIT)
    MOV r1,TEMP
    LDI ACCUM,TID_1WIRE_DRV
    CALL CORE5277_DRIVER_CREATE

    ;Инициализация монитора
    LDI TEMP,TID_MONITOR
    MOV TASK_ID,TEMP
    LDI TEMP,high(MONITOR_INIT)
    MOV r0,TEMP
    LDI TEMP,low(MONITOR_INIT)
    MOV r1,TEMP
    LDI TEMP,(0<<CORE5277_TASK_MODEBITS_NSUSP)
    MOV r2,TEMP
    CALL CORE5277_TASK_CREATE

    ;Инициализация задачи мигания светодиодов
    LDI TEMP,TID_LEDS
    MOV TASK_ID,TEMP
    LDI TEMP,high(SIM_LEDS_INIT)
    MOV r0,TEMP
    LDI TEMP,low(SIM_LEDS_INIT)
    MOV r1,TEMP
    LDI TEMP,(0<<CORE5277_TASK_MODEBITS_NSUSP)
    MOV r2,TEMP
    CALL CORE5277_TASK_CREATE

    ;Инициализация задачи вывода температуры
    LDI TEMP,TID_TEMPERATURE
    MOV TASK_ID,TEMP
    LDI TEMP,high(TEMPERATURE_INIT)
    MOV r0,TEMP
    LDI TEMP,low(TEMPERATURE_INIT)
    MOV r1,TEMP
    CLR r2
    CALL CORE5277_TASK_CREATE

    ;Запуск диспетчера
    JMP CORE5277_DISPATCHER
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments