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

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

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

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

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

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


Ответ
Опции темы

Уроки СИ для AVR микроконроллеров

Непрочитано 01.12.2012, 20:47   #931
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от С.М.С Посмотреть сообщение
bytesPerSector работает
Да, это я что-то на неё съехал... по ошибке...

Сообщение от С.М.С Посмотреть сообщение
программа зависала в цикле
Не совсем понял, о каком цикле речь...?

_________________________________________________
Черт, как не хочется расчехлять Студию с ЖЦЦой...
Реклама:
__________________
There's always more than one way to skin a cat.
tempora вне форума   Ответить с цитированием
Непрочитано 01.12.2012, 20:55   #932
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Однако, непонятно в какой же момент получается ошибочное значение. Из Ваших описаний, если я их верно понял, следует что-то небывалое - при запрещенных прерываниях, сразу после присвоения - уже не то, что присваивали, я верно понял?
______________________
Я смотрю, этот же буфер используется при обмене через UART:
Код:
     buffer[i++] = '\n'; //appending 'Line Feed (LF)' character
     ...
     buffer[i++] = data;
может попробовать временно использовать другой буфер, "от греха"?
__________________
There's always more than one way to skin a cat.

Последний раз редактировалось tempora; 01.12.2012 в 21:13.
tempora вне форума   Ответить с цитированием
Непрочитано 01.12.2012, 21:59   #933
С.М.С
Гражданин KAZUS.RUN
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 842
Сказал спасибо: 156
Сказали Спасибо 377 раз(а) в 189 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Раньше я зацикливал, думал мало ли, может какой сбой и переменная не успела записаться. Теперь про выше приведённое условие

так идёт по первой ветке, что правильно, так как 9-8=1 следовательно true
Код:
cli();
sectorPerCluster = bpb-›sectorPerCluster;
        if ( sectorPerCluster - bpb-›sectorPerCluster )
        {transmitString_F (PSTR("first way"));

            // ...
        } else {transmitString_F (PSTR("second way"));

            // ...
        }
transmitString_F (PSTR("sectorPerCluster ="));
transmitHex(CHAR, sectorPerCluster); transmitByte(' ');//
так идёт по второй ветке, потому как 9!=8.
Код:
cli();
sectorPerCluster = bpb-›sectorPerCluster;
        if ( sectorPerCluster == (bpb-›sectorPerCluster) )
        {transmitString_F (PSTR("first way"));

            // ...
        } else {transmitString_F (PSTR("second way"));

            // ...
        }
transmitString_F (PSTR("sectorPerCluster ="));
transmitHex(CHAR, sectorPerCluster); transmitByte(' ');//
как выше видно, сначала идёт присваивание, затем условие, только потом UART следовательно не он А получается как Вы сказали не возможное, что глобальной переменной не присваивается значение, точнее присваивается но в данном случае на 1 больше.
С.М.С вне форума   Ответить с цитированием
Непрочитано 01.12.2012, 22:07   #934
С.М.С
Гражданин KAZUS.RUN
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 842
Сказал спасибо: 156
Сказали Спасибо 377 раз(а) в 189 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Для полной невозможности:

Код:
sectorPerCluster =0;
transmitString_F (PSTR("sectorPerCluster ="));
transmitHex(CHAR, sectorPerCluster); transmitByte(' ');//

sectorPerCluster =20;
transmitString_F (PSTR("sectorPerCluster ="));
transmitHex(CHAR, sectorPerCluster); transmitByte(' ');//
получаем, сначала 1, затем 21, т.е. переменная содержит на 1 больше, чем мы ей присваиваем. Это уже закономерность, но где эта 1 дописывается не понятно.
С.М.С вне форума   Ответить с цитированием
Непрочитано 01.12.2012, 22:53   #935
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от С.М.С Посмотреть сообщение
но где эта 1 дописывается не понятно
А в окошке Disassembler пошагать?
__________________
There's always more than one way to skin a cat.
tempora вне форума   Ответить с цитированием
Непрочитано 01.12.2012, 23:03   #936
С.М.С
Гражданин KAZUS.RUN
 
Аватар для С.М.С
 
