Привет всем !!! Надеюсь все знают программку winavr, а в ней Programmer's Notepad 2. Для того чтоб зашить программу в контроллёр, нужен Makefile, и в нем у меня выскакивают ошибки, с константами и т.д. если у кого есть рабочий пришлите его пожалуйста.
Вычитал я тут про что в ATTINY2313 есть встроенный отладчик микроконтроллеров avr но вот только везде нашёл что надо специальная плата и тд. что за плата нужна и как такое реализовать ? с помощью программатора можно ?
Видимо специальный чип с debug-модулем как у PIC'ов среднего семейства. Например замечательный бюджетный МК PIC18F14K50 с USB на борту такого модуля не имеет. Зато есть его "аналог" с таким модулем у которого есть специальные выводы для отладки. Возможно речь была примерно о такой же технологии?
uint8_t lo_byte = var; uint8_t hi_byte = var >> 8;
Или вообще без вычислений. Прочесть байты массива из 2 элементов. Немного некошерно, зато очень быстро. Особенно когда знаем, что контроллер little-endian...
uint8_t lo_byte = var; uint8_t hi_byte = var >> 8;
Или вообще без вычислений. Прочесть байты массива из 2 элементов. Немного некошерно, зато очень быстро. Особенно когда знаем, что контроллер little-endian...
боюсь, и с вашим утверждением нельзя согласиться: на подготовку указателя потратится больше команд, чем на доступ. а если делать через union - то потратится больше строк программы самый оптимум - это приведенный ранее код - ни одного лишнего символа в тексте (если не считать длину имен переменных), ни одной лишней команды в коде (напомню, что сдвиг на 8 компилятор заменит обращением сразу к следующему байту).
битва с дураками проиграна, победители торжествуют. слава победителям!
На подготовку указателя требуется ОДНА (максимум две) строки в результирующем коде. Присвоение указателю значения константы. А при сдвиге двухбайтного слова и дальнейшем ПРИВЕДЕНИИ ТИПА (результат тоже ДВА байта) получится совсем не одна (и даже не две) строки АСМа. Несмотря на условную переносимость предложенного мной метода, я его применяю практически всегда и всегда при окончательной оптимизации это дает существенный выигрыш в длине исполняемого кода. Хотя при толковом компиляторе он при оптимизации действительно сдвиг заменит на простое чтение старшего байта. Т.е. инкрементирует указатель.
Прошил Atmega16 на то, что 4 ножки порта С должны выдавать 5 Гц прямоугольных импльсов, две ножки там и делют все работает. А вот на остальных пусто почему то.