Например TDA7294

Форум РадиоКот • Просмотр темы - WinAvr в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт авг 14, 2025 11:07:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2195 ]     ... , , , 54, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пн апр 02, 2012 23:16:39 
Родился
Аватар пользователя

Зарегистрирован: Пт мар 30, 2012 20:29:41
Сообщений: 9
Откуда: СПб
Рейтинг сообщения: 0
vitalik_1984 писал(а):
tzzk писал(а):
Ну я думаю, что это простое задание для многих из вас, а именно: даны МК: AT90can128 дисплей DV40400, клавиатура телефонная. написать программу проверки на нажатия кнопок...вот такое вот задание

А схема есть? Что сами начали делать?


Да, есть, прикладываю схему. Она разбита на 3 листа а4

Сам только недавно начал осваивать программирование МК и вообще С/C++. Сам писал программы на "двиганье" ножки и по передаче/приему байта по UARTу. Писал программу на нажатие 1 кнопки но там не прошла отладка в AVRStudio.


Вложения:
003а.jpg [69.86 KiB]
Скачиваний: 446
002.jpg [83.16 KiB]
Скачиваний: 441
001a.jpg [109.85 KiB]
Скачиваний: 416

_________________
Кот кота видит издалека)
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вт апр 03, 2012 17:16:57 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Нифига себе задание что это проект запуска ракеты?
Может вы создадите свою тему? тут так то вопросы по WinAVR.

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вт апр 03, 2012 18:44:48 
Родился
Аватар пользователя

Зарегистрирован: Пт мар 30, 2012 20:29:41
Сообщений: 9
Откуда: СПб
Рейтинг сообщения: 0
vitalik_1984 писал(а):
Нифига себе задание что это проект запуска ракеты?
Может вы создадите свою тему? тут так то вопросы по WinAVR.



В принципе в схеме я разбираюсь, но именно в написании программы состоит проблема :(

Создал свою тему, спасибо)

_________________
Кот кота видит издалека)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт апр 05, 2012 14:49:55 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
Ребят, добрый день. Вопрос. Вы замечали, что когда генерируешь прерывание, компилятор переделывает всё это дело в ассемблер и добавляет строки, где производит операции со стеком. Дело благое, но на это тратится время, которое в моём случае на вес золота. Можно ли как-то обойти это дело? Или вообще убрать эти строки, или же "пропихнуть" нужные мне операции до операций со стеком. Спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт апр 05, 2012 14:57:58 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
q9957789 писал(а):
Ребят, добрый день. Вопрос. Вы замечали, что когда генерируешь прерывание, компилятор переделывает всё это дело в ассемблер и добавляет строки, где производит операции со стеком. Дело благое, но на это тратится время, которое в моём случае на вес золота. Можно ли как-то обойти это дело? Или вообще убрать эти строки, или же "пропихнуть" нужные мне операции до операций со стеком. Спасибо.

у вас есть 2 легальных пути для достижения своей цели:
1. Написать полностью ассемблерный модуль (файл *.S) с обработчиком нужного вам прерывания.
2. Использовать макрос ISR_NAKED для обработчика и соответствующим образом оформленную ассемблерную вставку в Сишном коде.

я бы советовал пойти по первому пути, но при должном старании и второй не плох.

кроме того, последние версии AVR-GCC со стеком работают получше, возможно, вам будет достаточно и этого...

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт апр 05, 2012 16:16:00 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
Мастер Ломастер писал(а):
q9957789 писал(а):
Ребят, добрый день. Вопрос. Вы замечали, что когда генерируешь прерывание, компилятор переделывает всё это дело в ассемблер и добавляет строки, где производит операции со стеком. Дело благое, но на это тратится время, которое в моём случае на вес золота. Можно ли как-то обойти это дело? Или вообще убрать эти строки, или же "пропихнуть" нужные мне операции до операций со стеком. Спасибо.

у вас есть 2 легальных пути для достижения своей цели:
1. Написать полностью ассемблерный модуль (файл *.S) с обработчиком нужного вам прерывания.
2. Использовать макрос ISR_NAKED для обработчика и соответствующим образом оформленную ассемблерную вставку в Сишном коде.

я бы советовал пойти по первому пути, но при должном старании и второй не плох.

кроме того, последние версии AVR-GCC со стеком работают получше, возможно, вам будет достаточно и этого...


