Важно! Язык програмирования С для AVR

  • Автор темы
P

pavel-pervomaysk

Команда форума
Регист
4 Апр 2006
Сообщения
8.085
Язык програмирования С для AVR

Здесь работаем с примерами и изучением работы на языке С :)
 
V

Vasil_

Забанен
Регист
22 Июл 2007
Сообщения
203
Посоветовал бы с начала не брать толстые книги, а примерно такой минимальный набор:
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
Библиотеки Си для AVR:
 ссылка скрыта от гостей /
Популярные IDE, - Integrated Development Environment - интегрированная среда разработки:
(ссылки на производителя ищутся поисковиком)
- CodeVisionAVR (для МК AVR)
- IAR (для любых МК)
- ICC (для МК AVR, msp430, ARM7, Motorola )
- WinAVR (для МК AVR)
- Keil (для МК архитектуры 8051 и ARM)
- HiTECH (для МК архитектуры 8051 и PIC от Microchip)

C Programming.rar
 
M

Murka

Профессор
Регист
16 Мар 2004
Сообщения
2.583
Не знаю стоит ли в данном случае давать советы, но всё таки скажу что изучать стоит универсальное ПО и как по мне то это IAR (C, ассемблер, отладчик - дебажер) т. к. существуют пакеты для различных процессоров, и тогда переход на другую архитектуру не составит большого труда, хотя бы потому что интерфейс программы вам знаком.
 
V

Vasil_

Забанен
Регист
22 Июл 2007
Сообщения
203
GIP, попробуй найти Vitaly, :
http://monitor.net.ru/forum/profile.php?mode=viewprofile&u=2360
мне кажется, он тебе сможет помочь, пока пивка попьете, все будет уже на бортУ.
ЗЫ, с и_фолдыря как раз докачка возможна, даже при смене IP. А вот с рапидшары и депозита при бесплатном доступе- нет.
 
G

GarikBaza

Участник
Регист
5 Сен 2006
Сообщения
664
По просьбам трудящихся порезал по 20М и перелил EWAVR 5.10A

На рапидшаре

 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 

То же на ifolder

Название: for_all_members_monitor_net_ru.part1.rar
Размер: 19.07 Мб
Доступен до: 2008-09-10 17:59:51
Ссылка для скачивания файла:  ссылка скрыта от гостей 

Название: for_all_members_monitor_net_ru.part2.rar
Размер: 19.07 Мб
Доступен до: 2008-09-10 18:18:39
Ссылка для скачивания файла:  ссылка скрыта от гостей 

Название: for_all_members_monitor_net_ru.part3.rar
Размер: 19.07 Мб
Доступен до: 2008-09-10 18:40:17
Ссылка для скачивания файла:  ссылка скрыта от гостей 

Название: for_all_members_monitor_net_ru.part4.rar
Размер: 19.07 Мб
Доступен до: 2008-09-10 19:13:15
Ссылка для скачивания файла:  ссылка скрыта от гостей 

Название: for_all_members_monitor_net_ru.part5.rar
Размер: 19.07 Мб
Доступен до: 2008-09-10 19:40:25
Ссылка для скачивания файла:  ссылка скрыта от гостей 

Название: for_all_members_monitor_net_ru.part6.rar
Размер: 19.07 Мб
Доступен до: 2008-09-10 20:07:23
Ссылка для скачивания файла:  ссылка скрыта от гостей 

Название: for_all_members_monitor_net_ru.part7.rar
Размер: 4.47 Мб
Доступен до: 2008-09-10 20:13:13
Ссылка для скачивания файла:  ссылка скрыта от гостей 

ПС На депозите грохнули
 
G

GIP

Спасибо тебе, о добрый человек!
:up:
Благодаря разбивке по серверам появилась возможность ставить на закачку сразу две разных ссылки (бесплатно один сервер дает качать лишь один поток, т.е. один файл).
Начал качать - все Ок.
:)
GarikBaza сказал(а):
Добавлено 10-08-2008 10:41
пропустил депозит, и туда налью
Кстати, не критично, но просто к слову - не вышло или просто руки не дошли?
 
G

GIP

Вот еще нашел, в плане обмена опытом:
"Полный IAR AVR 5.11B + генератор ключей на все компиляторы IAR".
 ссылка скрыта от гостей 
 
G

GarikBaza

Участник
Регист
5 Сен 2006
Сообщения
664
News in the current product version
Version 5.11 of IAR Embedded Workbench for AVR includes the following new and enhanced functionality:
Support for Atmel XMEGA family in C-SPY Debugger for Atmel AVR JTAGICE mkII
The C-SPY Debugger for Atmel AVR JTAGICE mkII now supports the new Atmel XMEGA AVR device family.

Support for the Atmel AVR Dragon emulator
Support has been added for the Atmel AVR Dragon emulator.

Для меня ничего интересного
Но скачаю на всяк случай :)
 
А

Александр777tv

Участник
Регист
25 Дек 2007
Сообщения
26
Библиотека функций С для AVR (дается описание на русском языке):
 ссылка скрыта от гостей 
 
K

Komi

Участник
Регист
2 Фев 2005
Сообщения
1.306
Александр777tv, :up: хорошая ссылка.
Вот тоже  ссылка скрыта от гостей 
 
V

Vitkos

Доброго времини суток. Помогите ламеру,так-как програмирую в С++ впервые.
Есть программа, не могу дописать команду чтоб после прохождения цикла она не повторялась (завершить действие)
Пример программы.
#include <90s2313.h>
#include <delay.h>

void main(void)
{
// инициализация (настройка) порта B
DDRB=0xff; // Порт B работает на вывод (т.е. управляет внешней схемой)
PORTB=0xff; // Установить на всех выводах порта B уровень напряжения +5 В

while(1)
{
PORTB.1=0; // Зажечь светодиод
delay_ms(15000);
PORTB.1=1; // Погасить светодиод
delay_ms(2500);
PORTB.2=0; // Зажечь светодиод
delay_ms(15000);
PORTB.2=1; // Погасить светодиод
delay_ms(2500);

} // while(1)

} // main

Спасибо.
 
G

GarikBaza

Участник
Регист
5 Сен 2006
Сообщения
664
Vitkos сказал(а):
void main(void)
{
// инициализация (настройка) порта B
DDRB=0xff; // Порт B работает на вывод (т.е. управляет внешней схемой)
PORTB=0xff; // Установить на всех выводах порта B уровень напряжения +5 В

while(1)
{

PORTB.1=0; // Зажечь светодиод
delay_ms(15000);
PORTB.1=1; // Погасить светодиод
delay_ms(2500);
PORTB.2=0; // Зажечь светодиод
delay_ms(15000);
PORTB.2=1; // Погасить светодиод
delay_ms(2500);

} // while(1)

} // main

Спасибо.
Убери то что выделено. И кстати кодвижин - это не C++

Или же

Vitkos сказал(а):
void main(void)
{
// инициализация (настройка) порта B
DDRB=0xff; // Порт B работает на вывод (т.е. управляет внешней схемой)
PORTB=0xff; // Установить на всех выводах порта B уровень напряжения +5 В

PORTB.1=0; // Зажечь светодиод
delay_ms(15000);
PORTB.1=1; // Погасить светодиод
delay_ms(2500);
PORTB.2=0; // Зажечь светодиод
delay_ms(15000);
PORTB.2=1; // Погасить светодиод
delay_ms(2500);

while(1)
{} // while(1)


} // main

так, если собака не включена,

если включена то

Vitkos сказал(а):
while(1)
{} asm("wdr")// while(1)


.
 
V

Vitkos

GarikBaza, Дружище! да ты просто гений! Спасибо, заработало! Вот еслибы Вы помогли нам ещё в этом:

Как заставить это действие повторятся а то что за ним чтобы шло дальше по программе до логического конца
#include <90s2313.h>
#include <delay.h>

void main(void)
{
// инициализация (настройка) порта B
DDRB=0xff; // Порт B работает на вывод (т.е. управляет внешней схемой)
PORTB=0xff; // Установить на всех выводах порта B уровень напряжения +5 В

PORTB.1=0; // Зажечь светодиод
delay_ms(1000);
PORTB.1=1; // Погасить светодиод
delay_ms(1000);
PORTB.2=0; // Зажечь светодиод
delay_ms(1000);
PORTB.2=1; // Погасить светодиод
delay_ms(1000);
//это действие надо повторять до безконечности

PORTB.3=1;
delay_ms(90000);
PORTB.3=0;
delay_ms(20000);
PORTB.4=1;
delay_ms(20000);
PORTB.4=0;
delay_ms(20000);
while(1)
{} // while(1)

} // main
 
J

jeka123456

:) Доброго времини суток. Помогите ламеру.
Не могу дописать команду ,чтоб светодиод зажигался только после нажатия на кнопку через вход PORTD.1

void main(void)
{
DDRB=0xff;
PORTB=0xff;
PORTB.1=0;// Зажечь светодиод
while(1)
{} // while(1)
} // main

HELP! HELP! HELP! HELP! HELP! HELP! HELP! HELP!
:cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:
 
G

GarikBaza

Участник
Регист
5 Сен 2006
Сообщения
664
Vitkos,
Это надо делать в прерываниях на таймере. Тогда программа не будет зависить от миганий.
jeka123456,
допустим кнопка висит на PORTB.5
тогдак код будет
void main(void)
{
DDRB = 0xDF;
PORTB = 0xFF;
PORTB.1=0;// Зажечь светодиод
while(1)
{
if ( PIND.5 == 0 ) PORTB.1=0;// Зажечь светодиод
} // while(1)
} // main

Это исключая дребезг и прочую лабуду
Для начала пойдет, я сам так начинал.
А грамотно - при нажатию на кнопку запускать таймер на 20мс и в прерывании таймера еще раз проверить кнопку, если состояние не изменилось, то принять решение о том что кнопка нажата
 
J

jeka123456

:) Большое тебе спосибо GarikBaza за ценейшую инфу . :) :) :) :) у меня на стенде получилось так void main(void)
{
DDRB = 0xDF;
PORTB = 0xFF;
PORTB.1=1;// Погасить светодиод
while(1)
{
if ( PIND.5 == 1 ) PORTB.1=0;// Зажечь светодиод
} // while(1)
} // main спосибо GarikBaza за ценейшую инфу .

Добавлено 02-02-2009 02:22

:) Доброго времини суток.
HELP! Есть прога по которой должны мигать светодиоды

void main(void)
{

DDRB=0xff;
PORTB=0xff;

PORTB.0--;
delay_ms(500);
PORTB.1--;
delay_ms(500);
PORTB.2--;
delay_ms(500);
PORTB.3--;
delay_ms(500);
PORTB.4--;
delay_ms(500);
PORTB.5--;
delay_ms(500);
PORTB.6--;
delay_ms(500);


PORTB.0--;
delay_ms(500);
PORTB.1--;
delay_ms(500);
PORTB.2--;
delay_ms(500);
PORTB.3--;
delay_ms(500);
PORTB.4--;
delay_ms(500);
PORTB.5--;
delay_ms(500);
PORTB.6--;
delay_ms(500);


while(1)
{}

}

GarikBaza ты научил меня зажигать нопкой светодиод теперь я твой должник спасибо тебе Огромное!!!!
Вот если б ты ещё помог мне этой кнопкой приводить в действие мою програму!
 
Ф

ФАНАТИК-05

Забанен
Регист
6 Ноя 2008
Сообщения
29
кто нибудь :help: :help: :help: поможет мне с библиотеками на протеус?
 
M

Murka

Профессор
Регист
16 Мар 2004
Сообщения
2.583
ФАНАТИК-05, Тема не про протеус, про библиотеки тема тут  ссылка скрыта от гостей 
 
Y

yuriy.pv

 ссылка скрыта от гостей /
 
G

GarikBaza

Участник
Регист
5 Сен 2006
Сообщения
664
IAR Embedded Workbench for AVR Version 5.50.1

 ссылка скрыта от гостей 

IAR Embedded Workbench for ARM Version 5.41

 ссылка скрыта от гостей 
 
G

GarikBaza

Участник
Регист
5 Сен 2006
Сообщения
664
На раздаче с 10 до 18 с работы, иногда вечером с дома. Скорость нормальная. Встроеным в оперу клиентом не качается. Пользую uTorrent 2.0.2.
 
M

Murka

Профессор
Регист
16 Мар 2004
Сообщения
2.583
Вот теперь нормальненько, спасибо.

Добавлено 27.05.2010 21:12

Подержу некоторое время на раздаче.
 
M

Mikstura

Спасибо большое за IAR Embedded Workbench for AVR Version 5.50.1, отличная среда программирования и отладки, но, скачал с торрента большим трудом :(

Перезалил на файлообменник, может кому-то с него удобнее скачать будет:

 ссылка скрыта от гостей 
 
M

ManzVol

Регист
19 Мар 2011
Сообщения
2
Помогите определиться.

unsigned char *page;

main() {
....
page = malloc(128);
...
}

Сообщение Toolchain:
error: invalid conversion from 'void*' to 'unsigned char*'

При этом по описанию функции malloc "Функция malloc() возвращает указатель типа void *, поэтому его можно присвоить указателю любого типа"
Что делать?
Пробовал
unsigned char (*page);
Бесполезно.
 
G

GarikBaza

Участник
Регист
5 Сен 2006
Сообщения
664
unsigned char *page;
page = ( unsigned char * ) malloc ( 128 );
Так делай.
Дело в том что malloc возвращает нетипизированый указатель на void, приведение этого указателя нужно делать ручками.
 


Верх