Регистрация: 03.07.2010
Сообщений: 842
Сказал спасибо: 156
Сказали Спасибо 377 раз(а) в 189 сообщении(ях)
С.М.С на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Да там всё хорошо, вроде. Поставил другую Mega32 значения в переменных то, что надо. Но проверка прошивки до конца не проходит, или студия глючная или МК.

Жесть, жестянская Попробую, посмотрим, что дальше с FAT будет. Спасибо за уделённое время.
С.М.С вне форума   Ответить с цитированием
Непрочитано 02.12.2012, 00:11   #937
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

М-да, получается как в анекдоте - "Ну, вот на этой Меге и продолжайте (все будущие проекты)!"
__________________
There's always more than one way to skin a cat.
tempora вне форума   Ответить с цитированием
Непрочитано 05.04.2013, 22:46   #938
VladimirIvan
Гуру портала
 
Аватар для VladimirIvan
 
Регистрация: 26.01.2007
Адрес: Дивное, Россия
Сообщений: 15,299
Сказал спасибо: 7,685
Сказали Спасибо 19,025 раз(а) в 6,619 сообщении(ях)
VladimirIvan на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

....................
Вложения:
Тип файла: zip WinHex_17.zip (2.41 Мб, 40 просмотров)
__________________
Любое утверждение верно, включая и это.
VladimirIvan вне форума   Ответить с цитированием
Непрочитано 29.04.2013, 19:49   #939
Митя
Временная регистрация
 
Регистрация: 09.11.2009
Сообщений: 43
Сказал спасибо: 44
Сказали Спасибо 5 раз(а) в 4 сообщении(ях)
Митя на пути к лучшему
Вопрос Re: Уроки СИ для AVR микроконроллеров

Джентльмены!
Помогите разобраться с прерываниями
понимаю что ошибка в ДНК но где именно
процедура прерывания не вызывается
без прерываний АЦП работает
Код:
#include ‹ioavr.h›
#include ‹intrinsics.h›

#pragma vector=ADC_vect
__interrupt void ADCint(void)
{
 PORTB ^= 0xFF;

}

int main (void) 
{
  __enable_interrupt();

    PORTB   = 0xFF; /* Give PORTB and the User LEDs an initial startvalue */
    DDRB    = 0xFF; /* Set PORTB as output */

/*** Настройка АЦП ***/ 
ADCSRA |= (1 ‹‹ ADEN) // Включение АЦП
             |(1 ‹‹ ADPS1)|(1 ‹‹ ADPS0)// предделитель преобразователя на 8
               |(1 ‹‹ ADATE )|(1 ‹‹ ADIE );	// Включение Auto Trigger и прерываний
ADMUX |= (0 ‹‹ REFS1)|(0 ‹‹ REFS0) // внешний ИОН
            |(1 ‹‹ MUX0)|(0 ‹‹ MUX1)|(0 ‹‹ MUX2)|(0 ‹‹ MUX3); // вход PC0
ADCSRA |= (1 ‹‹ ADSC);	// Начинаем преобразование
while(1){}
}
AVR 2560 платформа IAR
Заранее благодарю

Последний раз редактировалось Митя; 29.04.2013 в 20:51.
Митя вне форума   Ответить с цитированием
Непрочитано 29.04.2013, 20:21   #940
s64
Временная регистрация
 
Регистрация: 08.02.2010
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 14 раз(а) в 12 сообщении(ях)
s64 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от Митя Посмотреть сообщение
|(1 ‹‹ ADPS1)|(1 ‹‹ ADPS0);// предделитель преобразователя на 8
" ; " - нужно убрать, по моему.
s64 вне форума   Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки dosikus Микроконтроллеры, АЦП, память и т.д 61 23.01.2012 21:06
Видео уроки (flash) Proteus 7.1 fmssp Proteus 5 13.08.2007 03:56
AVR уроки Рюмика chipic128 Proteus, KiCAD и другие ECAD 9 07.03.2007 21:46
уроки от LABCENTRE(PIC12F675+C) dosikus Микроконтроллеры, АЦП, память и т.д 22 09.10.2006 10:16


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.