|
|
  |
Исходники программ и библиотек, у вас есть чем поделиться? |
|
|
|
Jun 6 2008, 11:55
|
Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 23-07-07
Из: Украина, г. Сумы
Пользователь №: 29 306

|
Библиотека для IAR AVR для работы с 1-wire, мож кому пригодится
Прикрепленные файлы
1_wire.rar ( 1.11 килобайт )
Кол-во скачиваний: 1194
|
|
|
|
|
Sep 10 2008, 09:21
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-12-07
Из: г. Таганрог, Ростовская обл.
Пользователь №: 33 310

|
Не совсем в тему, но может пригодится. Библиотека AVR32LIb Altium (6,7) Ссылки на поекты использующие USB и микроконтроллеры AVR (AVR-USB ). http://microcpu-info.na.by/index.php?optio...9&Itemid=23
|
|
|
|
|
Sep 10 2008, 18:56
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 14-12-07
Из: г. Таганрог, Ростовская обл.
Пользователь №: 33 310

|
Цитата(VDG @ Sep 10 2008, 17:30)  Не работает ссылка. Пишет доступ закрыт. Прошу прощения ... эти гады на na.by закрыли мой сайт ... (слов нет какие они какашки) Вот ссылки Проекты в сети реализованные на AVR-USB http://www.obdev.at/products/avrusb/prjall.htmlA Firmware-Only USB Driver for the AVR http://avrusb.wikidot.com/Если у вас так же плохо с английским, как и у меня, то могу предложить перевод нескольких страниц. Собственно перевод.
|
|
|
|
|
Nov 24 2008, 13:31
|
Участник

Группа: Участник
Сообщений: 24
Регистрация: 11-10-06
Пользователь №: 21 214

|
Вот дописал работу с 1-wire slave. Язык - Си. Можете пользоваться. Тайминги настроены на 11.059MHz, AtMega16, таймер с предделителем 32 и прерывание по фронту. Схема соединения с линией 1-wire через 2 транзистора (но это не критично). В архиве кроме того неплохая библиотечка для работы с таймерами. Позволяет повесить несколько виртуальных таймеров на 1 реальный. Да, у 1-wire много проверок для надёжности работы, поэтому протокол видно не очень явно. Есть код без проверок - более ясный, но он падает при отсутствии мастера.
Сообщение отредактировал Andrew Lekar - Nov 24 2008, 13:32
|
|
|
|
|
Dec 15 2008, 11:59
|

Местный
  
Группа: Свой
Сообщений: 253
Регистрация: 28-12-07
Из: Украина г. Первомайск
Пользователь №: 33 716

|
Вот мой код для 44780 , понимаю что тут на асме пишущих мало ... CODE 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 // выход
|
|
|
|
|
Dec 15 2008, 12:38
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(Павлик @ Dec 15 2008, 15:59)  Вот мой код для 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; и вот тут мы не вешаемся, а выходим, ;давая работать и другим компонентам программы ; а там -коррекция стека, сохранение контекста задачи ;(минимального - никто не просит все регистры сохранять) итд
|
|
|
|
|
Jan 24 2009, 22:38
|
Группа: Участник
Сообщений: 8
Регистрация: 16-12-08
Из: Москва
Пользователь №: 42 528

|
Классы для scmRTOS ATmega128
Сообщение отредактировал Abrvalg - Jan 24 2009, 22:39
|
|
|
|
|
Jan 29 2009, 20:38
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 27-01-09
Пользователь №: 44 027

|
Пользуйтесь. Моя библиотека для IAR. Синтезаторы, АЦП и др. Делал для себя под конкретную задачу. *conf.h в директорию проекта и можно корректировать. У меня библиотека в /avr/inc/my.
Прикрепленные файлы
MyIAR.rar ( 49.87 килобайт )
Кол-во скачиваний: 971
|
|
|
|
|
Feb 24 2009, 17:33
|
Участник

Группа: Новичок
Сообщений: 18
Регистрация: 21-04-05
Пользователь №: 4 376

|
Temperature alarmTemperature alarm with ATMega8 and DS18S20/DS18B20. Set high and low limits with rotary switches and device will alert you with buzzer and blinking LED's when temperature is out of limits. Triac Power Regulator/TimerSingle-phase, zero crossing power regulator/timer. Can be used for switching on load for a defined time period, controlling power applied to load, or both functions combined. For example: heater control, soldering iron temperature regulation. 7-segment LED display for time/power indication.Bresenham's algorithm used for control signal distribution. Countdown timerSimple timer for switching on load for a defined time period. Set time period, push the START button and timer will turn on for a defined time period. After time elapses it will turn off automatically. http://www.embtron.com/
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|