реклама на сайте
подробности

 
 
> ATtiny2313 прием по SPI 4 байт
WreWolf
сообщение Sep 19 2009, 10:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



на ATtiny2313
Необходимо принять 4 байта
обьединить по 2
PWM_S = первые 2 байта
Serv_S= вторые 2 байта

И вывести PWM на 1 ножку если первые 2 байта больше 127 или на 2 ножку если меньше.
ширина PWM пропорциональна значеию |X-127|.

Код
        If PWM_S >= 127 Then
            PWM1 = Math.Abs(TextBox1.Text - 127)
            PWM2 = Disable
        Else
            PWM2= Math.Abs(TextBox1.Text - 127)
            PWM1 = Disable
        End If
        //PWM1 и PWM2 соответственно ширина 1 и 2 PWM


а вторые 2 байта нужны для выдачи на 3 ножку сигнала(управление сервоприводом)
частота 50Гц
ширина импульса от 0.9мкс до 2.1 пропорционально полученному значению

п.с.
можно ли это реализовать на ATtiny26
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
WreWolf
сообщение Oct 13 2009, 07:57
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 10-11-07
Пользователь №: 32 211



Как в AVR Studio 4 написать обработчик прерываний?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 13 2009, 16:06
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(WreWolf @ Oct 13 2009, 10:57) *
Как в AVR Studio 4 написать обработчик прерываний?

AVR Studio - это просто среда. Там можно набирать любую программу. В том числе и на Си. Поэтому вопрос некоректен. Думаю что вы хотели спросить "как написать обработчик прерывания на ассемблере".
Если это так, то ответ следующий:

1) Обработчик прерывания - это обычная подпрограмма, переход на которую осуществляется по фиксированному вектору. Соответственно, вам надо написать подпрограмму, а в векторе-обработчика разместить переход на неё.
2) Надо учесть, что при переходе к обработке прерывания, автоматически сбрасывается бит разрешения прерывания. Соответственно необходимо разрешить его (если это требуется) при выходе. Обычно для этого используется инструкция reti вместо ret.
3) Надо почитать в даташите на данную микросхему необходимые дополнительные действия, если они есть. Так например иногда используется один общий обработчик для группы прерываний (флагов) или требуется ручной сброс флага прерывания и т.п.
4) Необходимо сохранить sreg а также используемые в прерывании регистры и восстановить их при выходе.

Например так:
Вектора:
Код
    .cseg

    rjmp    init

;****************************************************************
;*                             Прерывания.                            *
;****************************************************************



.if chip == 88
        .org    OC2Aaddr
    rjmp    Tim2Cmp        ; Обработка двигателя
        .org    OVF0addr
.else
        .org    OC2addr
    rjmp    Tim2Cmp        ; Обработка двигателя
        .org    OVF0addr
.endif


Обработчик:
Код
;****************************************************************
;*                Прерывание от таймера 0. (180мkс)                *
;****************************************************************

.equ    PerIzm = 180        ; Период измерения 180 мкс
.equ    FuelCanal = 4-2        ; Канал измерения по частоте

Tim0Ovf:
    in        tmpsreg,sreg    ; Сохранить SREG
............
Tim0OvfEnd:
    out        sreg,    tmpsreg
    reti
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- WreWolf   ATtiny2313 прием по SPI 4 байт   Sep 19 2009, 10:15
- - Ledmaster   Вопрос навстречу, а зачем принимать по два байта, ...   Sep 19 2009, 14:00
- - WreWolf   Т.е. нужно принимать 2 слова. А мне необходимо при...   Sep 21 2009, 07:28
|- - Ledmaster   Цитата(WreWolf @ Sep 21 2009, 13:28) Т.е....   Sep 22 2009, 03:41
- - WreWolf   принять 4 байта например: 0xAC7F PWM_S = 0xAC Serv...   Sep 22 2009, 10:51
|- - zltigo   Цитата(WreWolf @ Sep 22 2009, 12:51) прин...   Sep 22 2009, 11:26
- - WreWolf   действительно ( но в принципе суть в том что бы та...   Sep 23 2009, 05:16
|- - Ledmaster   Цитата(WreWolf @ Sep 23 2009, 11:16) суть...   Sep 23 2009, 14:30
- - WreWolf   Ну не совсем так. Пишется программа которая через ...   Sep 23 2009, 17:07
|- - Ledmaster   Цитата(WreWolf @ Sep 23 2009, 23:07) Пише...   Sep 24 2009, 03:18
- - WreWolf   Ну этим занимаю не я. Этим занимается другой челов...   Sep 24 2009, 10:17
- - XVR   Совет первый - выкинуть обрывки кода, найденные не...   Sep 25 2009, 07:05
- - WreWolf   1) Обрывки кода выкинуты 2) Даташит прочитан. 3) В...   Sep 25 2009, 11:17
- - XVR   Выглядит нормально. Теперь по поводу PWM (я так по...   Sep 25 2009, 13:17
- - WreWolf   Нет у меня всего 2 PWM 1 для управления мотором 2 ...   Sep 25 2009, 16:59
|- - XVR   Цитата(WreWolf @ Sep 25 2009, 20:59) Нет ...   Sep 26 2009, 13:45
- - WreWolf   всего есть 2 таймера если вот там можно делать? ...   Sep 28 2009, 09:03
|- - XVR   Цитата(WreWolf @ Sep 28 2009, 13:03) всег...   Sep 30 2009, 09:30
- - WreWolf   CODE#include <avr/power.h> #include <avr/...   Sep 30 2009, 08:08
- - WreWolf   Цитата1) Обработчик прерывания - это обычная подпр...   Oct 17 2009, 09:19


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016