Easyelectronics.ru

Электроника для всех
Текущее время: 24 янв 2019, 18:18

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Чтение из SREG ATMega8A
СообщениеДобавлено: 03 май 2018, 13:19 
Заглядывает иногда

Зарегистрирован: 03 фев 2015, 18:37
Сообщения: 62
Всем добрый день! Что-то я не въезжаю, пишу в Atmel студии 7-ой, пытаюсь читать из SREG, а там нули, причем перед этим ставил флаг Z в 1-ку. Смотрю адресацию, в инклуде студии адрес SREG 0x3F, смотрю в отладчике той же студии в менюшке I/O адрес 0x5F, что за нафиг, откуда смещение берется в 20 адресов?... Может я чего недопонимаю или студия чудит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 03 май 2018, 13:26 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3088
даташит, Figure 12-2. Data Memory Map


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 03 май 2018, 13:47 
Заглядывает иногда

Зарегистрирован: 03 фев 2015, 18:37
Сообщения: 62
Уже разобрался, адрес регистра ввода вывода 3F, к нему можно обратиться через IN, а если через ST, то адрес в памяти 5F


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 07 май 2018, 15:59 
Заглядывает иногда

Зарегистрирован: 03 фев 2015, 18:37
Сообщения: 62
И еще ребят, не могу понять, можно как-то считать program counter, не могу найти что-то...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 07 май 2018, 16:07 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 5384
Как можно считать то, что изменяется в процессе выполнения процедуры считывания? ......
Но, если нужно знать реальный адрес некоторой конструкции, то можно сделать так:
call far test_label
test_label: pop reg
В результате, в reg будет лежать реальный адрес test_label.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 07 май 2018, 16:49 
Заглядывает иногда

Зарегистрирован: 03 фев 2015, 18:37
Сообщения: 62
Да есть мысли сгородить что-то вроде обработчика очереди процессов, чтобы можно было делить процессы по времени, выделять квант времени на часть процесса и переходить на другой, сохраняя информацию о предыдущем, т.е. адрес окончания, чтобы можно было вернуться к следующей команде, для этого как минимум надо считать состояние SREG и знать следующий адрес в PC. Была мысль через Stack Pointer попробовать, потому как он в стек пишет адрес как раз возвращения из CALL или прерывания, что в моем случае более актуально, т.к. время отсчитывать будет как раз счетчик и срабатывать прерывание, а адрес доставать как раз из стека, но тогда нужно будет как-то вылазить из прерывания по другому адресу, т.е. адресу следующего процесса, идея рабочая, можно попробовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 07 май 2018, 17:18 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 5384
"как-то вылазить из прерывания по другому адресу"
Заменяйте значение, лежащее в стеке перед тем, как сделать ret. Так все делают. ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 07 май 2018, 17:39 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3479
Откуда: Новосибирск
Ищите по словам rtos asm. Я делал простейший вытесняющий диспетчер. Проект рабочий. Вникать будете сами. Причина проста. Работу со стеком нужно изучить так, чтобы от зубов отскакивало. Сами понимаете, малейшая ошибка приведет к срыву программы. И ладно если это некритичное устройство. А если блок управления станком?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 14 май 2018, 18:57 
Заглядывает иногда

Зарегистрирован: 03 фев 2015, 18:37
Сообщения: 62
demiurg1978, да вы правы со стеком, от идей с квантом времени на часть задачи и переход на другую, с учетом возможности возврата и выполнения предыдущей с момента выхода, начинаю отказываться, слишком много сложностей со стеком возникает, а именно надо знать размер стека, что в принципе не сложно и каждый раз его сохранять для каждого процесса отдельно, вот здесь и кроется основная сложность, т.к. величина эта будет очень динамична и рассчитывать для каждого процесса глубину стека, заранее выделяя область в оперативной памяти, какой-то сущий геморой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 14 май 2018, 19:07 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 5384
Гимор - есссно. Но работает.
Каждому процессу выделяется свой стек (кусок адресов) и в стеке обработчика следует лишь переставлять указатель на текущее значение стека этого процесса. Все данные процессов лежат в своих стеках, их никто не переписывает.
Да, "адрес" всегда один и тот-же (SP-N, N=const), поэтому никаких хитрых вычислений не требуется. ))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 15 май 2018, 12:03 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 202
sashavir писал(а):
Да есть мысли сгородить что-то вроде обработчика очереди процессов, чтобы можно было делить процессы по времени, выделять квант времени на часть процесса и переходить на другой, сохраняя информацию о предыдущем, т.е. адрес окончания, чтобы можно было вернуться к следующей команде

Эта задача решена -- https://bitbucket.org/dferreyra/avr-threads/wiki/Home


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Чтение из SREG ATMega8A
СообщениеДобавлено: 15 май 2018, 16:11 
Заглядывает иногда

Зарегистрирован: 03 фев 2015, 18:37
Сообщения: 62
Netzschlange, копипастом уровня дзен не достигнешь....


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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

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