roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Re: МикроКонтроллеры начинающим - общие вопросы

Myp » 27 мар 2008, 22:34

а что такое "спагетти код"???

Re: МикроКонтроллеры начинающим - общие вопросы

Vooon » 27 мар 2008, 22:46

Myp писал(а):а что такое "спагетти код"???

а что выделить текст -> правая кнопка мыши -> Искать в Google ...
такая сложная последовательность?

ладно уж, приведу первую же ссылку: [[w:ru:Спагетти-код]]

Re: МикроКонтроллеры начинающим - общие вопросы

avr123.nm.ru » 27 мар 2008, 23:35

Myp писал(а):а что такое "спагетти код"???


:ROFL: :ROFL: :ROFL: открой любой свой исходник да посмотри ! :o :o :o :cry:

Или курс почитай ... там даже "спагетти текст" ! имеетцО.

Re: МикроКонтроллеры начинающим - общие вопросы

rig » 28 мар 2008, 01:10

хорош авровским языком говорить.
помнитца в школе на инфоматике имено так и получалась программа. и выглядела очень логично. Давеча пришлось по хелпу искать оператор гоуту для си в кодевижене, постарел :crazy:

Re: МикроКонтроллеры начинающим - общие вопросы

Vooon » 28 мар 2008, 01:27

нет, меня просто напрягает нежелание заглянуть хотя бы на первую страничку поисковика
особенно учитывая что в лисе и запрос можно не писать.

а спагетти-код все равно не одобряю - разве большого труда стоит поставить таб
или воспользоваться редактором который помогает придерживаться какого-либо стиля
например vim - вещь! :D

PS: чем нравится питон - в нем чтобы спагетти получить нужно еще постараться :)
Код: Выделить всёРазвернуть
class Post(models.Model):
    author = models.ForeignKey(User, related_name='posts')
    name = models.CharField(_(u'Name'), max_length=settings.NAME_LENGTH)
    slug = models.SlugField(_(u'Slug'), max_length=settings.NAME_LENGTH, blank=True, prepopulate_from=('name', ))
    teaser = models.TextField(_(u'Post teaser'), blank=True)
    text = models.TextField(_(u'Text'))
    render_method = models.CharField(_(u'Render method'), max_length=15, choices=RENDER_METHODS, default=settings.RENDER_METHOD)
    html = models.TextField(_(u'HTML'), editable=False, blank=True)
    date = models.DateTimeField(_(u'Date'), default=datetime.now)
    is_draft = models.BooleanField(verbose_name=u'Post would act as draft', default=False)
    is_featured = models.BooleanField(verbose_name=u'Featured post', default=False)
    enable_comments = models.BooleanField(default=True)
    tags = TagField()

    comments = generic.GenericRelation(CommentNode)
    pingbacks = generic.GenericRelation(Pingback)

    all_objects = PostManager()
    objects = PublicPostManager()
    featured_objects = FeaturedPostManager()

    class Admin:
        list_display = ('name', 'date', 'author', 'enable_comments', 'comments_open', 'is_draft', 'view_link')
        search_fields = ('name', 'text')
        list_filter = ('date', )
        fields = (
            (None, {'fields': ('author', ('name', 'slug'), 'tags', 'text', 'render_method', 'date', ('is_draft', 'enable_comments'))}),
            ('Featured post', {'classes': 'collapse', 'fields': ('is_featured', 'teaser')}),
            )
        if (settings.WYSIWYG_ENABLE):
            js = (
                settings.STATIC_URL + 'js/jquery.js',
                settings.STATIC_URL + 'js/wymeditor/jquery.wymeditor.pack.js',
                '/blog/wysiwyg_js'
                )

    class Meta:
        db_table = 'blog_post'
        ordering = ['-date']
        get_latest_by = 'date'

Re: МикроКонтроллеры начинающим - общие вопросы

Duhas » 28 мар 2008, 02:02

рас уж тут про код то

а зачем понимать рекурсию ? ))
а ты не понимаеш рекурсию? тогда ее нужно понять! <V> :)

Re: МикроКонтроллеры начинающим - общие вопросы

maksvp » 28 мар 2008, 09:57

Исзвиняюсь за свой ужасный С. :) но дымаю в такой махонькой програмулине это не критично, а то прям камнями завалили )))) В макетку у меня впаян кварц на 6 мегагерц, так что плясать мне по идее надо от этой частоты. а прогу написал на 1 МГц и тестил ее в VMLABe для того чтобы опредилить количество тактов на выполнение операции ведь при частоте 1 МГц 1 такт это как раз 1 микросекунда )))

Re: МикроКонтроллеры начинающим - общие вопросы

Duhas » 28 мар 2008, 10:17

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

рекурсию не нужно понимать, ею нужно орудовать...

помните метод вычисления определителя матрицы минорами? вот я на первом курсе все горел желанием написать на косвенной рекурсии пересчет этим методом... вопщем тренирвки использования рекурсии мне тогда хватило, но так и не доделал ибо стало лень мучаться и придумывать структуру входных данных одной изфункций (

А давайте питон, рекурсию и прочие высокие материи обсуждать в личке? :no:
Вот такой я строгий 8)
<Digit>

Re: МикроКонтроллеры начинающим - общие вопросы

Myp » 28 мар 2008, 13:45

Vooon писал(а):
Myp писал(а):а что такое "спагетти код"???

а что выделить текст -> правая кнопка мыши -> Искать в Google ...
такая сложная последовательность?


а у меня яндекс :P
нелюблю я ваши гуглы шмуглы
я туда тока посылаю
а для души я яндекс :: использую

и вобще
номаный у меня код :(
я когда всё работает оптимизированием занимаюс
чтоб всё понятно было...

Re: МикроКонтроллеры начинающим - общие вопросы

maksvp » 28 мар 2008, 15:21

Ладно рекруссия шмекруссия :) вот что я наваял при помощи ВМЛАБа и кодвижна

Код: Выделить всёРазвернуть
#include <mega32.h>

int i=2;

void delay(int x)
{
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
#asm("nop")
    while(x>0)
    {
        #asm("nop")

        x--;
    };
}

void main(void)
{
    PORTA=0x01;
    DDRA=0x01;

        while (1)
        {
            PORTA.0=0;
            delay(i);
            PORTA.0=1;
            delay(i);
        };
}


Суть сией функции в том, что при частоте 6МГц и i=0 пауза составляет 10 микросекунд, каждое увеличение числа i на один прибавляет к паузе еще 5 микросекунд, тоесть допустим при i=1 пауза 15 мкс, при i=2 20 мкс, при i=3 25 мкс. ну и т.д. Предупреждаю на счет комментариев в программе (их отсутствия), да я знаю что комменты полезны и нужны :) , да я знаю что без них через неделю фиг разберешь что сам написал :D . НО! прога маленькая и вем думаю с первого взгляда понятно что собсно она делает, а время на них тратить неохота.
PS теперь это не спагетти код? :)

Re: МикроКонтроллеры начинающим - общие вопросы

avr123.nm.ru » 30 мар 2008, 13:46

Наваял тут проэктик один на ATTiny2313 - для исключения максимального количества ошибок на этапе
разработки долго думал какой бы отладчик заюзать. Proteus и VMLAB - не поддерживает ATTiny2313 , отладчик AVRStudio некорректно ведёт себя именно с этим узлом - модулем UART. А в отладчике AB всё бы хорошо... но там нельзя указывать содержимое байта который нужно передать.


В кратком курсе всем советую :
Выбирайте ТОТ МК для работы с которым у вас есть ИНСТРУМЕНТЫ !!!

Вобщем что посоветуете ? Ну кроме как перейти на др МК?


Попробоуйте "AVR симулятор IDE" - можно найти на заглавной странице курса. Я его использовал и для тини13 и для меги48 а лекарство на cracks.am ищется просто.
Последний раз редактировалось Myp 30 мар 2008, 14:11, всего редактировалось 1 раз.
Причина: размерчик подправил

Re: МикроКонтроллеры начинающим - общие вопросы

Кирилл » 05 апр 2008, 21:21

подключаю мегу16 к ЦАП по SPI. собсно ЦАПу надо от контроллера MOSI, SCK и простой порт вывода. так вот можно ли во время работы SPI использовать MISO как простой порт вывода?

Re: МикроКонтроллеры начинающим - общие вопросы

Duhas » 06 апр 2008, 12:56

ооочень очень врятли.. хотя он вроде как юзер дефайнед значится в режиме мастера...

Re: МикроКонтроллеры начинающим - общие вопросы

avr123.nm.ru » 06 апр 2008, 20:03

CodeVisionAVR v1.25.9 с лекарством (2218 KB)
h-----p://rs208.rapid потом share.com/files/98530938/cvavr.zip

Как с ним работать - можно найти в начале этого топика.

Re: МикроКонтроллеры начинающим - общие вопросы

Master » 07 апр 2008, 13:15

Хочу задавать ШИМ равным преобразованию АЦП, корректна ли такая запись?
OCR1BH=ADCH;
OCR1BL=ADCL;
Я эти строки сунул в обработчик прерывания АЦП, но протеус нифига не симулирует то ли это он глючит, то ли мощности компа не хватает (селерон 2,4 ггц, 512 рама).
Потому что у меня ничего не меняется в режиме онлайн, но если вначале задать потенциометром значение шим, а потом запустить таймер все ОК.


Rambler\'s Top100 Mail.ru counter