Спасибо, что касается работают получше, то это в любом случае не удовлетворяет требованиям, тк мне критичен каждый такт. Делаю синхронизацию 2-х м-последовательностей путём гхм, извините, детектирования растущего фронта синхроимпульса, исходящего, очевидно, из передатчика, после обнаружения запускаю вот то самое прерывание. Вся мп имеет время такта 10мкс, даже в лучшем случае было отставание одной от другой на 1,5 мкс, или 15%, а так низя)

В любом случае, то что вы предложили, кажется, идеально решает проблему, только я не знаю ничего ни о 1м, ни о 2м способе.
ну что касается выбора, написать ассемблерный модуль мне видится легче, чем морочиться со вставками. Значит идём по 1му...

Код на си можно описать так:(чтобы не заморачиваться вам)
Код:
ISR (INT0_vect)
{
   PORTB=0xC0;//То что должно выполниться как можно раньше и без использования стека(практически), я надеюсь.
//дальше код кусочек, который может подождать.
}


Вот вопрос: как это оформить в .s файле и главное - как подключить его.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт апр 05, 2012 21:04:57 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
q9957789 писал(а):
Код на си можно описать так:(чтобы не заморачиваться вам)
Код:
ISR (INT0_vect)
{
   PORTB=0xC0;//То что должно выполниться как можно раньше и без использования стека(практически), я надеюсь.
//дальше код кусочек, который может подождать.
}
Вот вопрос: как это оформить в .s файле и главное - как подключить его.

если вы хотите делать асм-вставку, то код на си должен быть таким:
Код:
ISR(INT0_vect, ISR_NAKED){
   asm("
        push   r17 \n
        ldi    r17, 0xC0 \n
        out    _SFR_IO_ADDR(PORTB), r17  \n
        ...
        pop    r17   \n
        reti 
   ");
}
по образу и подобию можете написать все, что пожелаете. учтите, что "кусочек, который может подождать" (вместо многоточия) придется тоже писать на голом асме, т.к. благодаря ISR_NAKED вы не имеете возможности пользоваться Сишными возможностями из-за автоматически несохраняемых регистров в стеке.

про то, как оформлять файлы *.S (обращаю ваше внимание на то, что регистр буквы S играет роль!!!), лучше всего почитать в документации. подключать их к проекту точно так же, как и исходники на Си.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт апр 05, 2012 23:25:58 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
Мастер Ломастер писал(а):
если вы хотите делать асм-вставку, то код на си должен быть таким:
Код:
ISR(INT0_vect, ISR_NAKED){
   asm("
        push   r17 \n
        ldi    r17, 0xC0 \n
        out    _SFR_IO_ADDR(PORTB), r17  \n
        ...
        pop    r17   \n
        reti 
   ");
}
по образу и подобию можете написать все, что пожелаете. учтите, что "кусочек, который может подождать" (вместо многоточия) придется тоже писать на голом асме, т.к. благодаря ISR_NAKED вы не имеете возможности пользоваться Сишными возможностями из-за автоматически несохраняемых регистров в стеке.

про то, как оформлять файлы *.S (обращаю ваше внимание на то, что регистр буквы S играет роль!!!), лучше всего почитать в документации. подключать их к проекту точно так же, как и исходники на Си.


Я так вижу даже при написании .S файла нужно пользоваться этим извращённым ассемблером?)))

Ну ладно это пол беды. Мне дальше, по ходу прерывания, нужно вызывать си функцию(если конкретней, то это функция вывода на LCD). Переписывать её отдельно на ассемблере я не вижу возможным, уж очень много мороки. Как это разрешить?

