Easyelectronics.ru

Электроника для всех
Текущее время: 22 янв 2021, 12:33

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 11:59 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
Приветствую, прошу совета и помощи.
Эполог: отлаживаю программу в железе без дебаггера, Астудио + 328Р. Оптимизация q1-qs - работало.
Эпизод:
при крайней прошивке добавил функцию trunc from math, убрал eesave, и Пздц
Пролог:
Работают только прерывания по таймерам. SPI and ADC мимо. Убираю оптимизацию, работает нестабильно.

Есть мысли?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 12:26 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
Первое, что я бы сделал -- это посмотрел на дизассемблированную прошивку, особенно на таблицу векторов.

PS: с эпилогом и прологом, что-то как-то не то...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 12:40 
Старожил

Зарегистрирован: 05 фев 2019, 23:50
Сообщения: 481
Откуда: Камчатка
Попробуйте полностью прописать таблицу векторов.
Насколько я знаю с аврками в этом направлении нет проблем.
Дизассемблер ,что даст? Ничего. Только покажет порядок .
А так одного вектора нехватает ,которого даже неиспользуешь,
Таблица улетает в никуда,где-то там.
и вроде все работает и ничего нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 12:47 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3047
Цитата:
Астудио

Какой версии? Какой версии тулчейн?

Цитата:
Оптимизация q1-qs - работало.

Что за оптимизации такие? Может -O1, -Os?

Цитата:
и Пздц

И что это значит. Не расшифровка слова, а что именно произошло?

Цитата:
Работают только прерывания по таймерам. SPI and ADC мимо. Убираю оптимизацию, работает нестабильно.

Что значит "нестабильно"? Что происходит с оптимизацией?

Цитата:
Есть мысли?

Есть. Мысли в том, что надо детальнее описывать проблему. О приведении кода я уж вообще молчу. У меня вопросы тут больше места занимают, чем ваше описание проблемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 12:52 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
Явно с ней, что-то не то. Посмотрю. Понять бы из-за чего оптимизатор меняет таблицу?
Флаг прерывания у SPI стоит, а по вектор не переходит. У ADC даже флаг не встаёт.
Если раньше адреса ееп были разбросаны по всей области, то сейчас с 0 адреса.

Вечером дополню недостающие данные. Составил топик за рулём.

Не стабильно - значит частота пляшет. Смотрю по частоте тока и часам (rtc).
Спасибо за ответы, я до вечера в полях.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 22:49 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
NStorm писал(а):
Какой версии? Какой версии тулчейн?

Студия 7.0.23.97
avr8-gnu-toolchain-3.6.2.1778

[quote="NStorm"]Что за оптимизации такие? Может -O1, -Os?[quote="NStorm"]
Все верно О

[quote="NStorm"]И что это значит. Не расшифровка слова, а что именно произошло?[quote="NStorm"]
Вектора прерываний неверные, программа не переходит на прерывания, хотя флаг стоит, тактирование есть, глобальные прерывания включены. Сна нет, MCUSR чист.

[quote="NStorm"]Что значит "нестабильно"? Что происходит с оптимизацией?[quote="NStorm"]
от O1 до Os беда, что выше описал. SPI и ADC прерывания не работают. Без оптимизации, прерывания TC нестабильны по частоте, также и ADC. Вижу по частоте переменного тока и часам

[quote="NStorm"] О приведении кода я уж вообще молчу.[quote="NStorm"]
следующими постами

Думаю сильно не поможет.


Все это не раельно нахрапом взять.

Все работало на всех уровнях оптимизации пока не снял бит EESAVE при прошивке.
Прошил, проверил работу, нужно было добавить/исправить малость и решил обновить ЭППЗУ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 22:51 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
не помещаются, не в них дело


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 22:52 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
igarr писал(а):
Попробуйте полностью прописать таблицу векторов.


Где ее размещать в .INIT?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 22:58 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3693
Откуда: Новосибирск
1 - Вы неправильно начали тему. В какой среде вы работаете. AVR-Studio, CodeVision, IAR.
2 - Выложите свой проект. Если секретный, ну тогда пробуйте обрезать.
3 - Смущает, что не выставляется флаг. Это означает, что выкидывает куски кода. Опять же, это предпологает выкладывание проекта. Если секрет, тогда хотя бы кусок, где инициализация АЦП.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:08 
Старожил

Зарегистрирован: 05 фев 2019, 23:50
Сообщения: 481
Откуда: Камчатка
CReW писал(а):
igarr писал(а):
Попробуйте полностью прописать таблицу векторов.


Где ее размещать в .INIT?

