Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 22.05.2014, 10:39  
insiderbik
Временная регистрация
 
Регистрация: 20.06.2009
Сообщений: 51
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
insiderbik на пути к лучшему
По умолчанию Как загрузить указатель стека в CVAVR

Когда я еще писал проекты на ASMe в начале каждой подпрограммы я вставлял на всякий случай следующее:

Код:
ldi        r16,high(RAMEND)	;
out      SPH,r16		           ; Загружаем указатель стека	
ldi        r16,low(RAMEND)	;
out 	SPL,r16			; Загружаем указатель стека
sei
Сейчас возникла ситуация, что нужно передавать по UARTу пачки слов по 22 штуки и в некоторый момент времени (примерно через 20 циклов передачи) во время передачи с микроконтроллером начинают твориться "чудеса".
Раньше в ASMе я обошелся вышеприведенным кодом.
При увеличении размера стэка в настройках проекта в 2 раза число циклов передачи выросло в 2 раза, а затем снова ШВАХ. Из чего следует, что виноват точно стек.
Вообщем вопрос такой - как загрузить указатель стека в CVAVR наподобие как ASMе???
Реклама:
insiderbik вне форума  
Непрочитано 22.05.2014, 12:01  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,861
Сказал спасибо: 2,532
Сказали Спасибо 11,773 раз(а) в 5,897 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Про стек не скажу, а вот про работу с УАРТом - у Вас косяк.
И не надо править косяк перезагрузкой указателя стека, это до добра не доведет. Гораздо полезней найти косяк.
Как работаете с УАРТом?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
insiderbik (22.05.2014)
Непрочитано 22.05.2014, 13:38  
insiderbik
Временная регистрация
 
Регистрация: 20.06.2009
Сообщений: 51
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
insiderbik на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Сообщение от akegor Посмотреть сообщение
Про стек не скажу, а вот про работу с УАРТом - у Вас косяк.
И не надо править косяк перезагрузкой указателя стека, это до добра не доведет. Гораздо полезней найти косяк.
Как работаете с УАРТом?
Инициализация уарта:
Код:
// USART initialization
// Communication Parameters: 8 Data, 2 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART0 Mode: Asynchronous
// USART Baud Rate: 19200
UCSR0A=0x00;
UCSR0B=0x98;
UCSR0C=0x0E;
UBRR0H=0x00;
UBRR0L=0x3B;
функция отправки слова:
Код:
void USART_Transmit(char data)                                      
{
while (!(UCSR0A & (1‹‹UDRE)));
UDR0 = data;
}
соответственно вызов функции:
Код:
        USART_Transmit(Start);
        USART_Transmit(string11);
        USART_Transmit(string12);
        USART_Transmit(string21);
        USART_Transmit(string22);
        USART_Transmit(string31);
        USART_Transmit(string32);
        USART_Transmit(string41);
        USART_Transmit(string42);
        USART_Transmit(string51);
        USART_Transmit(string52);
        USART_Transmit(string61);
        USART_Transmit(string62);
        USART_Transmit(string71);
        USART_Transmit(string72);
        USART_Transmit(string81);
        USART_Transmit(string82);
        USART_Transmit(string91);
        USART_Transmit(string92);
        USART_Transmit(LOWperiod);
        USART_Transmit(HIGHperiod);
        USART_Transmit(Uab);
insiderbik вне форума  
Непрочитано 22.05.2014, 13:48  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,861
Сказал спасибо: 2,532
Сказали Спасибо 11,773 раз(а) в 5,897 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Странно. Прерывания от УАРТа?

В ЦВ никогда не использую прямое обращение к УАРТу. Только через getchar() и putchar(). Вашего эффекта никогда не наблюдалось, хотя данные гоняются сутками, месяцами...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
insiderbik (22.05.2014)
Непрочитано 22.05.2014, 14:01  
insiderbik
Временная регистрация
 
Регистрация: 20.06.2009
Сообщений: 51
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
insiderbik на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Сообщение от akegor Посмотреть сообщение
Странно. Прерывания от УАРТа?

В ЦВ никогда не использую прямое обращение к УАРТу. Только через getchar() и putchar(). Вашего эффекта никогда не наблюдалось, хотя данные гоняются сутками, месяцами...
Я тоже посылал через прерывание по приему, буфер и putchar() - думал, что ошибки из-за такого применения и изменил на то, как написал выше - так все равно такой же эффект.
insiderbik вне форума  
Непрочитано 22.05.2014, 14:12  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,861
Сказал спасибо: 2,532
Сказали Спасибо 11,773 раз(а) в 5,897 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Собака, видимо, порылась в другом месте.
Исключайте куски программы.
Или в другом проекте с нуля наворачивайте постепенно, начав с УАРТа.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
insiderbik (22.05.2014)
Непрочитано 22.05.2014, 14:32  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Если в программе вообще не используются прерывания,
то это чудеса!!! (Чудеса могут быть от приемника, особливо кривого USB - ишного )

Если используются, то надо смотреть не используются ли в них передаваемые переменные или этот же УАРТ. И хватает ли стека.

Чудес не бывает, как у маленьких детей.
Boba_spb вне форума  
Сказали "Спасибо" Boba_spb
insiderbik (22.05.2014)
Непрочитано 22.05.2014, 14:50  
insiderbik
Временная регистрация
 
Регистрация: 20.06.2009
Сообщений: 51
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
insiderbik на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Сообщение от Boba_spb Посмотреть сообщение
Если в программе вообще не используются прерывания,
то это чудеса!!! (Чудеса могут быть от приемника, особливо кривого USB - ишного )

Если используются, то надо смотреть не используются ли в них передаваемые переменные или этот же УАРТ. И хватает ли стека.

Чудес не бывает, как у маленьких детей.
а если и так, то что делать со стеком???
insiderbik вне форума  
Непрочитано 22.05.2014, 15:04  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,861
Сказал спасибо: 2,532
Сказали Спасибо 11,773 раз(а) в 5,897 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Сообщение от Boba_spb Посмотреть сообщение
И хватает ли стека.
Судя по первому посту, стек распухает с попытками передачи.
Кто-то где-то нахалюжно туда впендючивает невытаскиваемые данные.
Сколько имею дело с ЦВ - такое слышу в первый раз.
Потому и предложил в проект с нуля добавлять куски алгоритма, начав с передачи пакетов.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
insiderbik (22.05.2014)
Непрочитано 22.05.2014, 15:36  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Как загрузить указатель стека в CVAVR

Прога то на С написана. Стек может распухать только на вложенных прерываниях или реентерабельности подпрограмм.

Или АСМовские вставки кидают в стек и не вытаскивают.

Прерывания на этот УАРТ случаем не заряжены? А то кинули туды байт а он исчо и в прерывания скачет никому не нужные .
Boba_spb вне форума  
Сказали "Спасибо" Boba_spb
insiderbik (22.05.2014)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Так, рассказик :)) Я долго ржал :)) DK Отвлекитесь, эмбеддеры! 7 31.08.2007 22:33
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49
[Решено] про блоки питания бу-га-га! zalman Отвлекитесь, эмбеддеры! 12 29.01.2007 10:46
[Решено] Всем эмбеддерам посвящается... Decan Отвлекитесь, эмбеддеры! 0 24.10.2005 14:43


Часовой пояс GMT +4, время: 08:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot