роботы робототехника микроконтроллеры


 Страниц (3): [1] 2 3 »   

> Без описания
vladimircape Post Id


Рядовой


Сообщений всего: 3
Дата рег-ции: Март 2014  



Добрый день.
Припаял на PD7 ногу светодиод, микроконтроллер ATMEGA8A-PU
Подскажите правильно ли написана программа, и какую лучше книжку почитать по программированию на С, но не тому С что для Ардуино, там всё для меня уже ясно.
CODE:

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

void init_io(void);

void init_io(void)
{
DDRD = (1<< PD7);
}

int main(void)
{
init_io();
for (;;)
{
PORTD |= (1 << 0);
_delay_ms(100);
PORTD = 0;
_delay_ms(100);
}
}

Заливал я так через usbasp
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=blink_led.lst -std=gnu99 blink_led.c -o blink_led.o

avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=blink_led.o -std=gnu99 blink_led.o --output blink_led.elf -Wl,-Map=blink_led.map,--cref -lm

avr-objcopy -O ihex -R .eeprom blink_led.elf blink_led.hex

avrdude -p m8 -P COM3 -c usbasp -b 19200 -U flash:w:blink_led.hex


Но залилось успешно был только один warning cannot set sck period ,но светодиод не замигал. питался от самого usbasp ,проверял 5вольт питания есть.


Подскажите еще как на МК понять где аналоговые входы/выходы, а где цифровые, и где ШИМ, и где и как применяются, вкратце.

Моя цель подключить ,ИК дальномер, серву и L239D для управления 2мя двигателями

Что-то на ардуине всё проше, но по настоящему надо писать без всяких ардуин ,вот и учусь
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Вы настроили седьмую ножку порта D как выход
DDRD = (1<< PD7);

А здесь пытаетесь работать с нулевой ножкой порта D
PORTD |= (1 << 0);

Но она настроена как вход. Да и светодиод к ней не подключен.

Так должно все мигать
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>

void init_io(void);

void init_io(void)
{
DDRD = (1<< PD7);
}

int main(void)
{
init_io();

for (;;)
{
PORTD |= (1 << PD7);
_delay_ms(1000);
PORTD &= ~(1 << PD7);
_delay_ms(1000);
}
}


Книга http://easyelectronics.ru/shpak-...ontrollerov.html
Еще http://easyelectronics.ru/revich...-assemblera.html
Datasheet на ATmega8 http://www.atmel.com/images/atme..._l_datasheet.pdf
 
 Top
Vladimir72 Post Id



Великий стратег


Сообщений всего: 193
Дата рег-ции: Май 2012  



vladimircape хорошие видео уроки для начинающих https://www.youtube.com/watch?v=...n6O2RYCqLisJl-W6
 
 Top
vladimircape Post Id


Рядовой


Сообщений всего: 3
Дата рег-ции: Март 2014  



спасибо ,всё работает, и за литературу спасибо
 
 Top
Петр Киселев Post Id



Гуру


Сообщений всего: 2397
Дата рег-ции: Окт. 2012  



mihail, Добрый вечер!
Хотел запустить ваш скетч (от 25 марта) на Pro mini Ардуино, но не получилось. Что это за код? Просто мигание светодиода?
Выдает при компиляции в программе желтым строчку
DDRD = (1<< PD7);
и внизу еще три красные строки.
(Добавление)
Правда у меня на Pro mini стоит не 8, а 328. Но это, вроде, не должно помешать. Так ведь?
 
 Top
killgur Post Id



Гуру


Сообщений всего: 1189
Дата рег-ции: Февр. 2010  



Петр Киселев пишет:
mihail, Добрый вечер!
Хотел запустить ваш скетч (от 25 марта) на Pro mini Ардуино, но не получилось. Что это за код? Просто мигание светодиода?
Выдает при компиляции в программе желтым строчку
DDRD = (1<< PD7);
и внизу еще три красные строки.
(Добавление)
Правда у меня на Pro mini стоит не 8, а 328. Но это, вроде, не должно помешать. Так ведь?


Это не для ардуино это на языке Си программа
чтобы заработало для дуины надо переписать на ее языке программирования.
 
 Top
Петр Киселев Post Id



Гуру


Сообщений всего: 2397
Дата рег-ции: Окт. 2012  



killgur, спасибо за разъяснения по коду!
А я, по простоте душевной, думал что компилирование пройдет и код заработает. Не вышло!
 
 Top
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



Доброго времени суток Улыбка
Возобновил свое обучение программированию Улыбка
Народ, у меня пару вопросов, нужна помощь =)
В общем у меня есть
-Среда разработки CVAVR 2.05.0
-Программатор китайский USB-ISP-USBasp
-Есть отладочная плата под Atmega8 с кварцем на 4 МГц и 4-мя светодиодами.

Вопрос по программе
-- язык программирования выбрал СИ (более разборчив для меня). Так вот, в чем разница между #include <mega8.h> и #include <avr/io.h>? У меня работает только первый вариант.

По прощиванию
-- мега в на отладчике прошивается без проблем, но не смог залить программу в плоскую мегу8. Тут нужен какой-то особый подход или это из-зи отсутствия внешнего генератора (соединял соответствующие выводы МК к программатору без доп кварца)?
Прикреплено изображение
USB-ISP-USBasp.jpg

 
 Top
fortekom Post Id


Маршал


Сообщений всего: 148
Дата рег-ции: Окт. 2012  



soob пишет:
в чем разница между #include <mega8.h> и #include <avr/io.h>?

Это подключение библиотек, проверь наличия папки avr и нахождения в ней io.h

soob пишет:
-- мега в на отладчике прошивается без проблем, но не смог залить программу в плоскую мегу8.

Может она не новая, и до этого была прошита больше чем 4Мгц
На программаторе должен быть джампер попробуй с ним и без него.
Прошиваешь программой - Khazama AVR Programmer?
Плоскую через какой адаптер подключал?
 
 Top
soob Post Id



Полковник


Сообщений всего: 77
Дата рег-ции: Янв. 2012  



fortekom пишет:
Это подключение библиотек, проверь наличия папки avr и нахождения в ней io.h

у меня этот файл в папке "inc" где и все остальные "*.h", a папки "avr" нет

fortekom пишет:
Может она не новая, и до этого была прошита больше чем 4Мгц

Должна быть новая, я ее с интернет магазина заказывал. (была завернута в фольгу)

fortekom пишет:
Прошиваешь программой - Khazama AVR Programmer?

да она самая

fortekom пишет:
Плоскую через какой адаптер подключал?

Если вы про программатор, то использую тот что на картинке. До этого был самодельный с easyelectronics.ru

Вечером попробую прошить еще раз и отпишусь.
 
 Top
fortekom Post Id


Маршал


Сообщений всего: 148
Дата рег-ции: Окт. 2012  



1. Микроконтроллер не программируется – проверьте положение джампера, по умолчанию он должен быть
установлен.
2. Джампер установлен но устройство не программируется – проверьте правильность подключения
интерфейса ISP. Проверьте наличие питания программируемого устройства и убедитесь что вывод GND программатора соединен с общим проводом (минусом питания) программируемого устройства.

При разомкнутом джампере — частота SCK будет высокой = 375 кГц, при замкнутом — пониженной = 8 кГц.
Это сделано для программирования микроконтроллеров с низкой частотой тактирования (меньше 1.5 МГц).
Обратите внимание что в основном все микроконтроллеры по умолчанию запрограммированы заводом-изготовителем на тактирование от внутреннего генератора частотой 1Мгц, что требует установленного джампера на программаторе.
 
 Top
Billi Post Id


Рядовой


Сообщений всего: 7
Дата рег-ции: Янв. 2016  



Приветствую специалистов в оживлении вражеских засланцев. Увлёкся созданием разнообразных игрушек(светодинамических автоматов, не сложной автоматики, и другими применениями радиоэлектроники). Имеется опыт в сборке, настройке цифровых и аналоговых устройств. В общем не совсем "чайник".Выбор пал на мегу 8 - не большой корпус, достаточное количество ног и.т.д. На данный момент тормознул вот в каком вопросе: делаю "вывеску" - сама программа управления лампочками уже готова и отлажена,работает в циклическом виде. Надо стартовать начало программы с конечником двери. Реализация конечника тоже не составит трудности: 3 нога порта С (26 вывод) будет размыкаться с минусом. Надо чтобы контроллер "увидел" разомкнутый порт и запустил программу. Ногу PORTC.3 укзал как вход и подтянул PULL-UP, но +5V не появилось. Прогу пишу в CodeVisionAVR C Compiler. Это первое что мне попалось в инете с мало-мальским описанием и примерами. Пару не сложных устройств уже сваял и активно пользую. Почитываю инет, но пока не нашел внятных разъяснений: код отличается в разных компиляторах. На строчки из другого компилятора мой ругается ерорами и воингами. Прерывания пока не планирую использовать-неожиданных "нежданчиков" пока нет необходимости.
Синтаксис тоже не везде понятен.
Скачать файл: код программы .c
Скачан раз: 210

(Отредактировано автором: 06 Января, 2016 - 00:47:34)

 
 Top
Петр Киселев Post Id



Гуру


Сообщений всего: 2397
Дата рег-ции: Окт. 2012  



Billi пишет:
Надо чтобы контроллер "увидел" разомкнутый порт и запустил программу.

У концевика должен быть еще и замыкающийся контакт. Попробуй использовать его, подавая питание на контроллер.
 
 Top
Billi Post Id


Рядовой


Сообщений всего: 7
Дата рег-ции: Янв. 2016  



Есть же проще: PULL-up, подтяжку можно и внешними элементами создать. Трудность в написании нужных строчек в коде программы: опрос нажатия,пдтверждение нажатия, переход к программе, возврат на опрос нажатия.
 
 Top
Петр Киселев Post Id



Гуру


Сообщений всего: 2397
Дата рег-ции: Окт. 2012  



Не знаю для чего тебе все это надо, поэтому и предложил включать питание МК в определенный момент (например, на открытие двери, как в "умном доме"Подмигивающий. А остальное время - экономия питания.
Но, делай, как тебе надо!
 
 Top
Страниц (3): [1] 2 3 »
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru