Нескольно простых вопросов о программировании AVR на Си.
Re: Нескольно простых вопросов о программировании AVR на Си.
Смотря что понимать под "командой". Можно макро команду написать и это будет действительно всего одна строка, типа log x))). Ну ведь красиво же!)
- Реклама
Re: Нескольно простых вопросов о программировании AVR на Си.
ага, создать из авр виртуальный процессор (что-то типа как Transmeta Crusoe), где log x будет настоящей ассемблерной, единичной машинной командой.
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Нескольно простых вопросов о программировании AVR на Си.
Martian, Мы такое сделали, правда на СТМ 
Бейсиковская команда (точнее, функция) LOG(X) реально компилируется в 2 байта - байт команды и байт - номер временного регистра.
Но под капотом виртуальной машины честный флоатный логарифм на сях )))
Бейсиковская команда (точнее, функция) LOG(X) реально компилируется в 2 байта - байт команды и байт - номер временного регистра.
Но под капотом виртуальной машины честный флоатный логарифм на сях )))
Белая и Пушистая
Re: Нескольно простых вопросов о программировании AVR на Си.
ну вот и AQ29 такое же сделал, всё честно 
Добавлено after 1 minute 28 seconds:
Just_Fluffy, это коммерческая разработка? или есть где посмотреть?
Добавлено after 1 minute 28 seconds:
Just_Fluffy, это коммерческая разработка? или есть где посмотреть?
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Нескольно простых вопросов о программировании AVR на Си.
AQ29, ваш целочисленный логарифм на АБ/ассемблере тоже применим. Что б не изобретать велописеды на асме.
Но зочем вы говорите за свой асссемблерный код в теме про язык Си?
GoldenAndy для себя задумал сделать мелкую консольку с несколькими аркадными игрульками... Типа тетриса, зоникса, питончика и т.д.
А я с ним заобщалась по поводу его тестера аккумуляторов... Слово за слово , в телеге разговорились.
И родилась мысль (с моей подачи) - не зашивать игры в МК, а сделать что то типа виртуальной машинки , в которую будут компилиться программы на ЯВУ. Выбор пал на диалект бейсика.
Сделали вдвоем. Задачка была интересная. Я там больше алгоритмами участвовала. В частности, работа с кучей и уборка мусора - один из моих алгоритмов там. Питона я под готовое изделие написала...
Ссылки не знаю, можно тут на сторонние ресурсы постить или нет, но подпись у Энди ведет в его блог - там можно почитать.
Но зочем вы говорите за свой асссемблерный код в теме про язык Си?
Да какое там коммерческая....Martian писал(а):или есть где посмотреть?
GoldenAndy для себя задумал сделать мелкую консольку с несколькими аркадными игрульками... Типа тетриса, зоникса, питончика и т.д.
А я с ним заобщалась по поводу его тестера аккумуляторов... Слово за слово , в телеге разговорились.
И родилась мысль (с моей подачи) - не зашивать игры в МК, а сделать что то типа виртуальной машинки , в которую будут компилиться программы на ЯВУ. Выбор пал на диалект бейсика.
Сделали вдвоем. Задачка была интересная. Я там больше алгоритмами участвовала. В частности, работа с кучей и уборка мусора - один из моих алгоритмов там. Питона я под готовое изделие написала...
Ссылки не знаю, можно тут на сторонние ресурсы постить или нет, но подпись у Энди ведет в его блог - там можно почитать.
Белая и Пушистая
- Реклама
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4398588#p4398588"]Но зочем вы говорите...[/uquote]
Это из серии "грабить корованы"?)
Это из серии "грабить корованы"?)
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Нескольно простых вопросов о программировании AVR на Си.
OKF, да нет, это из более древнего мема "зочем ви т'равите...."
Белая и Пушистая
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4398588#p4398588"]Ссылки не знаю, можно тут на сторонние ресурсы постить или нет[/uquote]
хм... пункт 2.9 запрещает рекламу в любом виде, но, полагаю, вряд ли нас уличат в сговоре так долго и сложно подводить тему к ссылке на разработку )
хм... пункт 2.9 запрещает рекламу в любом виде, но, полагаю, вряд ли нас уличат в сговоре так долго и сложно подводить тему к ссылке на разработку )
- Just_Fluffy
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Ср июн 29, 2022 16:25:45
Re: Нескольно простых вопросов о программировании AVR на Си.
Ну ок.Martian писал(а):но, полагаю, вряд ли нас уличат в сговоре так долго и сложно подводить тему к ссылке на разработку
Тогда вот. Смотреть записи снизу вверх.
Белая и Пушистая
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="Just_Fluffy",url="/forum/viewtopic.php?p=4398670#p4398670"]OKF, да нет, это из более древнего мема "зочем ви т'равите...."[/uquote]
ОК, вижу что у нас разные весовые категории).
ОК, вижу что у нас разные весовые категории).
Re: Нескольно простых вопросов о программировании AVR на Си.
Добрый день. Попалась вот такая запись в операции установки бит.
Почему здесь тройка, и что она значит. Сколько ни смотрел разные руководства по битовым операциям, везде тут единица без исключений.
Компилируется и работает нормально.
Код: Выделить всё
UCSR0C=(3<<UCSZ00); Компилируется и работает нормально.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1906
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
Устанавливают 2 бита сразу.
Замените частях, в какой системе счисления хотите, напр. в двоичном.
3 -> 0b00000011
UCSZ00 (atmega328?, стр. 193) -> 1
UCSR0C = (3 << UCSZ00);
UCSR0C = (0b00000011 << 1);
UCSR0C = 0b00000110;
Смотрим документацию (стр. 193, 194):
The UCSZn1:0 bits combined with the UCSZn2 bit in UCSRnB sets the number of data bits (Character SiZe) in a frame the Receiver and Transmitter use.
(UCSZn2 = 0?), UCSZn1 = 1, UCSZn0 = 1 -> Character Size: 8-bit
Замените частях, в какой системе счисления хотите, напр. в двоичном.
3 -> 0b00000011
UCSZ00 (atmega328?, стр. 193) -> 1
UCSR0C = (3 << UCSZ00);
UCSR0C = (0b00000011 << 1);
UCSR0C = 0b00000110;
Смотрим документацию (стр. 193, 194):
The UCSZn1:0 bits combined with the UCSZn2 bit in UCSRnB sets the number of data bits (Character SiZe) in a frame the Receiver and Transmitter use.
(UCSZn2 = 0?), UCSZn1 = 1, UCSZn0 = 1 -> Character Size: 8-bit
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="Shuspano",url="/forum/viewtopic.php?p=4425543#p4425543"]Добрый день. Попалась вот такая запись в операции установки бит.
Почему здесь тройка, и что она значит. Сколько ни смотрел разные руководства по битовым операциям, везде тут единица без исключений.
Компилируется и работает нормально.[/uquote]
нормальные люди делают так:или так (что то же самое, но длиннее):, а ненормальные двигают сразу 2 бита в позицию UCSZ00, как у вас
Код: Выделить всё
UCSR0C=(3<<UCSZ00); Компилируется и работает нормально.[/uquote]
нормальные люди делают так:
Код: Выделить всё
UCSR0C=_BV(UСSZ00) | _BV(UCSZ01);Код: Выделить всё
UCSR0C=(1<<UСSZ00) | (1<<UCSZ01);если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Нескольно простых вопросов о программировании AVR на Си.
а самые нормальные делают так:
Код: Выделить всё
...
#define USR_DataSize_8_b 0x03
...
UCSR0C |= USR_DataSize_8_b;
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1906
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
Тоже нормальные люди это те, кто также написали документацию ATmega48A/PA/88A/PA/168A/PA/328/P
.
стр. 185, Assembly Code Example:
стр. 185, C Code Example:
стр. 185, Assembly Code Example:
Код: Выделить всё
USART_Init:
; Set baud rate
out UBRRnH, r17
out UBRRnL, r16
; Enable receiver and transmitter
ldi r16, (1<<RXENn)|(1<<TXENn)
out UCSRnB,r16
; Set frame format: 8data, 2stop bit
ldi r16, (1<<USBSn)|(3<<UCSZn0)
out UCSRnC,r16
retКод: Выделить всё
Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 2stop bit */
UCSR0C = (1<<USBS0)|(3<<UCSZ00);Re: Нескольно простых вопросов о программировании AVR на Си.
ну, тут они хотя бы все необходимые поля взяли, а не присвоили нужные всему регистру
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18546
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Нескольно простых вопросов о программировании AVR на Си.
Бритва Оккама... Если, кроме нужных битов, в регистре не должно ничего быть, то...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: Нескольно простых вопросов о программировании AVR на Си.
Ну, тут субъективно становится. Лично я за удобочитаемость и установку только того, что устанавливается, то есть, либо в твой вариант добавлю |, либо так же оставлю, если цель сбросить остальные поля. Но смещать тройку названием поля размером один бит... это в любом случае как-то странно выглядит.
Re: Нескольно простых вопросов о программировании AVR на Си.
[uquote="Martian",url="/forum/viewtopic.php?p=4425966#p4425966"]Лично я за удобочитаемость...[/uquote] Стараюсь указывать все используемые биты, типа, REG = 1<<bit1 | 0<<bit0; и тогда явно видно какие биты в каком состоянии.
Re: Нескольно простых вопросов о программировании AVR на Си.
тоже стараюсь все, но когда не лень, даю им нормальные названия, чтобы в итоге получалось UART = Speed9600 | Bit8 | WithParity. Но в последнее время лень, и тогда вариант ARV


