Например TDA7294

Форум РадиоКот • Просмотр темы - AVR studio в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 15:00:00

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3134 ]     ... , , , 136, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 11:05:15 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
значит так, показывайте всё, что есть в удобном для просмотра на форуме формате: схему протеуса, исходники в том виде, как тестируете в протеусе, настройки МК в протеусе и настройки проекта в Студии или чем вы там собираете. без этого дальнейшее гадание на кофейной гуще считаю пустой тратой времени

Добавлено after 1 minute 57 seconds:
хотя нет, не выкладывайте :) 32 Гц чем вас не устраивает, вы сколько хотите? вы учли, что у вас OC1A дергается в 2 раза реже, ведь при каждом совпадении он МЕНЯЕТ своё состояние :)))

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 13:00:47 
Открыл глаза

Зарегистрирован: Вт май 05, 2009 17:32:50
Сообщений: 52
Рейтинг сообщения: 0
С кварцем разобрался Это что то с математикой в протеусе.
я уже и 8 версию поставил все ровно проблема не ушла
По расчетам должно быть так 16000000/1024/250 = 62,5Гц
а фактически вот так 16000000/1024/124 = 62,5Гц метод подбора сработал

Цитата:
32 Гц чем вас не устраивает

В дальнейшем на каждое нажатие кнопки частота будит меняться на 62,5Гц в описании я выкладывал
За подсказку огромное спасибо по настройки кварца.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 13:53:13 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
bango писал(а):
По расчетам должно быть так 16000000/1024/250 = 62,5Гц
а фактически вот так 16000000/1024/124 = 62,5Гц метод подбора сработал
еще раз повторяю:
вы настроили 16000000/1024/250=62,5 Гц. и именно с этой частотой у вас возникают прерывания (или происходит совпадение с OCR1A). именно в этот момент происходит изменение уровня на пине на противоположный, т.е. фронты сигнала следут с частотой 62,5 Гц, а период этого сигнала, естественно, в 2 раза ниже, т.к. в периоде 2 фронта. именно поэтому вам пришлось в 2 раза уменьшить OCR1A, чтобы полчить ваши 62,5 Гц

никакого подбора, просто внимательно считать надо. и когда я писал "32 чем не устраивают", я намекал на то, что вы получили ровно то, что настроили :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 14:27:48 
Открыл глаза

Зарегистрирован: Вт май 05, 2009 17:32:50
Сообщений: 52
Рейтинг сообщения: 0
в описании написано вот так (Результирующий сигнал имеет частоту 62.5 Гц)
_
| |_| Я в этом пределе считал клетки и их умножал на время.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 14:39:08 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я вас не понимаю. чтобы получить меандр 62,5 Гц вашим методом надо 16 МГц при предделлителе 1024 дополнительно при помощи OCR1A поделить на 125. это не гадание, а расчет.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Чт мар 29, 2018 15:27:09 
Открыл глаза

Зарегистрирован: Вт май 05, 2009 17:32:50
Сообщений: 52
Рейтинг сообщения: 0
Мне самому очень трудно объяснить, а на пальцах показать не получается (самое главное что частота нужная получилась) Я как ЗАМАТЕРЕЮ в программировании вот тогда я всем все объясню ЭТО шутка.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Вт июл 03, 2018 13:42:23 
Первый раз сказал Мяу!

Зарегистрирован: Вс окт 01, 2017 08:40:23
Сообщений: 30
Рейтинг сообщения: 0
Товарищи! Подскажите... Понемногу разбираюсь с написанием прог для МК, а конкретно для AT2313 добрался до работы с экранчиком 16x2 по I2C
Почитав разных материалов понял что без доп.библиотеки будет тяжело, нашел на просторах инета http://davidegironi.blogspot.com/2013/0 ... based.html

в попытках приспособить данную библиотеку и код примера в atmel studio 7
столкнулся с ошибками вида

error: undefined reference to `uart_init(unsigned int)'
error: undefined reference to `uart_puts(char const*)'
error: undefined reference to `lcd_init(unsigned char)'
error: undefined reference to `lcd_home()'
error: undefined reference to `lcd_led(unsigned char)'
и т.д.

я так понимаю типа не определены процедуры/функции с этими именами: uart_init, uart_puts и т.д.
но по факту они определены в файле uart.h, файл этот подключен. В солюшн эксплорере все эти файлы обозначенные в #include добавил по ПКМ->Add existing item. Что ему проклятому нужно?

main.cpp
Спойлер
Код:
#define F_CPU 16000000UL // 16 МГц
#include <avr/io.h>
#include <util/delay.h>
// I2C Bus functions
#include <stdio.h>
#include <stdlib.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include "lcdpcf8574/lcdpcf8574.h"
#define UART_BAUD_RATE 2400
#include "uart/uart.h"

#define PIN(x) (*(&x - 2))    /* address of input register of port x */

int main(void)
{

   //init uart
   uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );

   sei();
   
   uart_puts("starting...");

   //init lcd
   lcd_init(LCD_DISP_ON_BLINK);

   //lcd go home
   lcd_home();

   uint8_t led = 0;
        lcd_led(led); //set led

   while(1)    {
            lcd_led(led); //set led
            led = !led; //invert led for next loop

            //test loop
            int i = 0;
            int line = 0;
            for(i=0; i<10; i++) {
               char buf[10];
               itoa(i, buf, 10);
               lcd_gotoxy(1, line);
               lcd_puts("i= ");
               itoa(i, buf, 10);
               lcd_gotoxy(4, line);
               lcd_puts(buf);
               line++;
               line %= 2;
               uart_puts(buf);
               uart_puts("\r\n");
               _delay_ms(100);

         } // end_for
      } // end_while(1)
} // end_main


uart.h
Спойлер
Код:
#ifndef UART_H
#define UART_H
/************************************************************************
Title:    Interrupt UART library with receive/transmit circular buffers
Author:   Peter Fleury <pfleury@gmx.ch>   http://jump.to/fleury
File:     $Id: uart.h,v 1.8.2.1 2007/07/01 11:14:38 peter Exp $
Software: AVR-GCC 4.1, AVR Libc 1.4
Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz
License:  GNU General Public License
Usage:    see Doxygen manual

LICENSE:
    Copyright (C) 2006 Peter Fleury

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
   
************************************************************************/

/**
 *  @defgroup pfleury_uart UART Library
 *  @code #include <uart.h> @endcode
 *
 *  @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers.
 *
 *  This library can be used to transmit and receive data through the built in UART.
 *
 *  An interrupt is generated when the UART has finished transmitting or
 *  receiving a byte. The interrupt handling routines use circular buffers
 *  for buffering received and transmitted data.
 *
 *  The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define
 *  the size of the circular buffers in bytes. Note that these constants must be a power of 2.
 *  You may need to adapt this constants to your target and your application by adding
 *  CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile.
 *
 *  @note Based on Atmel Application Note AVR306
 *  @author Peter Fleury pfleury@gmx.ch  http://jump.to/fleury
 */
 
/**@{*/


#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304
#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !"
#endif


/*
** constants and macros
*/

/** @brief  UART Baudrate Expression
 *  @param  xtalcpu  system clock in Mhz, e.g. 4000000L for 4Mhz         
 *  @param  baudrate baudrate in bps, e.g. 1200, 2400, 9600     
 */
#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1)

/** @brief  UART Baudrate Expression for ATmega double speed mode
 *  @param  xtalcpu  system clock in Mhz, e.g. 4000000L for 4Mhz           
 *  @param  baudrate baudrate in bps, e.g. 1200, 2400, 9600     
 */
#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000)


/** Size of the circular receive buffer, must be power of 2 */
#ifndef UART_RX_BUFFER_SIZE
#define UART_RX_BUFFER_SIZE 32
#endif
/** Size of the circular transmit buffer, must be power of 2 */
#ifndef UART_TX_BUFFER_SIZE
#define UART_TX_BUFFER_SIZE 32
#endif

/* test if the size of the circular buffers fits into SRAM */
#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) )
#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM"
#endif

/*
** high byte error return code of uart_getc()
*/
#define UART_FRAME_ERROR      0x0800              /* Framing Error by UART       */
#define UART_OVERRUN_ERROR    0x0400              /* Overrun condition by UART   */
#define UART_BUFFER_OVERFLOW  0x0200              /* receive ringbuffer overflow */
#define UART_NO_DATA          0x0100              /* no receive data available   */


/*
** function prototypes
*/

/**
   @brief   Initialize UART and set baudrate
   @param   baudrate Specify baudrate using macro UART_BAUD_SELECT()
   @return  none
*/
extern void uart_init(unsigned int baudrate);


/**
 *  @brief   Get received byte from ringbuffer
 *
 * Returns in the lower byte the received character and in the
 * higher byte the last receive error.
 * UART_NO_DATA is returned when no data is available.
 *
 *  @param   void
 *  @return  lower byte:  received byte from ringbuffer
 *  @return  higher byte: last receive status
 *           - \b 0 successfully received data from UART
 *           - \b UART_NO_DATA           
 *             <br>no receive data available
 *           - \b UART_BUFFER_OVERFLOW   
 *             <br>Receive ringbuffer overflow.
 *             We are not reading the receive buffer fast enough,
 *             one or more received character have been dropped
 *           - \b UART_OVERRUN_ERROR     
 *             <br>Overrun condition by UART.
 *             A character already present in the UART UDR register was
 *             not read by the interrupt handler before the next character arrived,
 *             one or more received characters have been dropped.
 *           - \b UART_FRAME_ERROR       
 *             <br>Framing Error by UART
 */
extern unsigned int uart_getc(void);


/**
 *  @brief   Put byte to ringbuffer for transmitting via UART
 *  @param   data byte to be transmitted
 *  @return  none
 */
extern void uart_putc(unsigned char data);


/**
 *  @brief   Put string to ringbuffer for transmitting via UART
 *
 *  The string is buffered by the uart library in a circular buffer
 *  and one character at a time is transmitted to the UART using interrupts.
 *  Blocks if it can not write the whole string into the circular buffer.
 *
 *  @param   s string to be transmitted
 *  @return  none
 */
extern void uart_puts(const char *s );


/**
 * @brief    Put string from program memory to ringbuffer for transmitting via UART.
 *
 * The string is buffered by the uart library in a circular buffer
 * and one character at a time is transmitted to the UART using interrupts.
 * Blocks if it can not write the whole string into the circular buffer.
 *
 * @param    s program memory string to be transmitted
 * @return   none
 * @see      uart_puts_P
 */
extern void uart_puts_p(const char *s );

/**
 * @brief    Macro to automatically put a string constant into program memory
 */
#define uart_puts_P(__s)       uart_puts_p(PSTR(__s))



/** @brief  Initialize USART1 (only available on selected ATmegas) @see uart_init */
extern void uart1_init(unsigned int baudrate);
/** @brief  Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */
extern unsigned int uart1_getc(void);
/** @brief  Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */
extern void uart1_putc(unsigned char data);
/** @brief  Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */
extern void uart1_puts(const char *s );
/** @brief  Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */
extern void uart1_puts_p(const char *s );
/** @brief  Macro to automatically put a string constant into program memory */
#define uart1_puts_P(__s)       uart1_puts_p(PSTR(__s))

/**@}*/

#endif // UART_H


Ваще есть ещё какие-нибудь IDE с дебагером для написания программ на Atmel-овских МК, Atmel-studio как-то излишне заморочена на мой взгляд, инсталятор ставит тьму всякой-всячины.


Последний раз редактировалось karaseg Вт июл 03, 2018 20:13:55, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Вт июл 03, 2018 17:12:30 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Вообще-то такие длинные тексты лучше брать под спойлер (это все появляется, если нажать кнопик "Редактор").

Ну, и по делу - нужно сложить ту библиотеку в папку проекта, прямо с ее папками, а потом включать в проект посредством ПКМ не *.h, а *.c. Нужные *.h компилятор найдет сам, там же пути прописаны - #include "uart/uart.h" означает, что компилятор должен взять uart.h из подпапки uart в папке проекта. А вот *.с компилятор сам не найдет, их надо включить в проект.

Цитата:
Atmel-studio как-то излишне заморочена на мой взгляд, инсталятор ставит тьму всякой-всячины.
Народ, если нет особых требований, типа поддержки ATXmega, обычно, пользуется АВР Студией 4.19, она, пожалуй, самая стабильная и хорошо работающая. Более поздние Студии, да, излишне тяжелые и тормозные, особенно на машинках постарше. А Студия 4.19 летает на любых машинках, начиная с 3-го Пентиума.

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Ср июл 04, 2018 11:07:30 
Первый раз сказал Мяу!

Зарегистрирован: Вс окт 01, 2017 08:40:23
Сообщений: 30
Рейтинг сообщения: 0
В AVR Studio 4, в Tools-Customise-Tools хотел добавить пунктик вызов avrdude чтобы вливать прошивку в МК через программатор USBASP
в Atmel Studio 7 была возможность указать "макросы" вместо пути и имени файла $(TargetDir)$(TargetName)
в поле arguments: "-c usbasp -p t2313 -v -U flash:w:$(TargetDir)$(TargetName).hex:i"
В 4 версии что-то не пойму, нельзя имя "прошивки" передавать во внешнюю программу?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Ср июл 04, 2018 13:13:58 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Цитата:
В AVR Studio 4, в Tools-Customise-Tools хотел добавить пунктик вызов avrdude чтобы вливать прошивку в МК через программатор USBASP
А зачем? ИМХО, лучший вариант для USBASP - прорамма AVRDUDEPROG 3.3. Первый раз собрал проект, запустил AVRDUDEPROG, нашел и открыл в ней хекс-файл, записал, попробовал, свернул AVRDUDEPROG в трей, и все, правь проект дальше. Сделал новую сборку, одним кликом поднял из трея AVRDUDEPROG, вторым прошил новый вариант, и вперед!..

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Ср июл 04, 2018 15:22:58 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пн ноя 07, 2016 12:14:14
Сообщений: 134
Рейтинг сообщения: 0
Здравствуйте
Как в памяти программ (FLASH) хранить массив указателей?
на
Код:
const unsigned char *Main_strings[13]PROGMEM={strng1,strng2,strng3,strng4};


ругается :"variable 'Main_strings' must be const in order to be put into read-only section by means of '__attribute__((progmem))'"

кстати, строки strng1,strng2,strng3,strng4 тоже лежат во флеше

Добавлено after 1 hour 3 minutes 12 seconds:
Проблему решила

строки во флеше (.c) у меня объявляются так:
Код:
const unsigned char strng1[]PROGMEM ={"строка1\0"};                           
const unsigned char strng2[]PROGMEM ={"строка2\0"};                  
const unsigned char strng3[]PROGMEM ={"строка3\0"};            
const unsigned char strng4[]PROGMEM ={"строка4\0"};

указатель на эти строки в (.c)
Код:
const unsigned char * const Main_strings[]PROGMEM={strng1,strng2,strng3,strng4};


в (.h) файле они объявляются так :
Код:
extern const unsigned char strng1[];
extern const unsigned char strng2[];
extern const unsigned char strng3[];
extern const unsigned char strng4[];
extern const unsigned char * const Main_Menu_strings[];



а обращаться к ним в программе можно так:

Код:
for(uint8_t i=0;i<13;i++){
strings[i]=(const unsigned char * const)pgm_read_byte(&(Main_strings[i]));
}


Ну а вдруг кому поможет

_________________
Я конечно все понимаю, но этого я не понимаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Ср июл 04, 2018 17:52:29 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Я делал проще.

Код:
char stnames[][16] PROGMEM =
{
        "              ",
        "  Тенгри FM   ",       // 100.50
        "  Радио Текс  ",       // 101.20
        "Русское радио ",       // 102.80
        "  Love Radio  ",       // 104.80
        "   Радио NS   ",       // 105.60
        "  Авторадио   ",       // 106.30
        "  Что-то FM   ",       // 106.70
        "  Наше радио  ",       // 107.00
        "   Дала FM    "        // 107.70

};


В качестве указателей на строку используются stnames[i]. И, если не врет мой склероз, фиксированная длина строки необязательна. И писать "\0" после текста строки тоже необязательно, Си сам дополняет двоичным нулём строку, записанную в кавычках.

Да, а с кнопками разобралась? (в соседней теме)

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Ср июл 04, 2018 21:59:13 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Я делал проще.

Вы сделали не правильно.
Предыдущему оратору: судя по вашим ошибкам, вы используете свежую версию avr-gcc, поэтому попробуйте квалификатор __flash вместо PROGMEM, только писать его надо сразу после или перед каждым const.
Если скомпилируется, то можно будет работать с указателями на строки точно так же, как с указателями на ОЗУ, т.е. pgm_read_XXX не будут нужны. Это невероятно удобнее.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт июл 06, 2018 03:33:02 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Цитата:
Вы сделали не правильно.
Как сказать? Я решал ту же самую задачу: получить набор строк для выдачи на LCD-экранчик, но для ее решения применил не кучку отдельных строк с массивом указателей на них, а обыкновенный двумерный массив. Недостаток этого решения - фиксированная (и максимальная) длина строки, т.е. перерасход памяти на пробелы, дополняющие более короткие строки. Впрочем, не факт, что это недостаток - при изменении какой-либо строки на экране не надо отдельно стирать предыдущую - новая строка точно перекрывает старую. Для этого же служит и первая (нулевая) пробельная строка, но это актуально только для моего приложения.

Да, про необязательность одинаковой длины строк я ошибся, мой склероз таки соврал. :(

Добавлено after 43 minutes 15 seconds:
И вообще, здесь это слегка оффтопик, а у меня возник вопрос по теме.

Цитата:
вы используете свежую версию avr-gcc
Как я понимаю, эта версия входит в свежую версию Студии, да? А нельзя ли как-нибудь прикрутить ее к Студии 4.19?

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт июл 06, 2018 06:51:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
afz писал(а):
Как сказать
почитайте о том, как avr-gcc распределяет память при инициализации строковых "переменных", чтобы понять, что я имел ввиду под "неправильно": Storing and Retrieving Strings in the Program Space
afz писал(а):
А нельзя ли как-нибудь прикрутить ее к Студии 4.19?
можно, путем тупого переписывания папки со "старым" тулчейном файлами из "нового". Если хочется сохранить и работоспособность старого - тогда при помощи компиляции "внешним" makefile.

я собираю проекты в Eclipse, и у меня шесть версий avr-gcc (хотя пользуюсь старыми только для отладки в протеусе, т.к. новые генерируют отладочную инфу так, что протеус не понимает нифига).

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт июл 06, 2018 08:17:37 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Как я понимаю, эта версия входит в свежую версию Студии, да? А нельзя ли как-нибудь прикрутить ее к Студии 4.19?

Можно так - убрать птичку и указать путь к toolchain:
Изображение
В качестве продвинутого редактора можно использовать Netbeans - хорошо импортирует проект созданный AVR Studio 4


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт июл 06, 2018 08:36:44 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
oleg110592 писал(а):
и указать путь к toolchain
не всегда помогает. я столкнулся с тем, что в последних версиях avr-gcc то ли папки как-то поменяли, то ли их содержимое стало другим, но просто указание СТАРОЙ студии пути к НОВОМУ тулчейну может привести к тому, что некоторые утилиты (типа avr-size или make) не смогут вызываться. не утверждаю, что так происходит всегда, но у меня так было...

мой вариант (с переписыванием папок) хотя бы оставляет доступными старые утилиты.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт июл 06, 2018 10:57:36 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
да avr-size AVR Studio не включает в свой makefile, при использовании внешнего toolchain. Но компилируется нормально. В новых GCC исключили опцию -C для avr-size. Используют avr-objdump.exe - опций много, он поинтереснее выдает информацию (GCC AVR 8.1):
Изображение
или так:
avr-objdump -s -j .note.gnu.avr.deviceinfo avr.elf
Contents of section .note.gnu.avr.deviceinfo:
Код:
 0000 04000000 2b000000 01000000 41565200  ....+.......AVR.
 0010 00000000 00400000 60000000 00040000  .....@..`.......
 0020 00000000 00020000 08000000 01000000  ................
 0030 0061746d 65676131 36000000           .atmega16...


http://ccrma.stanford.edu/planetccrma/m ... ump.1.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт июл 06, 2018 12:18:02 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
ARV писал(а):
как avr-gcc распределяет память при инициализации строковых "переменных"
Ну посмотрел. Это же опять про массив указателей на кучку отдельных строк, и то, и другое в PROGMEM. Я же предложил банальный массив строк. И то, и другое средство позволяют получить доступ к строке по ее номеру - собственно, ради этого все и затевалось. Только массив указателей на отдельные строки позволяет делать сами строки различной произвольной длины, а массив строк должен набираться из строк одинаковой длины, поскольку адресация в него ведется банальным умножением первого индекса (номера строки) на длину одной строки (это я подглядел в дизасме). Да, время выполнения этого действия больше, чем достать указатель из таблицы, но кого это волнует? А про то, что менять строки на экране проще, поскольку новая строка точно перекрывает старую, я уже написал.

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт июл 13, 2018 19:38:45 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Доброго времени суток. Как в Atmel Studio 7 задать частоту контроллера в опциях проекта, чтобы не задавать ее вручную в хидерах. В AVR Studio 4 это было легко и интуитивно, тут же просто черт ногу сломит :dont_know:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3134 ]     ... , , , 136, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Demiurg и гости: 23


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y