Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 07.11.2019, 10:51   #1
Aleksey_
Member
 
Регистрация: 12.12.2012
Адрес: Пермь, Чайковский
Возраст: 40
Сообщений: 43
Вес репутации: 100/27
Aleksey_ will become famous soon enoughAleksey_ will become famous soon enough
По умолчанию Как объявить через #define порты

Всем привет! У меня такая проблема, писал программку в MikroC для отладочной платы EasyAVR5A, но там вышел за ограничение кода. Перенёс код в Atmel Studio, но здесь у меня выскочили ошибки о необъявленных портах
Код:
'DDRC' undeclared (first use in this function)
Просмотрел подключенные файлы, у меня подключен #include <avr/iom2560.h>, в котором объявляются только фьюзы. Начал искать поиском файл объявления всех регистров что-нибудь типа ATMega2560.h, и вот что есть... Есть например файл m2560def.inc в котором есть такое объявление:
.equ DDRC = 0x07
что я понимаю не то. Подключил его, скопировал этот файл в папку с проектом, и выдало кучу ошибок.

Кто подскажет, как нужно правильно объявить нужные мне порты? У меня они объявлены как:
Код:
#define DDR_BUTT DDRD
#define PORT_BUTT PORTD
#define PIN_BUTT PIND

#define DDR_LCD DDRC
#define PORT_LCD PORTC
#define PIN_LCD PINC
Прилагаю архив проекта.
Вложения
Тип файла: rar A4899.rar (31.6 Кб, 0 просмотров)
Aleksey_ вне форума   Ответить с цитированием
Старый 07.11.2019, 14:16   #2
Рак
Senior Member
 
Регистрация: 02.04.2008
Адрес: Кременчуг
Возраст: 33
Сообщений: 1,381
Вес репутации: 2524/81
Рак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond reputeРак has a reputation beyond repute
По умолчанию Re: Как объявить через #define порты

Цитата:
Сообщение от Aleksey_ Посмотреть сообщение
Всем привет! У меня такая проблема, писал программку в MikroC для отладочной платы EasyAVR5A, но там вышел за ограничение кода. Перенёс код в Atmel Studio, но здесь у меня выскочили ошибки о необъявленных портах
Код:
'DDRC' undeclared (first use in this function)
Просмотрел подключенные файлы, у меня подключен #include <avr/iom2560.h>, в котором объявляются только фьюзы. Начал искать поиском файл объявления всех регистров что-нибудь типа ATMega2560.h, и вот что есть... Есть например файл m2560def.inc в котором есть такое объявление:
.equ DDRC = 0x07
что я понимаю не то. Подключил его, скопировал этот файл в папку с проектом, и выдало кучу ошибок.

Кто подскажет, как нужно правильно объявить нужные мне порты? У меня они объявлены как:
Код:
#define DDR_BUTT DDRD
#define PORT_BUTT PORTD
#define PIN_BUTT PIND

#define DDR_LCD DDRC
#define PORT_LCD PORTC
#define PIN_LCD PINC
Прилагаю архив проекта.
Нужно сначала проинклудить файл, который объясняет, что такое эти самые DDRD, PORTD и прочее.
Рак вне форума   Ответить с цитированием
Старый 08.11.2019, 21:16   #3
Aleksey_
Member
 
Регистрация: 12.12.2012
Адрес: Пермь, Чайковский
Возраст: 40
Сообщений: 43
Вес репутации: 100/27
Aleksey_ will become famous soon enoughAleksey_ will become famous soon enough
По умолчанию Re: Как объявить через #define порты

Моя проблема решилась для меня вчера, просмотрел свои прошлые программки на Atmega16, там я тоже мучался с инклюдами, так вот когда я по прошлым примерам вставил строку
Код:
#include <avr/io.h>
в хедер файл с описаниями всех моих подключаемых переменных, тогда всё заработало(появились другие ошибки, но это другая история). Так вот у меня следующий вопрос - почему я главном файле A4899.c инклюдю
Код:
#include <avr/io.h>
, потом подключаю к нему
Код:
#include "Main_Var.h"
и в подключаемом файле я снова должен написать строку
Код:
#include <avr/io.h>
? Ведь я io.h уже подключил в главном А4899.с файле

Код:
Файл А4899.с
 
#define F_CPU 8000000UL
 
#include <avr/io.h>
#include <stdio.h>
#include <stdlib.h>
 
#include "Main_Var.h"
#include "LCD.h"
#include "Init_my_MCU.h"
#include "Work.h"
Код:
#ifndef MAIN_VAR_H_
#define MAIN_VAR_H_
 
#include <avr/io.h>
 
#define DDR_MS DDRB
#define PORT_MS PORTB
#define PIN_MS  PINB
 
// здесь настройки пинов для A4899
 
#define PIN_ENABLE PINB0
#define PORT_ENABLE_ON PORTB |= 0x01
#define PORT_ENABLE_OFF PORTB &= 0xFE
Aleksey_ вне форума   Ответить с цитированием
Старый 08.11.2019, 23:10   #4
pal1222@yandex.ru
Senior Member
 
Регистрация: 30.09.2008
Сообщений: 1,494
Вес репутации: 2750/82
pal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond reputepal1222@yandex.ru has a reputation beyond repute
По умолчанию Re: Как объявить через #define порты

Цитата:
Сообщение от Aleksey_ Посмотреть сообщение
Моя проблема решилась для меня вчера, просмотрел свои прошлые программки на Atmega16, там я тоже мучался с инклюдами, так вот когда я по прошлым примерам вставил строку
Код:
#include <avr/io.h>
в хедер файл с описаниями всех моих подключаемых переменных, тогда всё заработало(появились другие ошибки, но это другая история). Так вот у меня следующий вопрос - почему я главном файле A4899.c инклюдю
Код:
#include <avr/io.h>
, потом подключаю к нему
Код:
#include "Main_Var.h"
и в подключаемом файле я снова должен написать строку
Код:
#include <avr/io.h>
? Ведь я io.h уже подключил в главном А4899.с файле

Код:
Файл А4899.с
 
#define F_CPU 8000000UL
 
#include <avr/io.h>
#include <stdio.h>
#include <stdlib.h>
 
#include "Main_Var.h"
#include "LCD.h"
#include "Init_my_MCU.h"
#include "Work.h"
Код:
#ifndef MAIN_VAR_H_
#define MAIN_VAR_H_
 
#include <avr/io.h>
 
#define DDR_MS DDRB
#define PORT_MS PORTB
#define PIN_MS  PINB
 
// здесь настройки пинов для A4899
 
#define PIN_ENABLE PINB0
#define PORT_ENABLE_ON PORTB |= 0x01
#define PORT_ENABLE_OFF PORTB &= 0xFE
Каждый файл компилируется отдельно и правильный компилятор "не помнит", какие там раньше были дефайн Не хочешь инклудить в каждом файле, сразу включи все нужные ".h" в проект, но на "С" так делать не принято
pal1222@yandex.ru вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PICC18 #define USE_XXX_MASK Andrey K. Продукция MICROCHIP 15 03.11.2018 15:25
PIC + MRF24J40 Nik Продукция MICROCHIP 59 05.08.2012 16:51
проблемы с расширенным CAN идентификатором addi Продукция MICROCHIP 0 04.04.2010 20:37
Помогите разобраться zz-juve Вопросы начинающих 6 09.01.2010 17:03
Составное USB устройство. EugenOS Продукция MICROCHIP 2 25.09.2009 20:40


Часовой пояс GMT +3, время: 13:42.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot