Технический форум

Технический форум (http://www.tehnari.ru/)
-   Микропроцессоры (http://www.tehnari.ru/f115/)
-   -   Освоение МК ATmega16 (http://www.tehnari.ru/f115/t73995/)

News 26.05.2012 20:52

Освоение МК ATmega16
 
Совершенно недавно (2 дня назад) загорелся я таки идеей научится програмировать МК. Нашол в интернете небольшой самоучитель Краткий Курс - Самоучитель - Программирование микроконтроллеров AVR - быстрый старт с нуля - 123avr.com. Дочитал я его до 6 странице и возник конфуз, а точнее целое море вопросов.
1 Конечно же с большого нетерпежа я залез в компилятор, но как только я собрался с мыслями, выяснилось, что команды то я многие знаю, а вот с их практическим применением беда, точнее как применить то я понимаю, но ведь у МК каждая нога имеет собственный адрес, который мне раздобыть не удалась....
2 Что содержится в файле <mega16.h>.
3 Значение оператора #define мне так до конца и не понятно. #define ROWER E. Эта строчка обозначает что "E" бкдет заменятся ROWER для уменьшения кода?
4 Оператор Goto. На что он может ссылаться?
5
Цитата:

PORTB = (unsigned char) ~(ADCW>>2); ADCW - это переменная слово (двухбайтовая величина - так она объявлена в файле mega16.h) в котором CodeVisionAVR сохраняет 10-битный результат АЦП - а именно в битах9_0 (биты с 9-го по 0-й) т.е. результат выровнен обычно - вправо.
Что это обозначает? Что такое PORTB?

Извеняюсь если вопросов много. Кому не сложно ответте.
В датащите не нашол адреса всех 40 ног. Только 21.

News 26.05.2012 21:24

5 Пункт вродеясно стало. PORTB это вымышленая переменная то-же что и ADCW.

News 27.05.2012 16:36

Вроде потихоньку вьежжаю.
Посмотрите на текст простейшей программы. Правильно?
Цитата:

main()
{
//Для краткой записи используем макросы
#define PORTA.1 A1
#define PORTA.2 A2
#define PORTA.3 A3
#define PORTA.4 A4
#define PORTA.5 A5
#define PORTA.6 A6
#define PORTA.7 A7
//Если на 2 ножке порта А присутствует логическая 1, то вывести на ножку 1 порта А логическую 1
if(A2) A1 = 1:
//Иначе вывести логическую единицу на ножку 3 порта А
else {A3 = 1;}
}

News 28.05.2012 18:03

Хех ошибку в макросах никто не нашол....

Stvol 28.05.2012 18:20

Есть ошибка. В «макросе» «нашОл» предпоследняя Е или Ё.

News 28.05.2012 20:19

Цитата:

#include <mega16.h>
Inicializacion()
{
//Делаем выходом ПОРТ А
DDRA=255;
//Делаем входом ПОРТ В
DDRB=0;
}
Main()
{
Inicializacion();
//Запускаем таймер 0 (Время переполнения 32МСЕК)
TCCR0=0b00000101;
while(TOV0){PORTA.0=0; PORTA.2=0; PORTA.4=0; PORTA.6=0; PORTA.1=1; PORTA.3=1; PORTA.5=1; PORTA.7=1; TIFR = 0x01;}
//Запускаем таймер 0 (Время переполнения 32МСЕК)
TCCR0=0b00000101;
while(TOV0){PORTA^=1; PORTA^=0; TIFR = 0x01;}
}
Написал такую прогу. Она должна чередовать каждый 2 светодиод а ПОРТЕ А с таймлингом в 32МКС

News 28.05.2012 20:45

Вложений: 1
ВМЛАБ ругается на любой загруженый проэкт.... Что делать?

Ильмир 28.05.2012 21:30

Мой совет тебе, лучше осваивай STM32 )))

хотя я тоже на tiny2313 учился мигать светодиодом :D
http://www.tehnari.ru/f115/t69344/
http://www.tehnari.ru/f115/t60259/in...tml#post688561

News 28.05.2012 21:49

Нет уж:) Мне АВР нравятся, к тому-же фундамент заложен... :)

News 30.05.2012 19:25

Обьясните ПЖЛ как CodeVisionAVR Evaluation V2.05.8 работать. Никак ХЕКС, ЛСТ файлы немогу получить, а без них програму не просимулировать.


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

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.