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

Обсуждаем контроллеры компании Atmel.
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

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

Сообщение NStorm »

Yarikkasl, смотрите прошлый ответ. Если в одном байте вам можно сразу посылать несколько бит команд, то можно делать так, как я написал выше. Но всё зависит от протокола - можно ли там сразу в одном байте посылать несколько разных битов команд. Или же как-то пакетно, или вообще по-байтно запрашивать. Всё зависит от отвечающего ус-ва и его протокола.
Yarikkasl
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт май 23, 2019 07:59:45
Откуда: Екатеринбург

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

Сообщение Yarikkasl »

NStorm, понял понял, будут пытаться дальше спасибо!
Compressor
Открыл глаза
Сообщения: 41
Зарегистрирован: Пт май 29, 2009 09:38:45

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

Сообщение Compressor »

Приветствую!
В статье непонятно чем руководствовался человек чтобы занести данные в регистр в дополнительном коде (-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 т.е. что и требуется)
Аватара пользователя
ChipCard
Открыл глаза
Сообщения: 42
Зарегистрирован: Чт июл 23, 2020 20:59:01
Откуда: СевКавТВ

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

Сообщение ChipCard »

Скажите, была ли тема про эффекты анимации на семисегментном LED индикаторе?
Yarikkasl
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт май 23, 2019 07:59:45
Откуда: Екатеринбург

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

Сообщение Yarikkasl »

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

Добавлено after 3 hours 44 minutes 4 seconds:
Добавление диода на 56 ноге (pf6) вопрос решило, но если я правильно понимаю то все должно работать и без диодов
Вложения
Proteus.rar
(30.73 КБ) 265 скачиваний
Новый документ(10).txt
(1.83 КБ) 348 скачиваний
prw07
Мучитель микросхем
Сообщения: 403
Зарегистрирован: Ср янв 26, 2011 17:00:30

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

Сообщение prw07 »

Вопрос:
Нужно чтобы после выполнения процедуры вызваной внешним прерыванием основная программа выполнялась с начала, а не с места где ее прервали. Это можно как-то реализовать? Или только общим сбросом ?
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Как вариант, включить watchdog, в прерывании уйти в глухой цикл. Но, само решение не ахти.
Когда задаёте подобные вопросы, указывайте, что за устройство, что выполняет программа.
Думаю, что ответ на ваш вопрос - это конечный автомат.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

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

Сообщение OKF »

Или рестартонуть с 0 в конце прерывания. В зависимости от того что хотите получить в итоге.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

В стеке исправить адрес возврата ...
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Весь вопрос в том, что на куа такой метод? Я тоже такой херней страдал поначалу. Вернуться в начало, как у ТС, либо уйти куда мне надо.
Это говорит о том, что человек не имеет понятия, что он хочет сделать. Также не имеет понятия о реакции системы. Организации программ. Это болезнь начинающих. Быстрее, попроще. Хотя на самом деле, времени вагон и маленькая тележка. Как и способов решить вопрос ТС другими методами.
Али777
Прорезались зубы
Сообщения: 214
Зарегистрирован: Чт май 23, 2013 18:31:58

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

Сообщение Али777 »

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

while(1){
USART_Transmit('R');
_delay_us(100);
}
Аватара пользователя
dibor
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Чт авг 27, 2020 13:15:49

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

Сообщение dibor »

Если max485 греется, так может быть она то и сдохла, а не мега8.
Али777
Прорезались зубы
Сообщения: 214
Зарегистрирован: Чт май 23, 2013 18:31:58

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

Сообщение Али777 »

max485 уже поменял 2 штуки, потом лог анализатором посмотрел с tx шум летел
Аватара пользователя
dibor
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Чт авг 27, 2020 13:15:49

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

Сообщение dibor »

Ну значит только заменой меги8 можно понять где проблема.
Али777
Прорезались зубы
Сообщения: 214
Зарегистрирован: Чт май 23, 2013 18:31:58

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

Сообщение Али777 »

[uquote="dibor",url="/forum/viewtopic.php?p=3909736#p3909736"]Ну значит только заменой меги8 можно понять где проблема.[/uquote]
Все разобрался, сопля была возле tx на дорожку 5 вольт, 3 часа ушло на поиски ((
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

Бывает. Есть два типа ошибок. Программный. Аппаратный. Опыт - сын ошибок трудных....
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

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

Сообщение neid »

Добрый вечер! Пытаюсь постигать как передавать по 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);
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Передавать символы перехода на новую строку и возврата каретки или запятой.
neid
Прорезались зубы
Сообщения: 228
Зарегистрирован: Пн окт 04, 2010 11:55:41

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

Сообщение neid »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3968846#p3968846"]Передавать символы перехода на новую строку и возврата каретки или запятой.[/uquote]
:))) Теорию мы оспаривать не будем! Хотя и теория не помешала бы, методы в уроках расписаны так себе. Нам практика нужна, как это делается и чем! Printf() ; - не катит... Код можете привести наглядно показать?
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

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

Сообщение NStorm »

Код: Выделить всё

***
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");
Ответить

Вернуться в «AVR»