Курс: программирование AVR, учимся "с нуля"

 
1 2 3 4 5 6 7 12
?? Tosha_443 #18.06.2004 10:48
+
-
edit
 

Tosha_443

втянувшийся
-=ELF=-, 17.06.2004 23:31:11:
что то у меня ничего не выходит с PORTB.1, может кто напишет кусочек кода для использования PORTB.1 с ImageCraft.
 

а что не сходится? я на Кодевижне, правда пишу...
//настроим порт 10010011 - напимер. т.е 0,1,4,7 нога на выход
unsigned char hhh;

DDRB=0x93;
//выведем чего-нить на 1 ногу(т.е. обычную вторую на порту т.к. нумеруются с нулевой)
PORTB.1=0;
PORTD.1=1;// правда, если так напишешь, то не увидишь без осциллопера ничего...
//задержку надо.
//примем чего-нить с ноги PB.2
PORTB.2=1;// на PB.2 подтягивающий резюк на +5в
hhh=PINB.2;
// можно и подождать, допустим нуля там-же
while (PINB.2){#asm"NOP"};// пока PINB.2 будет равно 1, а оно будет, если
//нога в воздухе.

если сильно надо, свисти мыло-могу лекарство к кодевижну подбросить
Не ошибается тот, кто ничего не делает  
Это сообщение редактировалось 18.06.2004 в 11:08
+
-
edit
 

-=ELF=-
-ELF-

новичок
ImageCraft не понимает PORTB.x - дает ошибку при компиляции
Codevision сегодня попробую - thx, у меня он уже вылеченый
 
?? Tosha_443 #18.06.2004 14:40
+
-
edit
 

Tosha_443

втянувшийся
-=ELF=-, 18.06.2004 12:19:43 :
ImageCraft не понимает PORTB.x - дает ошибку при компиляции
Codevision сегодня попробую - thx, у меня он уже вылеченый
 


Не нашел на imagecraft`е упоминания о разделении портов :(
наверное, стоит писать маски ко всему порту:
PORTB=PORTB&0xXX - если надо сбросить биты и
PORTB=PORTB|0xXX если установить.
при & маска все единицы, кроме того бита, который должен равнятся 0
при | маска все нули, кроме того бита, который надо установить в 1.
НЕУДОБНО, но ,похоже, другого выхода нет.
Не ошибается тот, кто ничего не делает  
+
-
edit
 

-=ELF=-
-ELF-

новичок
IC -ImageCraft
CV - CodeVision

нашел в IC:

PORTB = BIT(PORTB5) пишет 1(единицу) в порт B.5 , а вот как записать 0, непонял.

В "CV" более приличный хэлп(в плане примеров), чем в "IC"

еще в "IC" PORTB = ~BIT(PORTB5) не работает(выдает ошибку на компиляции), а в "CV" PORTB.1 = ~0x00 работает.

и еще не подскажешь по "CV"
мне допустим надо в порт B.1 вывести число 0x05, как сделать?

PORTB.1 = 0x05
или
0x05 разложить на биты "00000101" и побитно писать в порт B.1
1- PORTB.1 = 0
...
8- PORTB.1 = 1



 
?? Tosha_443 #21.06.2004 10:39
+
-
edit
 

Tosha_443

втянувшийся
-=ELF=-, 19.06.2004 23:21:57 :
IC -ImageCraft
CV - CodeVision
и еще не подскажешь по "CV"
мне допустим надо в порт B.1 вывести число 0x05, как сделать?

PORTB.1 = 0x05
или
0x05 разложить на биты "00000101" и побитно писать в порт B.1
1- PORTB.1 = 0
...
8- PORTB.1 = 1
 


Только последовательно т.е. раскладывать на битики. а кто это 0х05 принимать будет? т.к. надо еще и частоту передачи учитывать. Может проще UART использовать (софтовый или хардовый)? Или I2C? В любом случае надо задержки вставлять. У меня на 4мгц при приеме с порта (PINx) надо задержка 1 мс, а то не успевает 0 на ножке выставиться...
Не ошибается тот, кто ничего не делает  
Это сообщение редактировалось 21.06.2004 в 10:52

Yuran

опытный

Tosha_443, 21.06.2004 09:39:15 :
У меня на 4мгц при приеме с порта (PINx) надо задержка 1 мс, а то не успевает 0 на ножке выставиться...
 


Хм...
Как это не успевает?
команда атомарная значит всё успевает и длительность импульса при одном такте если ты его снимешь будет 400 нс.
Но если ты сопрягаешь с другими девайсами, то надо из даташита смотреть время длительности сигналов.
B)
 

Lioxa

втянувшийся
Странный баг ADC, продолжение ......

Подсоединил на ADC0 GRND вроде как и положенно 0В но первый байт всегда ~0,7в :blink: сделал запись в память не по 64 байта а по 32 тоже самое, поменял Мегу8 тоже самое. Ещё идеи будут ?
 
?? Tosha_443 #21.06.2004 11:52
+
-
edit
 

Tosha_443

втянувшийся
Yuran, 21.06.2004 10:37:31 :
Tosha_443, 21.06.2004 09:39:15 :
У меня на 4мгц при приеме с порта (PINx) надо задержка 1 мс, а то не успевает 0 на ножке выставиться...
 


Хм...
Как это не успевает?
команда атомарная значит всё успевает и длительность импульса при одном такте если ты его снимешь будет 400 нс.
Но если ты сопрягаешь с другими девайсами, то надо из даташита смотреть время длительности сигналов.
B)
 


сопряжение с девайсом кнопка :D а даташита на нее нету (с сидюка снял) ;)
do
{ // scan buttons !!!!
DDRD=0x00;
PORTD=0x78;
direction=1;//закрывает транзистор на светодиодах
/////////////////////////////////////////////////////////////////
delay_ms(1);//dummy
/////////////////////////////////////////////////////////////////
scan_code=PIND;
// светим диодами и проверяем скан-код
direction=0;
DDRD=mask_buttons;
scan_code&=mask_buttons;
//проверка скан-кода клавиш
// и задержка 400мс.
}
while (!setup_end);
без /////////////////////////////////////////////////////////////////
delay_ms(1);//dummy
/////////////////////////////////////////////////////////////////
не слушается кнопок. :unsure:
Не ошибается тот, кто ничего не делает  

Lioxa

втянувшийся
Нашёл я свой байт. Нехватало одного Acknowledge. Щас всё нормально.
 
BG Реконструктор #21.06.2004 15:50
+
-
edit
 
Lioxa, 21.06.2004 09:47:29 :
Странный баг ADC, продолжение ......

Подсоединил на ADC0 GRND вроде как и положенно 0В но первый байт всегда ~0,7в :blink: сделал запись в память не по 64 байта а по 32 тоже самое, поменял Мегу8 тоже самое. Ещё идеи будут ?
 


Кстати, у меня тоже 0.7, когда нога ADC на земле? Кто-нибудь знает почему это произходит?
 

Lioxa

втянувшийся
Какой программой лучше проэктировать печатную схему для AVR ?
 
?? Tosha_443 #22.06.2004 11:16
+
-
edit
 

Tosha_443

втянувшийся
Lioxa, 22.06.2004 09:32:28 :
Какой программой лучше проэктировать печатную схему для AVR ?
 


А чем удобнее проектировать печ. платы для PIC, ARM, 8051? :D
Самый короткий путь - это тот, который знаешь.
а если серьезно, то я это делаю в Accel EDA 14. ну нравится он мне. и еще если хочешь AutoPlace - то SPECTRA вам поможет(установленная в связке с EDA).
Не ошибается тот, кто ничего не делает  

Yuran

опытный

Lioxa, 22.06.2004 09:32:28 :
Какой программой лучше проэктировать печатную схему для AVR ?
 


печатную плату?
я в Orcad Layout, развожу правда долго с ней разбирался но зато она реально рулит %)
а если жаль времени то лучше аккуратненько на макетке собрать, тоже не плохой вариант.
 
RU termostat #23.06.2004 13:11
+
-
edit
 

termostat

аксакал

Реконструктор, 21.06.2004 14:50:57 :
0.7, когда нога ADC на земле? Кто-нибудь знает почему это произходит?
 


Проверь прошивку и схему в VMLAB от AmcTools.com
+
-
edit
 

-=ELF=-
-ELF-

новичок

помогите pls с CodeVision'ом:
программа передает по UART данные "AT+"комманды, после передачи должна стать в режим ожидания ответа на 2-3 сек. Если данные получаем, то пишем их в массив[10], после чего проверяем массив[10] на совпадение с возможными ответами ответами(OK,ERROR...).

Так вот как организовать опрос поступления данных в UART ? через getchar() ?

Могу ли я в "CV" делать конкатенацию строк не через strcat а через ".":
char a[],b[],c[]
a[] = b[].c[]
можно так ?

за одно может кто обьяснит как пользоваться/вызывать strcat в CodeVision'e, т.к.
при компиляции кода:
....
char buffer[10];
.....
strcat(buffer, "d");
....
CodeVision пишет "function parameter #2 incompatible with its declaration", при этом в ImageCraft'e все компилируется нормально
 
Это сообщение редактировалось 28.06.2004 в 02:14
+
-
edit
 

darker

новичок
Народ! Кто-нибудь сталкивался с программированием Flash`а? Т.е. когда сидишь в буте и стираешь/пишешь область программ. Стирать я научился, а вот с записью полный трабл. Если не трудно, то дайте совет или исходник, плиз.

И еще. Кто-нить знает как происходит собственно запись/стирание? Путем экспериментов я выяснил, что страница памяти у 128-й меги стирается примерно 4.192 мс, но вот в чем прикол: если прерывать стирание (reset) допустим после 4 мс, то данные остаются на месте, как-будто собственно стирание происходит в последний момент.
 
?? Tosha_443 #29.06.2004 10:18
+
-
edit
 

Tosha_443

втянувшийся
-=ELF=-, 27.06.2004 02:36:37 :
помогите pls с CodeVision'ом:
 


по поводу UART - в прерывании getchar сделай и не жди ответа, зачем?
в визарде есть настройки по-поводу уарта(хардового).
по поводу strcat - второй параметр ДОЛЖЕН быть переменной, если точнее-указателем на начало строки.
попробовал(результат не проверял) скомпилил нормально:

char buffer[10],buffer1[10];
char *i;
.......
strcat(buffer,i);
strcat(buffer,buffer1);

по-другому не получилось.



Не ошибается тот, кто ничего не делает  
+
-
edit
 

AndySa

новичок
Проблема заключается в том, что программа делает остановку на 0,2сек (как я понял, там в самом конце написано) и гаснут индикаторы. Как от этого избавиться? Помогите очень надо!!!


 

Yuran

опытный

AndySa, 29.06.2004 22:31:48 :
Проблема заключается в том, что программа делает остановку на 0,2сек (как я понял, там в самом конце написано) и гаснут индикаторы. Как от этого избавиться? Помогите очень надо!!!

 


Во-первых, здравствуйте!
Во-вторых, думаю что ваш вопрос следовало бы написать в тему "курс:програмирование для AVR".
В-третьих, непонятно от чго избавиться <_<

Текст:
Reading data from 1-wire interface device, DS1820, takes about 0.2s, so when the program enter 1-wire connecting, the display will turn off, say 0.2s. Also the function that reads DS1820 will disable any interrupt, so we then loss such period of time.

Означяет насколько я понял, что во время чтения значения с термосеносора DS1820, отключается индикатор всего на 0.2 секунды думаю это не смертельно %)) (хотя мой беглый взгляд в коде это не увидел)

