CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Sounds
Прорезались зубы
Сообщения: 238
Зарегистрирован: Вт май 27, 2008 23:23:24

Сообщение Sounds »

Подскажите как вывести переменную а через USART?
Я пытаюсь вывести так:

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

Int a=10;
Printf(“a=”, a);

Но нечего не получается на компьютер приходит только a= и больше нечего.
Помогите пожалуйста!
Аватара пользователя
sinobi
Встал на лапы
Сообщения: 104
Зарегистрирован: Сб фев 24, 2007 15:49:35
Контактная информация:

подскажите насчёт ошибки

Сообщение sinobi »

вот текст программы
#include <mega8>
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire>
#include <delay>
#include <ds18b20>
#include <stdio>
void main(void)
{
int temp;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600 (Double Speed Mode)
UCSRA=0x02;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;

w1_init();
printf("Start PC Termometr\r");
while (1)
{
temp=ds18b20_temp(0);
if(temp>1000)
{ temp=4096-temp;
temp=-temp;
}
printf("Temp=%i\xf8C",temp);
delay_ms(1000);
printf("\n\r");
};
}
и в строке " temp=ds18b20_temp(0);" жалуется компилятор
скрин прикладываю
Изображение
Аватара пользователя
Sounds
Прорезались зубы
Сообщения: 238
Зарегистрирован: Вт май 27, 2008 23:23:24

Сообщение Sounds »

Вот тебе рабочий код:
Причина была в том что ты эту функцию написал как temp=ds18b20_temp(0);, а надо было так temp=ds18b20_temperature(0);. Просто в библиотеке (ds18b20.h) эта функция чтения температуры прописана как ds18b20_temperature(0);
Вот тебе рабочий код:

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

#include <mega8>
#asm
   .equ __w1_port=0x15 ;PORTC
   .equ __w1_bit=5
#endasm
#include <1wire>
#include <ds18b20>
#include <stdio>
void main(void)
{
int temp;
unsigned char devices;
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
PORTD=0x00;
DDRD=0xFF;
devices=w1_init();
printf("Start PC Termometr\r");
while (devices>0)
      {
  temp=ds18b20_temperature(0);  //Вот здесь была ошибка!!!
          if (temp>1000){ 
             temp=4096-temp;
             temp=-temp;}
printf("Temp=%i\xf8C",temp);
                 
      };
}
Аватара пользователя
Sounds
Прорезались зубы
Сообщения: 238
Зарегистрирован: Вт май 27, 2008 23:23:24

Сообщение Sounds »

С передачей переменной по USART разобрался.
Кому интересно, надо было вот так:

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

Int a=10; 
Printf("a=%i", a);
Аватара пользователя
sinobi
Встал на лапы
Сообщения: 104
Зарегистрирован: Сб фев 24, 2007 15:49:35
Контактная информация:

Сообщение sinobi »

Sounds спасибо!код не мной был написан, решил попробовать и сразу грабли-ща проверю!Ещё раз спасибо!
Аватара пользователя
Gryphon
Нашел транзистор. Понюхал.
Сообщения: 152
Зарегистрирован: Пн ноя 03, 2008 12:08:42
Откуда: Владивосток
Контактная информация:

Сообщение Gryphon »

Здравствуйте! Решил собрать устройство http://zx.pk.ru/showthread.php?t=6333&highlight=mega8 . Программа написано на CodeVisionAVR, но мне нужно переделать программу на BASCOM-AVR. Если кто-то может, помогите переделать ее (в смысле, описать программу, что, где и как). Если нужна другая инфа-напишите и я пришлю.
Вложения
bin.rar
(125.23 КБ) 316 скачиваний
Вы получаете от людей больше, если им противоречите
ipkin
Нашел транзистор. Понюхал.
Сообщения: 167
Зарегистрирован: Вт июл 10, 2007 23:15:17
Откуда: Магнитогорск

Сообщение ipkin »

подскажите как на си сделать такую проверку
допустим :

если X больше или равен 80 либо меньше или равен 120 а Y больше или равен 70 либо меньше или равен 90 то выполнить ..............
Аватара пользователя
sinobi
Встал на лапы
Сообщения: 104
Зарегистрирован: Сб фев 24, 2007 15:49:35
Контактная информация:

Сообщение sinobi »

Вот програмка которая выводит данные на rs232?f мне надо вывести эти данные ещё и на 1602 жки экран-не подскажите ли решение или посмотреть и почитать где и как это сделать.За ранее спасибо!
Вложения
receive.c
(3.62 КБ) 666 скачиваний
SAU
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Вс сен 10, 2006 00:04:03

Сообщение SAU »

Учебник по сабжу кому надо.
http://rs108.rapidshare.com/files/19025 ... ionAVR.rar
Но вести 62 мега :))
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

SAU писал(а):Учебник по сабжу кому надо.
http://rs108.rapidshare.com/files/19025 ... ionAVR.rar
Но вести 62 мега :))
Первоисточник файла? Если книга, то название полное ее и автор? Язык учебника?
SAU
Вымогатель припоя
Сообщения: 546
Зарегистрирован: Вс сен 10, 2006 00:04:03

Сообщение SAU »

CodeVisionAVR
Пособие для начинающих
Лебедев М.Б.
ISBN 978-5-94120-192-1
Аватара пользователя
sinobi
Встал на лапы
Сообщения: 104
Зарегистрирован: Сб фев 24, 2007 15:49:35
Контактная информация:

Сообщение sinobi »

тяжеловат файл,мне ночь как минимум качать :(
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

SAU писал(а):CodeVisionAVR
Пособие для начинающих
Лебедев М.Б.
ISBN 978-5-94120-192-1

Так и думал в чем-то подвох будет, половина страниц в зеркальном отображении, это что за прикол?
Аватара пользователя
Alexeus
Вымогатель припоя
Сообщения: 690
Зарегистрирован: Вс мар 04, 2007 01:17:12

Сообщение Alexeus »

При конфигурировании перефирии контроллера в CvAVR нужно во вкладке "порты" выставлять входы и выходы (например при конфигурировании USART, нужно TxD указывать в портах как выход, а соответственно RxD как вход?)?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Alexeus писал(а):При конфигурировании перефирии контроллера в CvAVR нужно во вкладке "порты" выставлять входы и выходы (например при конфигурировании USART, нужно TxD указывать в портах как выход, а соответственно RxD как вход?)?
читайте документацию на МК! если разрешена работа передатчика USART, то вывод ТХ игнорирует все ваши настройки и становится ВЫХОДОМ вне вашего желания. аналогично и для приемника.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
nech53
Родился
Сообщения: 7
Зарегистрирован: Пт дек 28, 2007 20:10:31
Откуда: г.Североморск

Сообщение nech53 »

[/quote]
Так и думал в чем-то подвох будет, половина страниц в зеркальном отображении, это что за прикол?[/quote]
Посмотрите здесь,вроде всё нормально,там есть и диск ~40 метров
http://vrtp.ru/index.php?act=lib&CODE=a ... ticle=3275
если хочешь что-то в жизни сделать-делай.
Аватара пользователя
mr.Kirill
Мучитель микросхем
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

nech53 писал(а):Посмотрите здесь,вроде всё нормально,там есть и диск ~40 метров
http://vrtp.ru/index.php?act=lib&CODE=a ... ticle=3275

Да ну ее, эту книжку, так, ради интереса скачал глянул.
С английским хоть и не отлично, но на хорошем уровне дружу и потому читаю при необходимости оригинальный Help.
Аватара пользователя
Sounds
Прорезались зубы
Сообщения: 238
Зарегистрирован: Вт май 27, 2008 23:23:24

Сообщение Sounds »

Как опросить кнопку замкнутую на +5V?
Это вообще реально?
я пробую так:
if(PIND.1==1)
Но так работает только когда на GND кнопку замыкаешь.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

Sounds писал(а):Как опросить кнопку замкнутую на +5V?
Это вообще реально?
я пробую так:
if(PIND.1==1)
Но так работает только когда на GND кнопку замыкаешь.
подтяните резистором вход к земле и опрашивайте свою кнопку... это вопрос не программирования, а схемотехники - при чем тут CodeVision?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Goodefine
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср апр 16, 2008 13:22:54
Откуда: Приднестровье, Тирасполь

Сообщение Goodefine »

Недавно обнаружен глюк генератора начального кода CAVR.
Мастер путает режимы передачи передачи данных интерфейса SPI: неправильно устанавливает биты CPOL (определяет полярность тактового сигнала) и CPHA (фаза сигнала). Например, для положительной полярности тактовых импульсов со считыванием по переднему фронту должно быть CPOL=0, CPHA=0. В мастере делаем как на рисунке и получаем:

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

// SPI initialization
// SPI Type: Slave
// SPI Clock Rate: 2000,000 kHz
// SPI Clock Phase: Cycle Start
// SPI Clock Polarity: High
// SPI Data Order: MSB First
SPCR=0x4C; // 0b   1    0    0       1           1        0     0 
           //                     / CPOL/     /CPHA/
SPSR=0x00;

Режим работы будет похож, но не это задумывалось...
Вложения
gluk.jpg
(81.29 КБ) 745 скачиваний
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Ответить

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