Страница 28 из 115
Добавлено: Вс мар 22, 2009 18:38:11
Arlleex
SeregaT, ваша программа выдает 12 ошибок как и моя...
Добавлено: Вс мар 22, 2009 18:39:19
sema
это регистр отвечающий за настройку линий портов на ввод\вывод
Добавлено: Вс мар 22, 2009 18:39:21
SeregaT
Stalker46 писал(а):SeregaT, ваша программа выдает 12 ошибок как и моя...
Моя программа прошита в МК и мигает светодиодами

Просто сотри весь код полностью и скопируй туда мой.
Кстати
#include mega8(точка h)
#include delay (точка h)
Почему-то в ответах на форуме вот эта (точка h) не отображается.
Это надо учесть.
Добавлено: Вс мар 22, 2009 18:42:04
Arlleex
Сделал, ни работает, давай в личке пообщаемся, а то примут за флудеров...

а я без радиоКота как без лап)))))
Добавлено: Вс мар 22, 2009 18:49:12
therian
странный у вас какой то Си синтакс лишние семи-колоны
в #include название файла без .h , вроде только в С++ так можно
Добавлено: Вс мар 22, 2009 19:04:00
SeregaT
therian писал(а):странный у вас какой то Си синтакс лишние семи-колоны
Это Вы про мой код?
в #include название файла без .h , вроде только в С++ так можно
Это какой-то косяк форума. В ответе пишешь с h, а когда отправляешь, то там уже без h.
Добавлено: Вс мар 22, 2009 19:16:18
Arlleex
Вот мой код. Пробую компилировать, выдает вот эту ошибку. Что это такое и что мне делать?
#include <mega16>
#include <delay>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
PORTD=0x3F;
DDRD=0x3F;
ACSR=0x80;
SFIOR=0x00;
while (1)
{
PORTD.0=1; // зажигаем первый светодиод
delay_ms(1000); // ждем секунду
PORTD.0=0; // выключаем первый светодиод
delay_ms(100); // ждем
PORTD.1=1; // зажигаем второй светодиод
delay_ms(1000); // ждем секунду
PORTD.1=0; // выключаем второй светодиод
delay_ms(100); // ждем
PORTD.2=1; // зажигаем третий светодиод
delay_ms(1000); // ждем секунду
PORTD.2=0; // выключаем третий светодиод
delay_ms(100); // ждем
PORTD.3=1; // зажигаем четвертый светодиод
delay_ms(1000); // ждем секунду
PORTD.3=0; // выключаем четвертый светодиод
delay_ms(100); // ждем
PORTD.4=1; // зажигаем пятый светодиод
delay_ms(1000); // ждем секунду
PORTD.4=0; // выключаем пятый светодиод
delay_ms(100); // ждем
PORTD.5=1; // зажигаем шестой светодиод
delay_ms(1000); // ждем секунду
PORTD.5=0; // выключаем шестой светодиод
};
}
Добавлено: Вс мар 22, 2009 19:30:52
NiTr0
Искать другой компилятор - этот битый

Добавлено: Вс мар 22, 2009 19:53:28
Барсик
SeregaT писал(а):...Но всёравно, срабатывает даже если я не замыкаю вход на +5 В, а просто тыкаю в него какойнить железякой...
Вполне нормальное явление. Когда Вы тыкаете на вход железкой, то подключаете емкость своего тела, которая заряжена от наводок непонятно как. Возникает короткая импульсная помеха, которую ловит микроконтроллер.
Чтобы этого не было, надо использовать RC цепочки. Тем более, что если будете использовать длинные провода, то на них вообще, чёрти что может наводиться. Сделайте, как в присоединённом файле. И для каждого датчика свой отдельный "земляной" провод. А ещё лучше витую пару.
Добавлено: Вс мар 22, 2009 20:00:39
SeregaT
Кстати, заметил, что если запитываю МК от USB разъёма компа, то срабатывает от помех значительно реже (надо ещё потыкать отвёрткой несколько раз, чтобы сработало). А если запитываю от зарядника с выходом USB, то срабатывает с первого раза практически всегда. Это наверное потому, что комп заземлён? (а зарядник может какие-то наводки даёт).
Добавлено: Вс мар 22, 2009 20:19:41
Arlleex
Заработала!!!
А вот собсно вопрос:
Какие в сгенерированном коде надо оставлять записи, кроме
PORTD=0x3F;
DDRD=0x3F;
ACSR=0x80;
SFIOR=0x00;
Добавлено: Вс мар 22, 2009 20:24:35
Arlleex
Как думаете, после языка Си легко освоить Ассемблер?
Я хоче пока что на Си освоиться...
Добавлено: Вс мар 22, 2009 20:27:00
Барсик
SeregaT писал(а):...Это наверное потому, что комп заземлён? (а зарядник может какие-то наводки даёт).
Очень похоже. Зарядник может иметь значительную емкость между собственно источником питания и сетью.
Добавлено: Вс мар 22, 2009 20:29:58
SeregaT
Stalker46 писал(а):Как думаете, после языка Си легко освоить Ассемблер?
Не думаю. Хотя в принципи там не сложно, просто гемору много.
Какие в сгенерированном коде надо оставлять записи, кроме
PORTD=0x3F;
DDRD=0x3F;
ACSR=0x80;
SFIOR=0x00
Ну это зависит от того, что нужно от программы.
Для светодиодов и
ACSR=0x80;
SFIOR=0x00
не нужно.
А я обычно вообще всё убираю.
Добавлено: Вс мар 22, 2009 20:58:19
Arlleex
Но я нигде не могу найти самоучитель по ассемблеру... В книге CodevisionAVR там язык Си...
А где такое можно найти о Ассемблере?
Кто может пояснить, что за в порту А там есть биты Р...
Добавлено: Вс мар 22, 2009 21:02:23
SeregaT
Вот тут по ассемблеру неплохо написано.
http://radiokot.ru/start/mcu_fpga/avr/
Доступно и для начала хватит поуши.
Но лично мне на Си показалось гораздо удобнее.
Добавлено: Вс мар 22, 2009 22:12:43
Arlleex
Тута я уже начитался...
Добавлено: Вс мар 22, 2009 22:21:30
ikarab
Stalker46 писал(а): А где такое можно найти о Ассемблере ?
Адрес вытекает из вашего вопроса
ASMhelpAVR.narod.ru
"Ассемблер для AVR" - там же и библиотеку найдете с массой книги по АСМУ для AVR.
Вот архив скачайте -
Архив примеров программ на ассемблере ASM для AVR из AVRstudio и VMLAB Очень хорошо написаны !
Stalker46 писал(а): Кто может пояснить, что за в порту А там есть биты Р...
Русский даташит на Atmega - он там же где АСМ помощь.
Добавлено: Вс мар 22, 2009 22:40:07
Arlleex
а где АСМ помощь?
Добавлено: Вс мар 22, 2009 22:44:42
Arlleex
Вот еще:
Как это вы назначаете назначение портов в процессе написания программы?
Это и есть
PORTD.1=0 - то есть мы в процессе написания программы дали порту D... А что мы ему дали? Где тут его назначение (ввод или вывод)?