Главная › Форумы › Программирование микроконтроллеров › Программирование МК AVR
Помечено: AVR
- В этой теме 53 ответа, 40 участников, последнее обновление 5 месяцев назад сделано
Solder.
-
АвторСообщения
-
Январь 3, 2018 в 7:18 дп #13888
arkonen
УчастникВсех с новым годом . Товарищи помогите , подскажите как реализовать SNMP в AVR ? Или может статьи есть у кого то интересные где почитать можно ?
Январь 3, 2018 в 12:56 пп #13933VladimirM
УчастникЗдравствуйте. В ATmega328P есть регистры OCR0B, OCR0A у меня вопрос, если будет установлен режим сброс при совпадении, а значения в регистрах будут разные, получается что счётчик не дойдёт до второго числа в регистре которого число больше и будет всё время сбрасываться, так как регистр TCNT0 один,а регистра сравнения (OCR0B,OCR0A) два! Так ли это? Как они работают?
Февраль 24, 2018 в 7:46 дп #14621arkonen
УчастникДоброго времени суток , подскажите пожалуйста как можно безболезненно в AVR всунуть SNMP ?
Может подскажите ссылки , ну или хотя бы направьте в нужное русло !Февраль 25, 2018 в 1:38 пп #14623Ortos
УчастникДоброе время суток.
Подскажите пожалуйста как подключить точку через 74hc595 для часов.
Спасибо.Март 14, 2018 в 11:46 дп #14780Leonid
УчастникСпасибо автору за его бескорыстную просвятительскую (надо сказать отлично выполненную) работу!
Теперь, не совсем в тему, посмотрел на ваш урок в ютьюбе и честное слово, позавидовал работе вашего компьютера. Быстро, четко без задержек на внутренние задержки, даже при работе с «железом»! ВОПРОС, если не составит труда дайте конфигурацию вашего компа и операционной системы… Уж ОЧЕНЬ хочется такой же…
Апрель 21, 2018 в 6:38 дп #15095Selivanov
УчастникВладимир, добрый день!
Свой вопрос я хотел бы начать с благодарности: большое спасибо за канал! Ещё недавно будучи студентом универа,
я смотрел Ваши и ролики и, скажем так, набирался ума. Само собой, это пошло на пользу, и дисциплину, связанную с
программированием МК, я закрыл на хорошую оценку.
Теперь непосредственно вопрос: у Вас есть очень интересный цикл уроков про микроконтроллер STM32 и сетевой чип W5500.
Скажите, пожалуйста, реально ли Ваш код переставить на «рельсы» AVR? Я пытался переделать его самостоятельно (я хочу
поднять простой UDP сервер), но у меня ничего не выходит. Не могли бы вы дать несколько советов, как инициализировать
чип на AVR (я, в частности, использую Atmega32)? Я делаю практически всё то же самое, но не знаю, в чём может крыться
ошибка (может быть, даже неправильно написана функция передачи по SPI). Помогите, пожалуйста, уже почти месяц
бьюсь над этой проблемой. Если что, могу даже скинуть свой код.
Спасибо. Каким бы ни был результат, я обещаю задонатить, так как считаю, что такие полезные ресурсы должны иметь поддержку.Апрель 21, 2018 в 6:42 дп #15096Narod Stream
ХранительЗдравствуйте!
А чип отзывается по SPI?Апрель 21, 2018 в 10:38 дп #15099Selivanov
УчастникЭтого я не проверял. Я написал функцию пересылки данных по SPI, и начал писать в регистры W5500 необходимые данные: ip, mac, порт и всё остальное. У меня, к сожалению, самый простой программатор, без отладчика, поэтому отладить код не могу. Наверное, мне стоит попробовать прочитать эти данные, чтобы удостовериться, что они действительно доходят до места назначения, но я даже не уверен, что пересылку организовал правильно. Код привожу ниже:
1234567891011121314void w5500_writeReg(uint8_t op, uint16_t adress, uint8_t data){//select_w5500(); //Функцию выбора SS закомментировалSPDR = (adress>>8); //Пересылаем старший байт адресаwhile(!(SPSR & (1<<SPIF))); //Ждём конца пересылкаSPDR = adress; //Пересылаем младший байт адресаwhile(!(SPSR & (1<<SPIF)));SPDR = op|(RWB_WRITE<<2); //Применяем операцию "или" к опкоду и битом записи, сдвинутым на два битаwhile(!(SPSR & (1<<SPIF)));SPDR = data; //Передаём данныеwhile(!(SPSR & (1<<SPIF)));//deselect_w5500();}Функция чтения точно такая же, за исключением того, что я по-другому формирую опкод (op|(RWB_READ<<2) и в конце не пересылаю данные в SPDR, а возвращаю их (return SPDR). Если можно как-нибудь по-другому проверить работоспособность чипа, то я буду рад об этом узнать.
Апрель 21, 2018 в 11:50 дп #15100Narod Stream
ХранительПроверьте отклик логическим анализатором
Июль 3, 2018 в 9:03 дп #15749Yury
УчастникВ уроке 20, часть 2 есть небольшая ошибка: в нескольких функциях мы запрещаем прерывания, но нигде их не разрешаем…
Июль 3, 2018 в 4:44 пп #15758SergeyVT
УчастникДоброго времени суток, Narod Stream!Прошу разъяснить для меня простую вещь.
В уроке про мигающий светодиод мы изучали побитовые операции И, ИЛИ, НЕ.Все вроде бы понятно.Но тут напрашивается вопрос, зачем Вы так усложнили код, тем более с обычным мигающим светодиодом?
Ваш код
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>int main(void)
{
DDRD = 0xFF;
PORTD = 0b00000000;
while(1)
{
PORTD |= (1<<(PORTD0));
_delay_ms(500);
PORTD &= ~(1<<(PORTD0));
_delay_ms(500);
}
}
Мой код
#define F_CPU 8000000// указываем частоту в герцах
#include <avr/io.h>
#include <util/delay.h>int main(void)// начало основной программы
{
DDRD = 0xFF;//Все выводы порта D будут сконфигурированы как выходы.
PORTD = 0b00000000;//устанавливаем на всех ножках принудительно ноль(во избежание остаточного мусора в регистрах)
while(1)
{
PORTD = 0b00000001;
_delay_ms(500);//делаем задержку в пол секунды
PORTD = 0b00000000;
_delay_ms(500);//делаем задержку в пол секунды
}
}
Хотя ведь можно было просто установить вот так как у меня и все так же работает.Если я не прав, то поясните в чем конкретно.Буду очень признателен.Июль 11, 2018 в 6:08 дп #15819tobaco
Участник[b]SergeyVT[/b]
Потому что в данном случае:
PORTD |= (1<<(PORTD0));
затрагивается только ножка на которой висит светодиод, а в вашем случае вы явно задаете состояние всех ног порта, что верно, но в случае если на другие ножки вешать что-то еще, то ваш код все это отключит.Июль 13, 2018 в 9:12 пп #15828SergeyVT
Участник[b]tobaco[/b]Спасибо!
Август 12, 2018 в 5:33 пп #16078igrok_by
УчастникВсем привет.
Недавно нашел канал. Давно хотел изучить АВРСТУДИЮ. Спасибо за понятное и полное обьяснение что куда и откуда.
Хотелось бы уточнить будет ли продолжение про AVR???Август 13, 2018 в 12:22 пп #16099mescenter
УчастникДобрый день!
Пардон за оф-топик, но контактов на сайте не нашёл.
Большая просьба к администратору сайта связаться со мной голосом или по почте, есть интересный разговор:
Спасибо!Решетников Игорь
MES-центр (Россия), Российская рабочая группа MESA International
e-mail: @mescenter.ru">I.Reshetnikov@mescenter.ru
тел.: +7 (916) 671-19-74
Интернет: http://www.mescenter.ru -
АвторСообщения
-
АвторСообщения
-
Всех с новым годом . Товарищи помогите , подскажите как реализовать SNMP в AVR ? Или может статьи есть у кого то интересные где почитать можно ?
Здравствуйте. В ATmega328P есть регистры OCR0B, OCR0A у меня вопрос, если будет установлен режим сброс при совпадении, а значения в регистрах будут разные, получается что счётчик не дойдёт до второго числа в регистре которого число больше и будет всё время сбрасываться, так как регистр TCNT0 один,а регистра сравнения (OCR0B,OCR0A) два! Так ли это? Как они работают?
Доброго времени суток , подскажите пожалуйста как можно безболезненно в AVR всунуть SNMP ?
Может подскажите ссылки , ну или хотя бы направьте в нужное русло !Доброе время суток.
Подскажите пожалуйста как подключить точку через 74hc595 для часов.
Спасибо.Спасибо автору за его бескорыстную просвятительскую (надо сказать отлично выполненную) работу!
Теперь, не совсем в тему, посмотрел на ваш урок в ютьюбе и честное слово, позавидовал работе вашего компьютера. Быстро, четко без задержек на внутренние задержки, даже при работе с «железом»! ВОПРОС, если не составит труда дайте конфигурацию вашего компа и операционной системы… Уж ОЧЕНЬ хочется такой же…
Владимир, добрый день!
Свой вопрос я хотел бы начать с благодарности: большое спасибо за канал! Ещё недавно будучи студентом универа,
я смотрел Ваши и ролики и, скажем так, набирался ума. Само собой, это пошло на пользу, и дисциплину, связанную с
программированием МК, я закрыл на хорошую оценку.
Теперь непосредственно вопрос: у Вас есть очень интересный цикл уроков про микроконтроллер STM32 и сетевой чип W5500.
Скажите, пожалуйста, реально ли Ваш код переставить на «рельсы» AVR? Я пытался переделать его самостоятельно (я хочу
поднять простой UDP сервер), но у меня ничего не выходит. Не могли бы вы дать несколько советов, как инициализировать
чип на AVR (я, в частности, использую Atmega32)? Я делаю практически всё то же самое, но не знаю, в чём может крыться
ошибка (может быть, даже неправильно написана функция передачи по SPI). Помогите, пожалуйста, уже почти месяц
бьюсь над этой проблемой. Если что, могу даже скинуть свой код.
Спасибо. Каким бы ни был результат, я обещаю задонатить, так как считаю, что такие полезные ресурсы должны иметь поддержку.Здравствуйте!
А чип отзывается по SPI?Этого я не проверял. Я написал функцию пересылки данных по SPI, и начал писать в регистры W5500 необходимые данные: ip, mac, порт и всё остальное. У меня, к сожалению, самый простой программатор, без отладчика, поэтому отладить код не могу. Наверное, мне стоит попробовать прочитать эти данные, чтобы удостовериться, что они действительно доходят до места назначения, но я даже не уверен, что пересылку организовал правильно. Код привожу ниже:
1234567891011121314void w5500_writeReg(uint8_t op, uint16_t adress, uint8_t data){//select_w5500(); //Функцию выбора SS закомментировалSPDR = (adress>>8); //Пересылаем старший байт адресаwhile(!(SPSR & (1<<SPIF))); //Ждём конца пересылкаSPDR = adress; //Пересылаем младший байт адресаwhile(!(SPSR & (1<<SPIF)));SPDR = op|(RWB_WRITE<<2); //Применяем операцию "или" к опкоду и битом записи, сдвинутым на два битаwhile(!(SPSR & (1<<SPIF)));SPDR = data; //Передаём данныеwhile(!(SPSR & (1<<SPIF)));//deselect_w5500();}Функция чтения точно такая же, за исключением того, что я по-другому формирую опкод (op|(RWB_READ<<2) и в конце не пересылаю данные в SPDR, а возвращаю их (return SPDR). Если можно как-нибудь по-другому проверить работоспособность чипа, то я буду рад об этом узнать.
Проверьте отклик логическим анализатором
В уроке 20, часть 2 есть небольшая ошибка: в нескольких функциях мы запрещаем прерывания, но нигде их не разрешаем…
Доброго времени суток, Narod Stream!Прошу разъяснить для меня простую вещь.
В уроке про мигающий светодиод мы изучали побитовые операции И, ИЛИ, НЕ.Все вроде бы понятно.Но тут напрашивается вопрос, зачем Вы так усложнили код, тем более с обычным мигающим светодиодом?
Ваш код
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>int main(void)
{
DDRD = 0xFF;
PORTD = 0b00000000;
while(1)
{
PORTD |= (1<<(PORTD0));
_delay_ms(500);
PORTD &= ~(1<<(PORTD0));
_delay_ms(500);
}
}
Мой код
#define F_CPU 8000000// указываем частоту в герцах
#include <avr/io.h>
#include <util/delay.h>int main(void)// начало основной программы
{
DDRD = 0xFF;//Все выводы порта D будут сконфигурированы как выходы.
PORTD = 0b00000000;//устанавливаем на всех ножках принудительно ноль(во избежание остаточного мусора в регистрах)
while(1)
{
PORTD = 0b00000001;
_delay_ms(500);//делаем задержку в пол секунды
PORTD = 0b00000000;
_delay_ms(500);//делаем задержку в пол секунды
}
}
Хотя ведь можно было просто установить вот так как у меня и все так же работает.Если я не прав, то поясните в чем конкретно.Буду очень признателен.[b]SergeyVT[/b]
Потому что в данном случае:
PORTD |= (1<<(PORTD0));
затрагивается только ножка на которой висит светодиод, а в вашем случае вы явно задаете состояние всех ног порта, что верно, но в случае если на другие ножки вешать что-то еще, то ваш код все это отключит.Всем привет.
Недавно нашел канал. Давно хотел изучить АВРСТУДИЮ. Спасибо за понятное и полное обьяснение что куда и откуда.
Хотелось бы уточнить будет ли продолжение про AVR???Добрый день!
Пардон за оф-топик, но контактов на сайте не нашёл.
Большая просьба к администратору сайта связаться со мной голосом или по почте, есть интересный разговор:
Спасибо!Решетников Игорь
MES-центр (Россия), Российская рабочая группа MESA International
e-mail: @mescenter.ru">I.Reshetnikov@mescenter.ru
тел.: +7 (916) 671-19-74
Интернет: http://www.mescenter.ru -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.