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

  • Автор темы pavel-pervomaysk
P

pavel-pervomaysk

Команда форума
  • 7 Мар 2008
Язык програмирования С для AVR
Здесь работаем с примерами и изучением работы на языке С :)
 
V

Vasil_

Забанен
  • 8 Мар 2008
Посоветовал бы с начала не брать толстые книги, а примерно такой минимальный набор:
 ссылка скрыта от гостей 
 ссылка скрыта от гостей 
Библиотеки Си для 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
 

Информация Неисправность Прошивки Схемы Справочники Маркировка Корпуса Сокращения и аббревиатуры Частые вопросы Полезные ссылки

  • Справочная информация

    Этот блок для тех, кто впервые попал на страницы нашего сайта. В форуме рассмотрены различные вопросы возникающие при ремонте бытовой и промышленной аппаратуры. Всю предоставленную информацию можно разбить на несколько пунктов:

    • Диагностика
    • Определение неисправности
    • Выбор метода ремонта
    • Поиск запчастей
    • Устранение дефекта
    • Настройка

    Учитывайте, что некоторые неисправности являются не причиной, а следствием другой неисправности, либо не правильной настройки. Подробную информацию Вы найдете в соответствующих разделах.

  • Неисправности

    Все неисправности по их проявлению можно разделить на два вида - стабильные и периодические. Наиболее часто рассматриваются следующие:

    • не включается
    • не корректно работает какой-то узел (блок)
    • периодически (иногда) что-то происходит

    Если у Вас есть свой вопрос по определению дефекта, способу его устранения, либо поиску и замене запчастей, Вы должны создать свою, новую тему в соответствующем разделе.
  • О прошивках

    Большинство современной аппаратуры представляет из себя подобие программно-аппаратного комплекса. То есть, основной процессор управляет другими устройствами по программе, которая может находиться как в самом чипе процессора, так и в отдельных микросхемах памяти.

    На сайте существуют разделы с прошивками (дампами памяти) для микросхем, либо для обновления ПО через интерфейсы типа USB.


    По вопросам прошивки Вы должны выбрать раздел для вашего типа аппарата, иначе ответ и сам файл Вы не получите, а тема будет удалена.
  • Схемы аппаратуры

    Начинающие ремонтники часто ищут принципиальные схемы, схемы соединений, пользовательские и сервисные инструкции. Это могут быть как отдельные платы (блоки питания, основные платы, панели), так и полные Service Manual-ы. На сайте они размещены в специально отведенных разделах и доступны к скачиванию гостям, либо после создания аккаунта:


    Внимательно читайте описание. Перед запросом схемы или прошивки произведите поиск по форуму, возможно она уже есть в архивах. Поиск доступен после создания аккаунта.
  • Справочники

    На сайте Вы можете скачать справочную литературу по электронным компонентам (справочники, таблицу аналогов, SMD-кодировку элементов, и тд.).


    Информация размещена в каталогах, файловых архивах, и отдельных темах, в зависимости от типов элементов.

  • Marking (маркировка) - обозначение на электронных компонентах

    Современная элементная база стремится к миниатюрным размерам. Места на корпусе для нанесения маркировки не хватает. Поэтому, производители их маркируют СМД-кодами.


  • Package (корпус) - вид корпуса электронного компонента

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

    • DIP (Dual In Package) – корпус с двухрядным расположением контактов для монтажа в отверстия
    • SOT-89 - пластковый корпус для поверхностного монтажа
    • SOT-23 - миниатюрный пластиковый корпус для поверхностного монтажа
    • TO-220 - тип корпуса для монтажа (пайки) в отверстия
    • SOP (SOIC, SO) - миниатюрные корпуса для поверхностного монтажа (SMD)
    • TSOP (Thin Small Outline Package) – тонкий корпус с уменьшенным расстоянием между выводами
    • BGA (Ball Grid Array) - корпус для монтажа выводов на шарики из припоя

  • Краткие сокращения

    При подаче информации, на форуме принято использование сокращений и аббревиатур, например:

      Сокращение   Краткое описание
    LEDLight Emitting Diode - Светодиод (Светоизлучающий диод)
    MOSFETMetal Oxide Semiconductor Field Effect Transistor - Полевой транзистор с МОП структурой затвора
    EEPROMElectrically Erasable Programmable Read-Only Memory - Электрически стираемая память
    eMMCembedded Multimedia Memory Card - Встроенная мультимедийная карта памяти
    LCDLiquid Crystal Display - Жидкокристаллический дисплей (экран)
    SCLSerial Clock - Шина интерфейса I2C для передачи тактового сигнала
    SDASerial Data - Шина интерфейса I2C для обмена данными
    ICSPIn-Circuit Serial Programming – Протокол для внутрисхемного последовательного программирования
    IIC, I2CInter-Integrated Circuit - Двухпроводный интерфейс обмена данными между микросхемами
    PCBPrinted Circuit Board - Печатная плата
    PWMPulse Width Modulation - Широтно-импульсная модуляция
    SPISerial Peripheral Interface Protocol - Протокол последовательного периферийного интерфейса
    USBUniversal Serial Bus - Универсальная последовательная шина
    DMADirect Memory Access - Модуль для считывания и записи RAM без задействования процессора
    ACAlternating Current - Переменный ток
    DCDirect Current - Постоянный ток
    FMFrequency Modulation - Частотная модуляция (ЧМ)
    AFCAutomatic Frequency Control - Автоматическое управление частотой

  • Частые вопросы

    Как мне дополнить свой вопрос по теме Язык програмирования С для AVR?

    После регистрации аккаунта на сайте Вы сможете опубликовать свой вопрос или отвечать в существующих темах. Участие абсолютно бесплатное.

    Кто отвечает в форуме на вопросы ?

    Ответ в тему Язык програмирования С для AVR как и все другие советы публикуются всем сообществом. Большинство участников это профессиональные мастера по ремонту и специалисты в области электроники.

    Как найти нужную информацию по форуму ?

    Возможность поиска по всему сайту и файловому архиву появится после регистрации. В верхнем правом углу будет отображаться форма поиска по сайту.

    По каким еще маркам можно спросить ?

    По любым. Наиболее частые ответы по популярным брэндам - LG, Samsung, Philips, Toshiba, Sony, Panasonic, Xiaomi, Sharp, JVC, DEXP, TCL, Hisense, и многие другие в том числе китайские модели.

    Какие еще файлы я смогу здесь скачать ?

    При активном участии в форуме Вам будут доступны дополнительные файлы и разделы, которые не отображаются гостям - схемы, прошивки, справочники, методы и секреты ремонта, типовые неисправности, сервисная информация.


  • Здесь просто полезные ссылки для мастеров. Ссылки периодически обновляемые, в зависимости от востребованности тем.



M

Murka

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

Vasil_

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

GarikBaza

  • 11 Авг 2008
По просьбам трудящихся порезал по 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

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

GIP

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

GarikBaza

  • 13 Авг 2008
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

  • 20 Янв 2009
Библиотека функций С для AVR (дается описание на русском языке):
 ссылка скрыта от гостей 
 
K

Komi

  • 20 Янв 2009
Александр777tv, :up: хорошая ссылка.
Вот тоже  ссылка скрыта от гостей 
 
V

Vitkos

  • 29 Янв 2009
Доброго времини суток. Помогите ламеру,так-как програмирую в С++ впервые.
Есть программа, не могу дописать команду чтоб после прохождения цикла она не повторялась (завершить действие)
Пример программы.
#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

  • 29 Янв 2009
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

  • 29 Янв 2009
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

  • 1 Фев 2009
:) Доброго времини суток. Помогите ламеру.
Не могу дописать команду ,чтоб светодиод зажигался только после нажатия на кнопку через вход 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

  • 2 Фев 2009
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

  • 2 Фев 2009
:) Большое тебе спосибо 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

Забанен
  • 8 Фев 2009
кто нибудь :help: :help: :help: поможет мне с библиотеками на протеус?
 
M

Murka

  • 8 Фев 2009
ФАНАТИК-05, Тема не про протеус, про библиотеки тема тут  ссылка скрыта от гостей 
 
Y

yuriy.pv

  • 25 Дек 2009
 ссылка скрыта от гостей /
 
G

GarikBaza

  • 20 Май 2010
IAR Embedded Workbench for AVR Version 5.50.1

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

IAR Embedded Workbench for ARM Version 5.41

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

GarikBaza

  • 27 Май 2010
На раздаче с 10 до 18 с работы, иногда вечером с дома. Скорость нормальная. Встроеным в оперу клиентом не качается. Пользую uTorrent 2.0.2.
 
M

Murka

  • 27 Май 2010
Вот теперь нормальненько, спасибо.

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

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

Mikstura

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

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

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

ManzVol

  • 19 Мар 2011
Помогите определиться.

unsigned char *page;

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

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

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

GarikBaza

  • 19 Мар 2011
unsigned char *page;
page = ( unsigned char * ) malloc ( 128 );
Так делай.
Дело в том что malloc возвращает нетипизированый указатель на void, приведение этого указателя нужно делать ручками.
 

Верх Низ