Вот полностью код, для ясности:
Код:
ISR (INT0_vect)//многие переменные объявлены регистрами
{
   PORTB=0xC0;
   TCNT0=79;
   out=0x40;//r2
   born=0xE0;//r16
   q=1;//r17
   status&=~_BV(mid);
   if(!(status&_BV(rcvr)))
   {
       LCD_WriteCom(0x01);
       _delay_ms(2);
       LCD_WriteCom(0x83);
       LCD_WriteData('%');
       ACSR=_BV(ACIE)|0b11;
       status|=_BV(rcvr);   
   }   
    TIFR=0xFF;
    GIFR=0xFF;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт апр 05, 2012 23:30:13 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
q9957789Вы читать умеете или только на цитаты нажимать?
Мастер Ломастер писал(а):
если вы хотите делать асм-вставку, то код на си должен быть таким:
Код:
ISR(INT0_vect, ISR_NAKED){
}

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Чт апр 05, 2012 23:36:00 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
vitalik_1984 писал(а):
q9957789Вы читать умеете или только на цитаты нажимать?
Мастер Ломастер писал(а):
если вы хотите делать асм-вставку, то код на си должен быть таким:
Код:
ISR(INT0_vect, ISR_NAKED){
}

Слышь ты, красавчик, я тоже самое могу у тебя спросить.
Мастер Ломастер писал(а):
учтите, что "кусочек, который может подождать" (вместо многоточия) придется тоже писать на голом асме, т.к. благодаря ISR_NAKED вы не имеете возможности пользоваться Сишными возможностями из-за автоматически несохраняемых регистров в стеке.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 10:12:58 
Встал на лапы

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пн мар 26, 2012 05:25:06
Сообщений: 106
Рейтинг сообщения: 0
Выводите информацию на экран в основном цикле.
А вообще суть задачи не уловил, если нужно синхронизировать какие-то сигналы , да еще и с высокой точностью, то не проще-ли воспользоваться логикой\плис?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 10:19:10 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
q9957789 писал(а):
Я так вижу даже при написании .S файла нужно пользоваться этим извращённым ассемблером?)))
я не знаю, что именно вы называете извращенным ассемблером, но как по мне, так avr-as на несколько порядков лучше, чем дефолтный ассемблер в AVR Studio.

кроме того, обращаю ваше внимание на то, что я говорил об ассемблерных вставках в Сишном коде, т.к. ISR - это макрос дя исходника Си, а не ассемблера. а S-файл - это именно исходник на ассемблере, без всяких ISR и т.п. Сишных штучек, правда, с полной поддержкой сишного препроцессора.

P.S. вам Совесть правильно подсказывает: вывод на ЖКИ (да и вообще куда бы то ни было) делать в обработчике прерывания - это моветон программирования! так делать не стоит.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 18:26:01 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
Я бы вообще не заморачивался, но это не моя прихоть запрячь все эти прелести на мк. Хотя честно говоря, на плисах вообще никогда не работал и даже не знаю как это сделать, кстати с большим бы интересом послушал про это.

Что касается вывода на ЖКИ, то, во-первых, сделать это в таком виде надо только один раз, при обнаружении синхроимпульса на ножке, а, во вторых, в основном цикле я вообще ничего сделать не имею права, ибо появляется джиттер, опяь таки большой дядя настучит по бошке)))

В любом случае проблему я решил, через naked и вставки. Погрешность до 1%. Огромное вам спасибо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 19:08:44 
Встал на лапы

Карма: -1
Рейтинг сообщений: 4
Зарегистрирован: Пн мар 26, 2012 05:25:06
Сообщений: 106
Рейтинг сообщения: 0
То что проблема решена это хорошо, но сути подсказок вы не поняли.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 19:12:33 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
вот так всегда: совесть разочек подкачает - и пошло-поехало... не хорошо это, когда задача решена неправильно, ой как нехорошо...

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 19:34:07 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
xD я ничё не понял из того что вы щас написали)

Что по-вашему не так?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 19:35:36 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
не так - выводить на ЖКИ из обработчика прерываний.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Пт апр 06, 2012 21:41:18 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
Ещё раз, у меня нет выхода, просто не могу)потом последствия будут хуже чем если я буду удовлетворять вашему программистскому кодексу чести.
А что за подсказки, что за суть? Если только в этом, то..ладно. ^^


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Сб апр 07, 2012 20:08:41 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
q9957789 писал(а):
Слышь ты, красавчик, я тоже самое могу у тебя спросить.
Мастер Ломастер писал(а):
учтите, что "кусочек, который может подождать" (вместо многоточия) придется тоже писать на голом асме, т.к. благодаря ISR_NAKED вы не имеете возможности пользоваться Сишными возможностями из-за автоматически несохраняемых регистров в стеке.

И где тут видно содержание файла .S про который сами же спросили?
q9957789 писал(а):
Я так вижу даже при написании .S файла нужно пользоваться этим извращённым ассемблером?)))

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: WinAvr в вопросах и ответах
СообщениеДобавлено: Вс апр 08, 2012 02:02:24 
Родился

Зарегистрирован: Чт апр 05, 2012 14:39:29
Сообщений: 8
Рейтинг сообщения: 0
vitalik_1984 писал(а):
И где тут видно содержание файла .S про который сами же спросили?

А вам без него плохо спится?

Вы читать умеете?Я всё хозяйство сделал через ISR_NAKED, соответственно ни о каких .S уже я не думал.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2195 ]     ... , , , 54, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Jack_A и гости: 328


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y