для большей ясности зачем думаю стоит почитать даташит на DS1820. Наколько я понял с ним разговаривают по последовательному протоколу :P
 
+
-
edit
 

-=ELF=-
-ELF-

новичок
как я понимаю(может не прав), если мы обьявили указатель *i, то и использовать его должны, тогда почему мы используем i ?

char buffer[10];
char *i;
.......
strcat(buffer,i);

а по идее должно быть так:

char buffer[10];
char *i;
.......
strcat(buffer,*i);

но это вызывает ошибку при компиляции.
 
+
-
edit
 
Привет!

По схеме раз в 5сек. идет обращение к датчику и все индикаторы отключаются на 0,2сек или чуть более. ну в общем это не есть гуд т.к. постоянно моргают, если уменьшить интревал считывания (мне надо считать 1раз в 1-3 сек.) то моргает прилично и утомляет глаза сильно...
 
?? Tosha_443 #30.06.2004 10:05
+
-
edit
 

Tosha_443

втянувшийся
-=ELF=-, 30.06.2004 00:18:49 :
как я понимаю(может не прав), если мы обьявили указатель *i, то и использовать его должны, тогда почему мы используем i ?

char buffer[10];
char *i;
.......
strcat(buffer,i);

а по идее должно быть так:

char buffer[10];
char *i;
.......
strcat(buffer,*i);

