Проблема с AVR-studio

Здесь вопросы новичков
Ответить
Ibaness
Сообщения: 5
Зарегистрирован: 11 авг 2009, 02:00

Проблема с AVR-studio

Сообщение Ibaness » 11 авг 2009, 02:15

Товарищи, помогите! Пытаюсь сварганить аппаратуру радиоуправления на атмеге. AVR-studio активно не хочет воспринимать функции UBRR и UCR... Выдает ошибку.... Файлик stdio.h подключил. Что делать? Может еще какой файлик подключить надо? Или это как-то по-модному нужно описывать?
Цитата:

#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>

char ruli;
char scorost;
char vihod;
char b0;
char b1;
char b2;
char b3;
char b4;

int main (void)
{

DDRB = 0x00;
DDRC = 0xFF;
DDRD = 0xFF;

PORTB = 0xFF;

UBRR = 25;
UCR = 0x18;

b0 = PINB0;
b1 = PINB1;
b2 = PINB2;
b3 = PINB3;
b4 = PINB4;

if (b0 = 0) ruli = 30;
else if (b1 = 0) ruli = 10;
else ruli = 20;

if (b2 = 0) scorost ++;
if (scorost > 7) scorost = 7;
if (b3 = 0) scorost = 3;
if (b4 = 0) scorost --;
if (scorost < 1) scorost = 1;

vihod = ruli + scorost;

putchar (vihod);
_delay_loop_2(10);
}

Аватара пользователя
Radioded
Site Admin
Сообщения: 185
Зарегистрирован: 07 ноя 2008, 02:47
Откуда: Москва
Контактная информация:

Re: Проблема с AVR-studio

Сообщение Radioded » 12 авг 2009, 15:09

Скорее всего у вашей атмеги(кстати, какая атмега?) несколько usart`ов, поэтому надо писать регистры с номерами. Гляньте в даташитах примеры.

Например, функции для работы с USART на ATmega64 я писал так:

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

void usart_init(void){
	#if USART_SPEED == 115200
		UBRR0H = 0;
		UBRR0L = 3;														// 115.2 kbit, 7.3728 MHZ
	#elif USART_SPEED == 57600
		UBRR0H = 0;
		UBRR0L = 7;														// 57.6 kbit, 7.3728 MHZ
	#else
	 #error "USART SPEED is not defined"
	#endif
	
	UCSR0B = (1<<RXCIE0)|(0<<TXCIE0)|(1<<RXEN0)|(1<<TXEN0);			// int disable, TX & RX ENABLE
	UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);									// 8bit, parity none, 1stop bit

}

unsigned char usart_receive(void){
	while(!(UCSR0A & (1<<RXC0))){										// RXC0 = 1 if unread data
	}
	return UDR0;
}

void usart_transmit(unsigned char data){
	while(!(UCSR0A & (1<<UDRE0))){										// UDRE0 = 1 if ready for transmit
	};
	UDR0 = data;
}

Ibaness
Сообщения: 5
Зарегистрирован: 11 авг 2009, 02:00

Re: Проблема с AVR-studio

Сообщение Ibaness » 23 авг 2009, 13:56

AtMega8. Спасибо, глянул в даташит, разобрался, заработало.
Теперь другая проблема. Как подключить к той же атмеге матричную клавиатуру 4x4? Пытался разобраться по самоучителям, но никак не могу вкурить суть, как писать программу на Си.... Кто добрый, помогите...

новый
Сообщения: 3
Зарегистрирован: 08 окт 2009, 19:49

Re: Проблема с AVR-studio

Сообщение новый » 08 окт 2009, 20:00

Всё просто: 4 ножки выходы, а остальные четыре - входы. Проводники располагаются перекрестно - классика, т.е. 4*4 = 16 кнопок можно опрашивать.
По очереди выставляешь логическую единицу на одной из четырех выходных ножек, а на приёмных смотришь где появилась единица. Аналогично с остальными ножками. Главное правильно организовать цикл опроса и не забыть повесить резисторы/подключить подтягивающие резисторы.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей