Duhas

Примеры Кода Для Avr

559 сообщений в этой теме

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
YurkaM    7

Смотри пост 21. Обе ссылки еще живы. Размер файла около 10М

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

блин на мегу 16 нужен ошибся(((( а 10 мб дорого и долго на сайте русскоязычном атмела смотрел не нашел загуглить не получилось

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alts    1

Покопайся по темам в форуме.Где-то выкладывали ссылку про МК Мега на русском.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexi    1

Народ помогаем!!

Застряна богальном.

При переходе с PIC на AVR возникла дурацкая проблема.

К примеру есть нейкое int i. i=16;

В компиляторе который я юзал для PIC командой printf("%d", i); у меня выводились данные '1' '6' в нормальном ASCII. А в компиляторе CVAVR так делать не хочет, покрайней мере способа я не нашел. А вычилять делить на 100 или на 10 с добавлением 48 бред.

Как тут поступить??

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Barni    0

Странно. В CVAVR должно работать. Только в начале добавить #include <stdio.h>

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexi    1
Странно. В CVAVR должно работать. Только в начале добавить #include <stdio.h>

Подклбчал, песполезно..

Написал фукцию дополнительную. Уже и забыл про эту проблему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Denis72    0

возник небольшой трабл, читал на сайте майробот про схемку на одном микрокрнотроллере L293D,но какой брать-не знаю.Почти заказал L293D (КР 1128 КТ4) PDIP16,но покатит ли он?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
YurkaM    7

L293D (КР 1128 КТ4) - это не микроконтроллер, а всего лишь "PUSH-PULL FOUR CHANNEL DRIVER WITH DIODES". Если по-деревенски - это четыре полумостовых усилителя тока.

Изменено пользователем YurkaM

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может быть мой вопрос покажется глупым, но рискну задать:

STK500 это симулятор, эмулятор и программатор одновременно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
alts    1

STK500 позиционируется как стартовый набор.

Назначение - максимально облегчить юзеру знакомство с кристаллами(кристаллом) АВР.

Уже содержит всякую преферию типа кнопок, микросхем памяти, разъемов и т.д.

Программирование кристалла и мониторная отладка - это одна из его функций.

Эмуляция и симуляция в данном случае почти синонимы и это функция AVRStudio под которой работает STK500.

Посмотрите на www.atmel.com... там есть все по STK500

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

срочно - есть подозрение что МК дохлый - могу ли я подключить программатор к нему и прога-прошивальщик мне скажет что он дохлый , ну или ошибка или еще че нить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Klima    0

Деньок добрый!

вот начл ковырять АВР. Обзавёлса книжкой в комплекте компакт ну это не важно.

Короче написал програмку простенькую под атмегу 128 на Си, откомпилировал, получил файл .COF, зарядил в протеус и ничё не вижу, ни програмного кода как раньше с 51 работал, хотя правда писал на ассемблере, ни результата деятельности моего сверх простого кода. ( выходы тихарят ) Тобиш ничё не меняетса на выходе контроллера, хотя в АВР студио всё фунциклирует ( вроде как ),

короче вод этот код мож я чёто настрахолюдил в коде или чё может не так с протеусом делаю?

#include <avr/io.h>
#include <avr/delay.h>

void light(void)
{
PORTD = 0xFF;
}

void darck(void)
{
PORTD = 0x00;
}

int main (void)
{	DDRD = 0xFF;

while (1)
{
	light();
	darck();
}
}

Изменено пользователем Klima

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
antzol    2

2 Klima

А на выводы RESET и PEN подали +5 вольт через резисторы килоом по 10?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Klima    0

Ну вот следуя вашым предписаниям зделал 5 вольт через 10к на ресет и пен ничё не помогаеть есть идея если конечно не сложно кому нибудь закинуть этот код и проверить

если у когото всё получаетса знач наверно я чёто не то делаю щяс ещё на ассемблере сворганю буду учить ассемблер в паралель

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
antzol    2

Всё работает... В протеусе присоединял и cof и hex, с обоими работает. Компилятор - WinAVR.

Вот проекты в winavr и proteus:

avr_blink.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Klima    0

Благодарю ОГРОМНОЕ нашол где гвоздь лежит я не отредактировал мейк файл там для 169 меги было :rolleyes:

если бы не твой проэкт я бы наверно ещё дня 2 возился

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
antzol    2

Недавно начал разбираться с avr, в протеусе всё прекрасно работает, а вот как дело дошло до железа, никак не могу запустить контроллер.

Контроллер atmega128. Уже пытаюсь хотя бы заставить его выдавать импульсы на каком-нибудь порту. Заливаю hex-файл из своего же 43-поста. Программатор Avr ISP I/O в связке с PonyProg. Прекрасно прошивается. Фьюзы настроил на на внешний кварц, генерация есть (смотрел осциллографом). А вот на портах - тишина... В чём может быть проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
antzol    2

Разобрался... Вопрос снимается. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexi    1

А в чем трабла была?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
antzol    2

Просто зачем-то нужно было записывать еще и файл *.eep. Странно... Ведь ПЗУ никак не использовалось, да и в этом файле были только FF FF...

Уже после дела прочитал в одной книге прочитал, что это надо делать, (называется что-то типа "Самоучитель AVR"). Хотя для меня так и осталось загадкой, зачем это делать... :) Довольно странная штука при переходе с пиков.

Думал, при стирании записываются те же FF. Надо будет проверить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
serg    2

Если у Вас есть огромное желание научиться программировать AVR и не знаете с чего начать тогда эта страничка для Вас _http://www.yourdevice.net/avr.html.

Собрана минимально необходимая информация, которую нужно знать для программирования данной серии микроконтроллеров. Кратко описана последовательность изучения. Есть документация, болшое количество примеров проектов и ссылки на русском языке к популярным программам Proteus, CVAVR, AVRStudio, IAR. Схемы и готовые устройства USB программаторов и USBJTAG отладчиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sounds    0

С кокого микроконтроллера лучше начать? (желательно с перезаписью)

Какой программатор лучше собрать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Atreides
      Добрый день. Мне требуется реализовать программный юарт на атмеге16. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.
    • Автор: karomag
      Добрый день.
      Экспериментирую с подключение 7-сегментного индикатора к мк stm32. Индикатор с общим катодом. Соответственно для вывода цифры необходимо на анод каждого сегмента подать 1, а на общий катод 0. И тут я не могу понять какие токи будут через порты. Теоретически, пины МК подключенные через резистор 300 Ом к аноду (напряжение МК 3.3 В) то ток будет 4 мА, тогда на общем катоде должно быть 7 * 4 = 28 мА (цифра 8, т.е. горят все сегменты). Т.е. это небольшое, но превышение макс тока на ногу 20 мА. И надо общий вывод подключать через транзисторный ключ.
      Взял мультиметр. Результаты замера: ток каждого сегмента ~2.5 мА, ток общего катода 5 мА. Вот тут я подумал о школе Хогвардс))) Как все таки рассчитывается все таки ток на общем выводе? 
    • Автор: art_budka
      Ищу подрядчика для разработки проекта робота-рисовальщика. Есть бюджет, ТЗ. 
      Устройство представляет собой манипулятор передвигающий головку в плоскости XY в пределах жесткой рамы на которой установлены двигатели и направляющие перемещения. Головка представляет собой блок, отвечающий за передвижение закрепленного в фиксаторе объекта-пера по оси Z на расстояние до 20 мм. Фиксатор на элементе подъёма головки должен обеспечить жесткое закрепление предметов массой 10 - 80 грамм - кистей, шариковых ручек, карандашей и маркеров диаметром от 5 до 20 мм.
      Решение необходимо для обеспечения точных, многократно повторяющихся перемещений “пера” над плоской поверхностью. Для формирования движений в устройстве должна быть реализована электромеханическая схема, подключенная посредством USB-интерфейса к персональному компьютеру для отправки команд на манипулятор и получения обратной связи от контроллера манипулятора. 
      ТЗ, смета и бюджет через art_budka@rambler.ru 
    • Автор: EugenArt
      Всем доброго времени суток!
      в поиске не смог найти инфо, поэтому создал тему, не ругайте, если ошибся с веткой.
      Идея следующая, есть автомагнитола deh-3600MP c выходом Ip-bus.Хочу подружить магнитофон с мп3 плеером (есть от фм-трансмиттера, завтра куплю платку отдельного мп3). Сразу подчеркну, что хочу управление плеером (треки, теги, пауза и т.д) с головного устройства.
      предполагаю схему так:  ip-bus - avr - mp3 player.
      алгоритм avr-mp3 несложен и открыт, а вот описание протокола ip-bus нигде нет, форум витат.спб уже изучил, есть кусок кода работы авр и ip-bus, но не очень понятно, может подскажете набор команд ip-bus или что происходит по событию нажатию кнопки вперед/назад.
      Заранее благодарен.
    • Автор: Максим Окатов
       
      Товарищи, помогите пожалуйста. Данная програмулина при нажатии на кнопку входит в функцию MinU() в которой инициализирует таймер для задержки(ждем отпустит пользователь кнопку или нет) если кнопка не отпущена то уменьшаем скважность ШИМ.
      проблема в выделенной красным строчке! когда count больше 3 уменьшаем скважность, но в отладчике AVR studio, Proteus и в железе не робит.
      Перепрыгивает действие в {} так будь-то условие не выполнено...
      #define F_CPU 1000000L
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <util/delay.h>
      unsigned char count = 0;
      unsigned char a=5,s=3,b=0;
          //===================================Насройка таймера====================
      void Timer_ini(void){
         TCCR1B = (1<<CS12)|(0<<CS11)|(0<<CS10);
         TCNT1 = 65535-976;
         TIMSK |= (1<<TOIE1);
         count = 0;
        }
          //===========================настройка шим===========================
      void PWM_ini(void){
         ASSR=0x00;
         TCCR2=0b01101110; //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
         OCR2=200;
      }
      //===============
      void MinU(){
          unsigned char i=0;
          Timer_ini();
          while (!(PINB&0b00000010)){
              if(count>2){        //Если таймер считал более двух раз
                _delay_ms(100); // ждем 100 мс
                OCR2--; // Уменьшаем скважность
                i=1;        // были в плавном уменьшении
            }
            
         }
         if (i!=1) // если не были в плавном уменьшении
         {
             OCR2=OCR2-50;
             i=0;
         }
      }
              //=======================================================
      int main(void)
          {
             
              // Настраиваем порт D на выход
              DDRB = 0b00001000;
              PWM_ini();
              //Timer_ini();
              sei();
              
              
              while(1)
              {
                  b=a-s;
                  if (!(PINB&0b00000010))
                  {
                      MinU();
                  }/*
                  //if (!(PINB&0b00000100))
                  //{
                      //PlsU();
                  //}*/
              }
              return 0;
          }
          
          ISR (TIMER1_OVF_vect)
          {
              count++;
              TCNT1 = 65535-976;
                  }