Перейти к содержанию
    

Исходники программ и библиотек

AvrStudio + WINAVR, чистый C

 

Програма управления премником с синтезатором.

С большой библиотекой подпрограмм для управления разнообразными микросхемами DDS и PLL.

 

Програмный SPI, в минимальном виде обслуживание RAMTRON FRAM, примитивная клавиатура и инкрементный валкодер. Еще одна версия обслуживания HD1602.

Аттачмент - TC1-....

 

----------------

На китайском форуме нашелся полный проект прерходника USB-RS232 - стандартное CDC устройство.

ATMEGA8 + Philips/NXP PDIUSBD12.

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

Оригинал лежит на

http://blog.chinaunix.net/u/3272/showart_245587.html

 

----------------

Еще один проект ATMEGA162 + Philips/NXP PDIUSBD12.

Внешняя USB звуковая плата для воспроизведения звуком.

С кучей ошибок в коде (кое-где перепутаны выдача кода и данных в Philips), но мне помог на самом начальном этапе. Ввести звук в компютер мне так и не удалось заставить эту программу.

http://www.circuitcellar.com/AVR2004/HA3553.html

 

A3553.ZIP

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

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


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

А есть не по табличному способу?

unsigned char crc_8;                                  //в этой переменной считаем CRC8

//Вычисляет и возвращает crc8
void do_crc_8(unsigned char byte)
{
unsigned char ret=crc_8;
unsigned char m=1;
unsigned char l;
for (char j=0;j<8;j++)
    {
    l=((byte&m)?0x8c:0)^((ret&0x1)?0x8c:0);
    ret>>=1;
    ret^=l;
    m<<=1;
    }
crc_8=ret;
}

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


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

Интересная ссылка. Глубоко не копал, но там содержится набор различных инструментов + библиотеки программ для AVR.

Буду рад, если окажется полезной!

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


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

Не совсем в тему, но может пригодится.

 

Библиотека AVR32LIb Altium (6,7)

 

 

Ссылки на поекты использующие USB и микроконтроллеры AVR (AVR-USB ).

 

http://microcpu-info.na.by/index.php?optio...9&Itemid=23

AVR32LIb_Altium67.zip

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


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

Не работает ссылка. Пишет доступ закрыт.

 

Прошу прощения ... эти гады на na.by закрыли мой сайт ... (слов нет какие они какашки)

 

Вот ссылки

 

Проекты в сети реализованные на AVR-USB

http://www.obdev.at/products/avrusb/prjall.html

 

A Firmware-Only USB Driver for the AVR

http://avrusb.wikidot.com/

 

Если у вас так же плохо с английским, как и у меня, то могу предложить перевод нескольких страниц.

 

Собственно перевод.

______________________AVR.pdf

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


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

2 ссылки (на этом же форуме): библиотека поддержки AT90CANxxx и пример ее использования. WinAVR. взято из комплекта отладочной платы DVK90CAN1.

 

http://electronix.ru/forum/index.php?act=A...st&id=26506

http://electronix.ru/forum/index.php?act=A...st&id=26516

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

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


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

Вот дописал работу с 1-wire slave. Язык - Си.

Можете пользоваться.

 

Тайминги настроены на 11.059MHz, AtMega16, таймер с предделителем 32 и прерывание по фронту. Схема соединения с линией 1-wire через 2 транзистора (но это не критично).

 

В архиве кроме того неплохая библиотечка для работы с таймерами. Позволяет повесить несколько виртуальных таймеров на 1 реальный.

 

Да, у 1-wire много проверок для надёжности работы, поэтому протокол видно не очень явно. Есть код без проверок - более ясный, но он падает при отсутствии мастера.

tm_slave.rar

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

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


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

Вот мой код для 44780 , понимаю что тут на асме пишущих мало ...

 

 

long_code_here = ';


// Работа с ЖКИ 

// LCD PORTA

// Двухстрочный ЖКИ 16 х 2  ( 20 х 4 ) контроллер 44780 режим 4 бита 5 х 7 точек 

.equ   rs    = PA1    //  Выбор регистра ЖКИ
.equ   rw    = PA2    //  Чтение_запись данных в ЖКИ
.equ   e     = PA3    //  Включение разрешения команд  
.equ   bf    = PA7    //  Флаг занятости ЖКИ



init_lcd:             // Инициализация ЖКИ  
cbi    porta,rw       // RW  --> 0
cbi    porta,e        // E   --> 0
cbi    porta,rs       // RS  --> 0
call   wait_20ms      // ждем 20 милисекунд
ldi    data,0x28      // 4 бита режим 5 х 7 точек 2 строки
call   lcd_cmd_i      // передаем команду в ЖКИ
call   wait_20ms      // ждем 20 милисекунд 
ldi    data,0x0C      // 4 бита режим 5 х 7 точек 2 строки
call   lcd_cmd_i      // передаем команду в ЖКИ
call   wait_20ms      // ждем 20 милисекунд
ldi    data,0x28      // 4 бита режим 5 х 7 точек 2 строки
call   lcd_cmd_i      // передаем команду в ЖКИ
call   wait_20ms      // ждем 20 милисекунд
ldi    data,0x00      // 
call   lcd_cmd        // передаем команду в ЖКИ
call   lcd_line1      // 
ret                   // выход

// Register r16 tmp
wait_lcd:          // Готовность ЖКИ к приему  
ldi    tmp,0x0F    // загружаем константу 
andi   tmp,0x0F    // выделяем старшую тетраду
out    ddra,tmp    // выводы 4 5 6 7 порта А - входы
cbi    porta,rs    // RS --> 0
nop                // 
sbi    porta,rw    // RW --> 1
nop                // 
lcd_busy:          // E  --> 1  
sbi    porta,e     // E  --> 1
nop                //
in     tmp1,pina   // Прочитать содержимое порта А 
cbi    porta,e     // E  --> 0
nop                // 
sbi    porta,e     // E  --> 1
nop                // 
cbi    porta,e     // E  --> 0
sbrc   tmp1,7      // пропуск след команды если сброшен бит 7 
jmp    lcd_busy    // перейти на метку lcd_busy
cbi    porta,rw    // RW --> 0
ldi    tmp,0xFF    // загружаем константу 
out    ddra,tmp    // все выводы порта А - выходы 
ret                // выход

clr_string:          // Очистка строки ЖКИ 
ldi    data,0x20     // загружаем данные пробела 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
call  print_char     // выводим на жки 
ret                  // выход 

clr_lcd:              // Очистка ЖКИ 
ldi    data,0x01      // загружаем данные
call   lcd_cmd        // подаем команду
ret                   // выход 

clr_line1:            // 
call   lcd_line1      // 
call   clr_string     // 
call   lcd_line1      // 
ret                   //   

print_char:           // Вывод символа / данных на ЖКИ
call   wait_lcd       // 
sbi    porta,rs       // RS --> 1
jmp    send_byte      // передаем байт в ЖКИ

send_nibble:          // Передача полубайта в ЖКИ
sbi     porta,e       // E --> 1
in      tmp,porta     // прочитать содержимое порта 
andi    tmp,0x0F      // и выделить старшую тетраду
andi    data,0xF0     // выделить младшую тетраду в регистре 
or      data,tmp      // смешать регистр с данными
out     porta,data    // выдать в порт А результат
cbi     porta,e       // E --> 0
ret                   // выход

lcd_line1:
ldi   data,0x80       // Выбор адреса первой строки данных !
call  lcd_cmd         // передаем команду
ret                   // выход 

lcd_line2:
ldi   data,0xC0       // Выбор адреса второй строки данных !
call  lcd_cmd         // передаем команду
ret                   // выход 

lcd_line3:
ldi   data,0x94       // Выбор адреса третьей строки данных !
call  lcd_cmd         // передаем команду
ret                   // выход 

lcd_line4:
ldi   data,0xD4       // Выбор адреса четвертой строки данных !
call  lcd_cmd         // передаем команду
ret                   // выход 

lcd_cmd:              // передача команды в ЖКИ   
call    wait_lcd      //     
lcd_cmd_i:            // передача команды в ЖКИ при ините
cbi     porta,rs      // RS --> 0  
send_byte:            // Передача байта в ЖКИ
sts     data_ram,data // сохранить data в ram
call    send_nibble   // вызвать передачу полубайта
lds     data,data_ram // извлечь data из ram
swap    data          // поменять нибблы местами 
call    send_nibble   // вызвать передачу полубайта
lds     data,data_ram // 
ret                   // выход


out_text:              // Вывод текста из флеш проца 
lsl     ZL             // Умножаем на 2  
rol     ZH             // регистровую пару 
ot_1:                  // Метка перехода 
lpm                    // загружаем ячейку памяти из флэш 
mov     data,r0        // копируем данные для вывода 
call    print_char     // выводим данные на ЖКИ
adiw    ZL,1           // вычитываем из пары регистров 1  
dec     loop           // отнимаем 1 от счетчика 
brne    ot_1           // перейти если не равно 
ret                    // выход 



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


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

Вот мой код для 44780 , понимаю что тут на асме пишущих мало ...

Ну, и кто так пишет ? :)

lcd_line1:
ldi   data,0x80       // Выбор адреса первой строки данных !
call  lcd_cmd         // передаем команду
ret                   // выход 

lcd_line2:
ldi   data,0xC0       // Выбор адреса второй строки данных !
call  lcd_cmd         // передаем команду
ret                   // выход 

lcdcmd:

Особенно понравилась clr_string :)

Вместо call lcd_cmd поставить rjmp lcd_cmd, конечно же, низзя :)

Процедура wait_ХЗ_сколько_мс намертво вешает проц, наверное :) как и wait_lcd.

Так что не позорьтесь.

Лучше бы эти все wait_xxx делать под многопоточную среду типа

lcd_busy:  
; далее по тексту  
cbi    porta,e     // E  --> 0
sbrc   tmp1,7      // пропуск след команды если сброшен бит 7 
jmp system; и вот тут мы не вешаемся, а выходим, 
                ;давая работать и другим компонентам программы
                ; а там -коррекция стека, сохранение контекста задачи 
                ;(минимального - никто не просит все регистры сохранять) итд

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


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

Классы для scmRTOS ATmega128

ATmega128_classes.rar

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

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


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

Пользуйтесь. Моя библиотека для IAR. Синтезаторы, АЦП и др. Делал для себя под конкретную задачу.

*conf.h в директорию проекта и можно корректировать. У меня библиотека в /avr/inc/my.

MyIAR.rar

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


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

Нашел вот очень занятную ссылочку Software-implemented USB Low Speed Host Controller (atmega32 и т.п.), но никак не удается выкачать исходник... если покопаться, то он присутствует в виде html-страниц, а одним архивом - можно вроде скачать, но при помощи специальной утилиты... если кто выкачает - прошу выложить.

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


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

Замена HT1613 на ATTINY2313 c алс с общим катодом. Проэкт под CodeVisionAvr, cхемотехника скопирована с нета.

HT1613toALS.zip

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...