но это вызывает ошибку при компиляции.
 


писать
int *i;

..........
strcat(buffer,*i) нельзя, т.к получается указатель на указатель - вот он и ругается.
объявляешь *i? а работаешь с ним- i.
Программирование на языке СИ -указательная арифметика. почитай.
Не ошибается тот, кто ничего не делает  
Это сообщение редактировалось 30.06.2004 в 10:26

pokos

аксакал

Tosha_443, 29.06.2004 09:18:27 :
...в прерывании getchar сделай и не жди ответа, зачем?
 


Так делать нельзя. Если символ пришёл с ошибкой, то программа заторчит в прерывании до скончания времён, потому что в CodeVision getchar сделан абсолютно тупо - он ждёт символа в буфере, вместо того, чтобы возвращать код ошибки. В прерывании такой getchar использовать нельзя, однозначно.
 
RU termostat #30.06.2004 11:27
+
-
edit
 

termostat

аксакал

[AndySa:],30.06.2004 07:52:13
раз в 5сек. идет обращение к датчику и все индикаторы отключаются на 0,2сек
 


ответ в топике "Курс МК..."
AD Реклама Google — средство выживания форумов :)
RU termostat #30.06.2004 11:28
+
-
edit
 

termostat

аксакал

в ответ на:
http://forums.airbase.ru/?showtopic=27846&st=0#entry422782
Мигание трудно убрать, ведь применена динамическая индикация, т.е. в каждый момент времени индицируется одна цифра.

для устранения мигания нужны дополнительные микрухи - защелки либо что я всегда рекомендую: взять более многоногий МК !

\\\\\\

по тексту: interrupt [TIM0_OVF] ...

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


еще думаю нужно резистор 10 ком с Ресета на питание добавить, и кондер на ресете 0.1 мкФ поставить.

\\\\\\\\\\

А сайт интересный кажется, и по разным МК
http://www.kmitl.ac.th/~kswichit
Это сообщение редактировалось 02.07.2004 в 09:10
1 2 3 4 5 6 7 12

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru