Обсуждаем контроллеры компании Atmel.
Ответить

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт июн 04, 2020 13:46:17

Yarikkasl, смотрите прошлый ответ. Если в одном байте вам можно сразу посылать несколько бит команд, то можно делать так, как я написал выше. Но всё зависит от протокола - можно ли там сразу в одном байте посылать несколько разных битов команд. Или же как-то пакетно, или вообще по-байтно запрашивать. Всё зависит от отвечающего ус-ва и его протокола.

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт июн 04, 2020 13:49:54

NStorm, понял понял, будут пытаться дальше спасибо!

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб авг 01, 2020 18:53:32

Приветствую!
В статье непонятно чем руководствовался человек чтобы занести данные в регистр в дополнительном коде (-128; +127)
В функции
Код:
void setAgingOffset(int offset)
{
    if (offset < 0) offset += 256;
 
    Wire.beginTransmission(DS3232_I2C_ADDRESS);
    Wire.write(0x10);
    Wire.write(offset);
    Wire.endTransmission();
}

зачем прибавлять 256 если переменная offset (как и все прочие) уже и так представлена в дополнительном коде (проверено в симуляторе Atmel Studio)
От прибавления 256 младший байт (который и пойдет в регистр) битовое представление не меняется. Смысл этого не понятен, хочется разобраться

Если сделать так
Код:
void setAgingOffset(char offset)
{
    Wire.beginTransmission(DS3232_I2C_ADDRESS);
    Wire.write(0x10);
    Wire.write(offset);
    Wire.endTransmission();
}

то результат тот-же (если например отправляем десятичное (-128) offset будет 0x80 или 0b10000000 т.е. что и требуется)

Re: Нескольно простых вопросов о программировании AVR на Си.

Ср авг 19, 2020 23:43:26

Скажите, была ли тема про эффекты анимации на семисегментном LED индикаторе?

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт авг 27, 2020 13:29:48

Здравствуйте! Создал проект опроса матричной клавиатуры, все прекрасно компилируется, но вот не задача, в протеусе программа как то странно себя ведет: зависает нажимаю на кнопки а она реагрирует будто я нажал на другую кнопку, я понимаю если не работает. Вобщем что то я застрял. Про прерывания читал, но реализовал так как смог

Добавлено after 3 hours 44 minutes 4 seconds:
Добавление диода на 56 ноге (pf6) вопрос решило, но если я правильно понимаю то все должно работать и без диодов
Вложения
Proteus.rar
(30.73 KiB) Скачиваний: 242
Новый документ(10).txt
(1.83 KiB) Скачиваний: 241

Re: Нескольно простых вопросов о программировании AVR на Си.

Пт сен 11, 2020 23:47:28

Вопрос:
Нужно чтобы после выполнения процедуры вызваной внешним прерыванием основная программа выполнялась с начала, а не с места где ее прервали. Это можно как-то реализовать? Или только общим сбросом ?

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб сен 12, 2020 02:02:32

Как вариант, включить watchdog, в прерывании уйти в глухой цикл. Но, само решение не ахти.
Когда задаёте подобные вопросы, указывайте, что за устройство, что выполняет программа.
Думаю, что ответ на ваш вопрос - это конечный автомат.

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб сен 12, 2020 09:03:17

Или рестартонуть с 0 в конце прерывания. В зависимости от того что хотите получить в итоге.

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб сен 12, 2020 09:47:39

В стеке исправить адрес возврата ...

Re: Нескольно простых вопросов о программировании AVR на Си.

Сб сен 12, 2020 10:21:26

Весь вопрос в том, что на куа такой метод? Я тоже такой херней страдал поначалу. Вернуться в начало, как у ТС, либо уйти куда мне надо.
Это говорит о том, что человек не имеет понятия, что он хочет сделать. Также не имеет понятия о реакции системы. Организации программ. Это болезнь начинающих. Быстрее, попроще. Хотя на самом деле, времени вагон и маленькая тележка. Как и способов решить вопрос ТС другими методами.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вт окт 20, 2020 16:27:09

Добрый день! Возможно ли что сгорел пин атмеги8? В цикле отправлял с юарта в м/с max485 один символ, около мин 10. После пелетел шум, и иефроглифы ascii. Частота 8МГц. max485 перегревался, стаб lm7805 тоже.

while(1){
USART_Transmit('R');
_delay_us(100);
}

Re: Нескольно простых вопросов о программировании AVR на Си.

Вт окт 20, 2020 16:34:31

Если max485 греется, так может быть она то и сдохла, а не мега8.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вт окт 20, 2020 16:42:53

max485 уже поменял 2 штуки, потом лог анализатором посмотрел с tx шум летел

Re: Нескольно простых вопросов о программировании AVR на Си.

Вт окт 20, 2020 16:48:14

Ну значит только заменой меги8 можно понять где проблема.

Re: Нескольно простых вопросов о программировании AVR на Си.

Вт окт 20, 2020 16:54:36

Ну значит только заменой меги8 можно понять где проблема.

Все разобрался, сопля была возле tx на дорожку 5 вольт, 3 часа ушло на поиски ((

Re: Нескольно простых вопросов о программировании AVR на Си.

Вт окт 20, 2020 17:07:37

Бывает. Есть два типа ошибок. Программный. Аппаратный. Опыт - сын ошибок трудных....

Re: Нескольно простых вопросов о программировании AVR на Си.

Ср янв 27, 2021 23:59:28

Добрый вечер! Пытаюсь постигать как передавать по UART в терминал. Как вывести числа додумался, а вот как чтобы с новой строки каждое шло, нет... или через запятую, но одной строкой... помоги, че т прям буксую)))

Код:
#include <stdio.h>
#include <stdlib.h>
char buffer [16];     //Буфер UART
***
ftoa(adc, 2 ,buffer);  //ftoa(float n,unsigned char decimals,char *str);     
puts(buffer);                     //puts(char *str);
itoa(PERIOD_ON,buffer);   //void itoa(int n,char *str);
puts(buffer);

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт янв 28, 2021 01:24:20

Передавать символы перехода на новую строку и возврата каретки или запятой.

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт янв 28, 2021 08:43:09

Передавать символы перехода на новую строку и возврата каретки или запятой.

:))) Теорию мы оспаривать не будем! Хотя и теория не помешала бы, методы в уроках расписаны так себе. Нам практика нужна, как это делается и чем! Printf() ; - не катит... Код можете привести наглядно показать?

Re: Нескольно простых вопросов о программировании AVR на Си.

Чт янв 28, 2021 08:48:16

Код:
***
ftoa(adc, 2 ,buffer);  //ftoa(float n,unsigned char decimals,char *str);     
puts(buffer);                     //puts(char *str);
puts(", ");
itoa(PERIOD_ON,buffer);   //void itoa(int n,char *str);
puts(buffer);
puts("\n");
Ответить