Нее ,init тут непричем.
Размещать по адресам указанных в документации микроконтроллера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:22 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
CReW писал(а):
Студия 7.0.23.97
avr8-gnu-toolchain-3.6.2.1778

Вот это сообщение Вы криво оформили, читать не возможно...


Последний раз редактировалось Netzschlange 21 фев 2020, 23:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:26 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
И с чего Вы вдруг решили, что у Вас таблица векторов кривая. Дизасм прошивки видели? Скорее всего нет.
Поэтому есть предположение, что Вы не правильно трактуете данные отладки, которую Вы, пока, не понятно как производите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:27 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
Таблица векторов верная
Код:
Таблица векторов         
Вектор      направление   
00000000  JMP 0x000002E0   reset   000002E0  CLR R1   section  .init2?
00000002  JMP 0x000002FD   #define INT0_vect_num     1   000002FD  JMP 0x00000000   reset
00000004  JMP 0x000002FD   #define INT1_vect_num     2   000002FD  JMP 0x00000000   
00000006  JMP 0x000002FD   #define PCINT0_vect_num   3   000002FD  JMP 0x00000000   
00000008  JMP 0x000002FD   #define PCINT1_vect_num   4   000002FD  JMP 0x00000000   
0000000A  JMP 0x000002FD   #define PCINT2_vect_num   5   000002FD  JMP 0x00000000   
0000000C  JMP 0x000002FD   #define WDT_vect_num      6   000002FD  JMP 0x00000000   
0000000E  JMP 0x000002FD   #define TIMER2_COMPA_vect_num 7   000002FD  JMP 0x00000000   
00000010  JMP 0x000002FD   #define TIMER2_COMPB_vect_num 8   000002FD  JMP 0x00000000   
00000012  JMP 0x000002FD   #define TIMER2_OVF_vect_num   9   000002FD  JMP 0x00000000   
00000014  JMP 0x000002FD   #define TIMER1_CAPT_vect_num  10   000002FD  JMP 0x00000000   
00000016  JMP 0x000010D6   #define TIMER1_COMPA_vect_num 11   ISR(TIMER1_COMPA_vect)   
00000018  JMP 0x000002FD   #define TIMER1_COMPB_vect_num 12   000002FD  JMP 0x00000000   
0000001A  JMP 0x000002FD   #define TIMER1_OVF_vect_num   13   000002FD  JMP 0x00000000   
0000001C  JMP 0x0000071D   #define TIMER0_COMPA_vect_num 14   ISR(TIMER0_COMPA_vect)   
0000001E  JMP 0x000002FD   #define TIMER0_COMPB_vect_num 15   000002FD  JMP 0x00000000   
00000020  JMP 0x000002FD   #define TIMER0_OVF_vect_num  16   000002FD  JMP 0x00000000   
00000022  JMP 0x00001531   #define SPI_STC_vect_num  17   ISR(SPI_STC_vect)   
00000024  JMP 0x000002FD   #define USART_RX_vect_num 18   000002FD  JMP 0x00000000   
00000026  JMP 0x000002FD   #define USART_UDRE_vect_num   19   000002FD  JMP 0x00000000   
00000028  JMP 0x000002FD   #define USART_TX_vect_num 20   000002FD  JMP 0x00000000   
0000002A  JMP 0x0000074A   #define ADC_vect_num      21   ISR(ADC_vect)   
0000002C  JMP 0x000002FD   #define EE_READY_vect_num 22   000002FD  JMP 0x00000000   
0000002E  JMP 0x000002FD   #define ANALOG_COMP_vect_num  23   000002FD  JMP 0x00000000   
00000030  JMP 0x000002FD   #define TWI_vect_num      24   000002FD  JMP 0x00000000   
00000032  JMP 0x000002FD   #define SPM_READY_vect_num    25   000002FD  JMP 0x00000000   



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:35 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
Netzschlange писал(а):
И с чего Вы вдруг решили, что у Вас таблица векторов кривая. Дизасм прошивки видели? Скорее всего нет.
Поэтому есть предположение, что Вы не правильно трактуете данные отладки, которую Вы, пока, не понятно как производите.


Пишу модуль, прошиваю устройство. Дебажжу в студии, добавляю таблицы нужных мне данных и смотрю поведение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:36 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
Это не правильная таблица векторов для 328P (такой контроллер???). Каждый вектор должен занимать 4-е байта. Как она у Вас получилась?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:46 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3693
Откуда: Новосибирск
Netzschlange писал(а):
Это не правильная таблица векторов для 328P (такой контроллер???). Каждый вектор должен занимать 4-е байта. Как она у Вас получилась?

