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

Обсуждаем контроллеры компании Atmel.
Marchello
Встал на лапы
Сообщения: 114
Зарегистрирован: Чт ноя 24, 2011 12:39:13

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

Сообщение Marchello »

Вот я в кучу собрал все глобальные переменные:

#include <mega16.h>

#asm
.equ __w1_port=0x12 ;PORTD
.equ __w1_bit=3
#endasm
#include <1wire.h>
#include <ds18b20.h>

#asm
.equ __i2c_port=0x15; PORTC
.equ __sda_bit=1
.equ __scl_bit=0
#endasm
#include <i2c.h>
#include <ds1307.h>

#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>

#include <delay.h>
#include <stdio.h>

#define MAX_DS18B20 8
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

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

Сообщение radio-kot »

Ого!
Будете проходить мимо- проходите!
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

Marchello писал(а):Вот я в кучу собрал все глобальные переменные:


осталось эту кучу немного разгрести
у тебя в коде имеются конструкции #asm.......#endasm это ассемблерные вставки, которых у тебя несколько штук

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

#include <mega16.h>

#include <i2c.h>
#include <1wire.h>
#include <ds1307.h>
#include <ds18b20.h>
#include <lcd.h>
#include <delay.h>
#include <stdio.h>

#asm
.equ __w1_port=0x12 ;PORTD
.equ __lcd_port=0x12 ;PORTD
.equ __i2c_port=0x15; PORTC
.equ __w1_bit=3
.equ __sda_bit=1
.equ __scl_bit=0
#endasm

#define MAX_DS18B20 8
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Marchello
Встал на лапы
Сообщения: 114
Зарегистрирован: Чт ноя 24, 2011 12:39:13

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

Сообщение Marchello »

Спасибо! Так гораздо нагляднее и все в едином месте!
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

теперь осталось тело функции main собрать воедино, только смотреть внимательно, чтоб переменные друг с другом не конфликтовали

обрати внимание на

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

while(1)
{
....
}

- это бесконечный цикл, необходимый для того чтоб микроконтроллер не отработал один раз и встал, а выполнял работу постоянно, естественно две такие конструкции не могут выполняться, потому что из первой выйти уже нельзя

ну а все что вне этого цикла выполняется естественно 1 раз - это как бы подготовительные процедуры, которые нужны при старте

т.е. тебе нужно соединить все что вне while и все что внутри while
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
kotriks
Грызет канифоль
Сообщения: 274
Зарегистрирован: Чт апр 28, 2011 15:08:58

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

Сообщение kotriks »

народ кто нить пробывал реализовать через юарт слив данных с eeprom 24с1024 через TeraTerm терминал через x-modem. если кто делал выложите пожалуйста код.
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

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

Сообщение eduardo »

Подскажите пожалста как сделать так,чтобы массив читался с определенного элемента? Ну к примеру,записано в еепром какое-то число и нужно чтобы массив читался с этого числа. Естественно такое же число есть и среди элементов массива. А то я начинающий,неумеющий и не знающий как это сделать. Заранее спасибо.
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

eduardo

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

unsigned char flag = 0;      //флаг, при нахождении нужного элемента устанавливается в 1
for(unsigned char i = 0; i < arraysize; i++)
{
   if(array[i] == etalon) flag = 1;
   if(flag == 1) readArray;
}
Последний раз редактировалось unalex Чт янв 24, 2013 04:42:57, всего редактировалось 1 раз.
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

или имелось ввиду начать читать с элемента с определенным номером?
тогда проще некуда

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

for(unsigned char i = number; i < arraysize; i++) //пробегаем по массиву, начиная с нужного места
{
// ваш код
}
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

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

Сообщение eduardo »

Спасибо. Буду пробовать.
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

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

Сообщение eduardo »

unalex писал(а):или имелось ввиду начать читать с элемента с определенным номером?
тогда проще некуда

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

for(unsigned char i = number; i < arraysize; i++) //пробегаем по массиву, начиная с нужного места
{
// ваш код
}

Со вторым вариантом разобрался,а вот с первым чтото не получается. Что такое etalon?
Откуда он появился?
eduardo
Нашел транзистор. Понюхал.
Сообщения: 171
Зарегистрирован: Вс июн 17, 2012 16:32:42

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

Сообщение eduardo »

Теперь и с первым кодом разобрался. Еще раз спасибо,хотя оно не булькает...
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

unalex писал(а):eduardo

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

unsigned char flag = 0;      //флаг, при нахождении нужного элемента устанавливается в 1
for(unsigned char i = 0; i < arraysize; i++)
{
   if(array[i] == etalon) flag = 1;
   if(flag == 1) readArray;
}


странная конструкция, понятно что она делает, но не понятно как это можно употребить.Я бы лучше сделал функцию, которая возвращает позицию, где найден символ.Хотя, конечно, возможно мой скудный опыт не позволяет в полной мере оценить преимущества вашего метода.
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

имеется число(я назвал его эталон), задача: найти в массиве первое попавшееся число равное эталону и начиная с этого места читать массив
флаг нужен для того чтобы отследить что нужный элемент мы нашли

пробегаем по массиву, сравниваем с эталоном и проверяем флаг, если элемент массива не совпадает и флаг не установлен - идем дальше, если совпало - устанавливаем флаг совпадения, сразу после этого проверяем флаг, если он установлен, значит начиная с этой позиции будем читать(условно обозначил эту процедуру как readArray)

без флага программа будет только отлавливать числа, которые совпадают а остальные пропускать

такая конструкция позволяет использовать только один цикл и для поиска позиции и для чтения(или других процедур, например модификации или стирания)

вариант с возвращением позиции должен состоять из еще одного перебора массива, в котором как раз будет производиться это самое чтение
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
hfelyx
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт дек 28, 2010 18:25:31

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

Сообщение hfelyx »

Всем привет! В программировании я полный ноль,только светодиодами моргать умею, но хочется большего( освоить таймеры ,формулы,переменные, массивы...) Подскажите с чего начать осваивание CVAVR и Мк, или может полезную литературу для начала.
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

hfelyx писал(а):Всем привет! В программировании я полный ноль,только светодиодами моргать умею, но хочется большего( освоить таймеры ,формулы,переменные, массивы...) Подскажите с чего начать осваивание CVAVR и Мк, или может полезную литературу для начала.

http://www.123avr.com/ вот например.
«И всё-таки она вертится!»
hfelyx
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт дек 28, 2010 18:25:31

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

Сообщение hfelyx »

Спасибо за быстрый ответ! Но хотелось бы литературу в книжных форматах и проверенную на которых уже выучились люди(в смысле программисты)....
Главное ,чтоб доступно и понятно обьяснялось,по порядку...
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

Вот
Вложения
Лебедев.jpg
(141.47 КБ) 371 скачивание
«И всё-таки она вертится!»
hfelyx
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт дек 28, 2010 18:25:31

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

Сообщение hfelyx »

Спасибо! Если бедет что-то еще,буду признателен!!!
Аватара пользователя
unalex
Мучитель микросхем
Сообщения: 424
Зарегистрирован: Сб авг 25, 2007 22:02:05
Откуда: Германия, Viernheim

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

Сообщение unalex »

Apparatchik писал(а):http://www.123avr.com/ вот например.


ИМХО это нечто безобразное, во первых привязка в СodeVision и VMLAB во-вторых никакой последовательности(в первом уроке уже предлаают копаться в ШИМ и USART чужого кода) не говоря уже о ляпсистом оформлении и наличию ошибок

кстати хорошая оговорка на сайте
123avr.COM ( то что вы сейчас читаете) - втупление и первые эксперементы



я бы посоветовал просто почитать книги по С, для понимания таких вещей как циклы, массивы, и прочие конструкции, а потом применять это уже к конкретному микроконтроллеру
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Ответить

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