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

 
 
> Работа с прерываниями в WinAVR, Глобальные переменные в main и прерываниях
studert
сообщение Oct 17 2008, 11:07
Сообщение #1


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

Группа: Свой
Сообщений: 76
Регистрация: 6-03-05
Из: Новосибирск
Пользователь №: 3 121



Задаю благозвучное название прерывания
#define PacketReceiveComplete INT5_vect

Объявлена глобальная переменная, значение которой
uint64t_t DestMAC;

Обработчик прерывания, функция getDestMAC записывает в переменную DestMAC нужные данные
ISR(PacketReceiveComplete){
cli();
getDestMAC(&DestMAC);
sei();
}
int main(void){
...
printf("%lx",DestMAC);
}
Это не работает, печатает мусор,причем попытки изменить DestMAC main тоже неудачны, она не меняется. Что я делаю не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aesok
сообщение Oct 17 2008, 11:33
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(studert @ Oct 17 2008, 15:07) *
Объявлена глобальная переменная, значение которой
uint64t_t DestMAC;


avr-libc-user-manual FAQ#1

Цитата(studert @ Oct 17 2008, 15:07) *
printf("%lx",DestMAC);


Уточните в avr-libc-user-manual поддерживает ли printf 64-битные типы.

Цитата(studert @ Oct 17 2008, 15:07) *
ISR(PacketReceiveComplete){
cli();
getDestMAC(&DestMAC);
sei();
}


Нельзя разрешать прерывания перед выходом из прерывания, они сами разрештся при выполнении инструкции RETI.

Анатолий.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- studert   Работа с прерываниями в WinAVR   Oct 17 2008, 11:07
- - _dem   Код#define PacketReceiveComplete INT5_vect volati...   Oct 17 2008, 11:12
- - Палыч   Цитата(studert @ Oct 17 2008, 14:07) Что ...   Oct 17 2008, 11:14
|- - studert   Цитата(Палыч @ Oct 17 2008, 18:14) Попроб...   Oct 17 2008, 11:28
|- - Палыч   Цитата(studert @ Oct 17 2008, 14:28) Так ...   Oct 17 2008, 11:46
- - SasaVitebsk   volatile забыли. Иначе оптимизатор может выкинуть ...   Oct 17 2008, 11:27
|- - studert   Цитата(SasaVitebsk @ Oct 17 2008, 18:27) ...   Oct 17 2008, 11:45
|- - Палыч   Вы уверены, что функция printf выполняется после т...   Oct 17 2008, 11:36
|- - studert   Цитата(aesok @ Oct 17 2008, 18:33) avr-li...   Oct 17 2008, 11:55
|- - Kernigan   Цитата(aesok @ Oct 17 2008, 14:33) Нельзя...   Oct 17 2008, 12:04
|- - aesok   Цитата(Kernigan @ Oct 17 2008, 16:04) Цит...   Oct 17 2008, 17:20
|- - demiurg_spb   Цитата(aesok @ Oct 17 2008, 21:20) Пролог...   Oct 17 2008, 18:51
|- - aesok   Цитата(demiurg_spb @ Oct 17 2008, 22:51) ...   Oct 17 2008, 19:14
|- - ReAl   Цитата(demiurg_spb @ Oct 17 2008, 21:51) ...   Oct 17 2008, 20:44
- - mandrew   Цитата(studert @ Oct 17 2008, 15:07) Зада...   Oct 17 2008, 12:05
|- - studert   Цитата(mandrew @ Oct 17 2008, 19:05) 1) А...   Oct 17 2008, 12:27
|- - MrYuran   Цитата(studert @ Oct 17 2008, 16:27) Прин...   Oct 17 2008, 12:48
- - Палыч   Никто не мешает разбить 64 бита на несколько ulong...   Oct 17 2008, 13:31
- - mdmitry   В каком виде надо MAC-адрес выводить? В зависимост...   Oct 17 2008, 13:34
- - _dem   Studert, а разве приведенный мною код у Вас не раб...   Oct 17 2008, 16:23


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

 


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


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