Все правильно. Счетчик команд 2 байтный.
Show


Последний раз редактировалось demiurg1978 21 фев 2020, 23:48, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:47 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
Может я не правильно трактую данные...
Таблица векторов для 328P состоит из 4-х байт для каждого вектора, т.е. два слова. Слева, в столбце вектор, вижу приращение +2. И не понятно +2 слова или +2 байта?
И это скорее не дизасм, а что-то другое.
Прошу прощения, если ввёл в заблуждение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:55 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
Буду проверять.

Писал на 168PA, затем перешел на 328Р. С тех пор 8K дописал.

Да, по 0 адресу почему-то в R1 подгружает адрес регистра EECR (3F)
Код:

000002E0  CLR R1      Clear Register
000002E1  OUT 0x3F,R1      Out to I/O location
000002E2  SER R28      Set Register
000002E3  LDI R29,0x08      Load immediate



а в Y стэк


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 21 фев 2020, 23:58 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
CReW писал(а):
Netzschlange писал(а):
И с чего Вы вдруг решили, что у Вас таблица векторов кривая. Дизасм прошивки видели? Скорее всего нет.
Поэтому есть предположение, что Вы не правильно трактуете данные отладки, которую Вы, пока, не понятно как производите.


Пишу модуль, прошиваю устройство. Дебажжу в студии, добавляю таблицы нужных мне данных и смотрю поведение.


Вот как Вас понимать...
В студии дебажиде, используя встроенный симулятор? Тогда зачем прошиваете контроллер?
Или всё-таки дебажите непосредственно контроллер? Тогда как дебажите? Используя последовательный порт? Или светодиодами состояния подсвечиваете?


Последний раз редактировалось Netzschlange 22 фев 2020, 00:03, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 22 фев 2020, 00:00 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
нее все верно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 22 фев 2020, 00:02 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
CReW писал(а):
Буду проверять.

Писал на 168PA, затем перешел на 328Р. С тех пор 8K дописал.

Да, по 0 адресу почему-то в R1 подгружает адрес регистра EECR (3F)
Код:

000002E0  CLR R1      Clear Register
000002E1  OUT 0x3F,R1      Out to I/O location
000002E2  SER R28      Set Register
000002E3  LDI R29,0x08      Load immediate



а в Y стэк


Вы в первом сообщении говорили, что используете опции оптимизации -O1 .. -Os, т.е. можно сделать вывод об использовании языка C или C++. А сейчас приводите куски ассемблера.
На каком языке прошивка написана?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 22 фев 2020, 00:05 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
Netzschlange писал(а):
Или всё-таки дебажите непосредственно контроллер? Тогда как дебажите? Использую последовательный порт? Или светодиодами состояния подсвечиваете?


Дебажжить контроллер не могу, он же "памятник". По SPI бросаю данные в "шину индикации" (семисегментник, и 12 диодов). Дебажжу в студии.
Собрал устройство, натягиваю программу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 22 фев 2020, 00:06 
Старожил
Аватара пользователя

Зарегистрирован: 24 апр 2014, 04:58
Сообщения: 297
Netzschlange писал(а):
в первом сообщении говорили, что используете опции оптимизации -O1 .. -Os, т.е. можно сделать вывод об использовании языка C или C++. А сейчас приводите куски ассемблера.
На каком языке прошивка написана?

Чистый си.
Это дизассм из студии


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 22 фев 2020, 00:06 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3693
Откуда: Новосибирск
Я когда перешел на си, пробовал работать в студии 4.19 плюс avr-toolchain. Заколебался воевать, чуть что не так напишешь, выкидывает целые куски кода (в дизасме это видно). Добила работа с Flash и EEPROM. Все эти костыли. Вроде как эту проблему решили в 7 студии, но я так и не смог в ней работать. Большой объем и так далее. В итоге остановился на IAR. Этот компилятор решил все мои проблемы. Так и работаю в нем.
Вы так и не выложили проект. Хотя он для 7 студии... Так так так... Как бы нам сделать...
Вот как поступим. Выложите проект скомпилированный в том виде, когда он не работает. От вас сишные файлы и файл для симуляции в студии. Попробую сравнить код сишный и дизасм.


Последний раз редактировалось demiurg1978 22 фев 2020, 00:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таблица векторов прерываний при оптимизации
СообщениеДобавлено: 22 фев 2020, 00:07 
Старожил

Зарегистрирован: 04 окт 2012, 00:23
Сообщения: 2745
Откуда: Москва
-> в SREG при этом сбрасывая глобальный флаг разрешения прерываний


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу 1, 2  След.


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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB