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

 
 
> Глюки программирования mega128, в WinAvr или МикроПаскале
Who_are_you?
сообщение Aug 9 2017, 07:15
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 5-02-10
Из: Донецк
Пользователь №: 55 329



Программирую систему на ATmega128
и неважно на СИ или Паскале в WinAvr или МикроПаскале

Но возникает ситуация когда прошу, например,
подпрограмме вывести на LCD текст, а она вываливается (перезапускает main);
или не выполняются переходы при работе с прерываниями.

Я предполагал что это из-за стека, но нигде не видел в реальных программах даже обращений к стеку.
Мои эксперименты со стеком ничего не дали.
Как добиться логичности, чтобы переходы были такие, как написаны в программе, а не с глюками?
Не могут же разные компиляторы иметь похожие проблемы!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Who_are_you?
сообщение Aug 11 2017, 09:29
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 185
Регистрация: 5-02-10
Из: Донецк
Пользователь №: 55 329



Я в чем не прав?

Код
#define   BUFFER_SIZE  255 //
unsigned char RxBuf [BUFFER_SIZE];  //

// void LCD_WriteText (char font, char * text)  

void PRFMenu (void)  //
{

char *buffer="0";
char cchh;
unsigned char rank[3] = {0,0,0};

cchh = (char)RxBuf[7];                          LCD_WriteText (8,&cchh); // 1
            
itoa (RxBuf[3],buffer,10);                       LCD_WriteText (8,buffer);  // 2
itoa (rank[2], buffer, 10);                       LCD_WriteText (8,buffer);  // 3
}


объявление указателя buffer на строку из 2 байтов
// 1 - в RxBuf[7] - символ
а во 2 и 3 случае в buffer запихивается байт или больше
или нужно присвоение через cchh = RxBuf[3],
чтобы стек не вводить в казус?
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Aug 11 2017, 09:59
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Who_are_you? @ Aug 11 2017, 12:29) *
Я в чем не прав?


ну вообще говоря при чем тут стек?
Код
char *buffer="0"; // это указатель на константу в памяти. Си дает так сделать? Может и дает, но менять ее нельзя. Для avr это по факту будет 2 байта в ОЗУ
itoa (RxBuf[3],buffer,10); // вы меняете константу  :maniac: Более того, если RxBuf[3] скажем 123, то вы меняете 4 байта (1,2,3,\0), т.е.  расстреливаете 2 байта ОЗУ после этой константы


Лучше как-то так
Код
char buffer[4];
itoa (RxBuf[3],buffer,10);


Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Who_are_you?   Глюки программирования mega128   Aug 9 2017, 07:15
- - Непомнящий Евгений   Вы название темы правильно указывайте - "Глюк...   Aug 9 2017, 11:21
- - Who_are_you?   Непомнящий Евгений, спасибо за корректировку выраж...   Aug 9 2017, 15:35
|- - Непомнящий Евгений   Цитата(Who_are_you? @ Aug 9 2017, 18:35) ...   Aug 9 2017, 15:44
- - Who_are_you?   вотчдог - отключен программа большая, но была раб...   Aug 9 2017, 16:47
|- - Непомнящий Евгений   Цитата(Who_are_you? @ Aug 9 2017, 19:47) ...   Aug 10 2017, 05:07
- - aiwa   Вначале функции main прочитайте регистр MCUSR: в н...   Aug 9 2017, 17:31
- - aiwa   Проверьте на всякий случай фьюзы. Не установлен ли...   Aug 10 2017, 10:54
- - Who_are_you?   Цитатану вообще говоря при чем тут стек? объявлени...   Aug 11 2017, 10:42
- - aiwa   Код cchh = (char)RxBuf[7]; ...   Aug 11 2017, 11:23
- - Who_are_you?   Почему в 1) случае выводится не всегда указанный т...   Aug 15 2017, 09:40
|- - KRS   Цитата(Who_are_you? @ Aug 15 2017, 12:40)...   Aug 15 2017, 15:04
- - aiwa   Зависит от компилятора, но обычно для первого случ...   Aug 15 2017, 11:02
- - aiwa   Цитата(KRS @ Aug 15 2017, 18:04) во 2 слу...   Aug 15 2017, 18:55
|- - Непомнящий Евгений   Цитата(aiwa @ Aug 15 2017, 21:55) При соо...   Aug 16 2017, 07:01
- - Who_are_you?   Похоже WinAVR в 1-ом случае и загоняет в стек - от...   Aug 16 2017, 12:16
- - aiwa   Цитата(Непомнящий Евгений @ Aug 16 2017, 10...   Aug 16 2017, 14:40
- - Who_are_you?   И как обойти это или в WinAVR не возможно? В конц...   Aug 17 2017, 08:50
- - aiwa   Цитата(Who_are_you? @ Aug 17 2017, 11:50)...   Aug 17 2017, 10:19
- - Who_are_you?   Из Даташит: Внутрисистемно программируемая флэш-п...   Aug 17 2017, 13:12
- - aiwa   Цитата(Who_are_you? @ Aug 17 2017, 16:12)...   Aug 17 2017, 21:24
- - aiwa   Пример использования Кодchar ER [] = ...   Aug 17 2017, 22:24
- - demiurg_spb   Проблема в чём-то другом. У вас ведь программа не ...   Aug 18 2017, 11:05


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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 23:10
Рейтинг@Mail.ru


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