roboforum.ru

Технический форум по робототехнике.

 

запуск АЦП в атмеге 48

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

запуск АЦП в атмеге 48

Сообщение к561ЛА7 » 09 янв 2011, 01:03

Господа!
В атмеге 8 АЦП замечательно запускается так

ADMUX=0b00100001; //
ADCSRA.6=1;
while(ADCSRA.4==0);
a5=ADCH;

но в атмеге 48 содвижн ругается на строчки с ADCSRA.
что левая часть . нуждается в стрикт/юнион

как запустить АЦП в атмеге 48?
О любимый мой учитель АВР 123
Надавал ты мне советов, и что вышло, посмотри
Я теперь паяю платы, программирую МК
Заказал я их по почте, у Семенова М.К.
Аватара пользователя
к561ЛА7
 
Сообщения: 337
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: запуск АЦП в атмеге 48

Сообщение avr123.nm.ru » 09 янв 2011, 02:17

"любимый мой учитель АВР123!" рекомендует мастером код смастерить и посмотреть.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: запуск АЦП в атмеге 48

Сообщение к561ЛА7 » 09 янв 2011, 21:16

я так сразу и сделал, Учитель! . Сгенерил код, перекинул программу с атмеги 8 туда, но там он не идет. Хотя регистр называься так же. А поскольку я основываюсь на предположении, что если регистр называется также, то и на языке СИ все равно для какой атмеги писать, все равно должно бы работать, но оно не работает, и я совкершщенно не понимаю в чем тут дело.
О любимый мой учитель АВР 123
Надавал ты мне советов, и что вышло, посмотри
Я теперь паяю платы, программирую МК
Заказал я их по почте, у Семенова М.К.
Аватара пользователя
к561ЛА7
 
Сообщения: 337
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: запуск АЦП в атмеге 48

Сообщение avr123.nm.ru » 09 янв 2011, 21:48

дак сгенери сразу для меги48 без перекидки.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: запуск АЦП в атмеге 48

Сообщение к561ЛА7 » 09 янв 2011, 22:35

сгенерил, но запустить АЦП не могу. Строчки чтоработают в атмеге 8

ADMUX=0b00100001; //
ADCSRA.6=1;
while(ADCSRA.4==0);
a5=ADCH;



не работают в атмеге 48.
Последний раз редактировалось к561ЛА7 09 янв 2011, 22:35, всего редактировалось 1 раз.
О любимый мой учитель АВР 123
Надавал ты мне советов, и что вышло, посмотри
Я теперь паяю платы, программирую МК
Заказал я их по почте, у Семенова М.К.
Аватара пользователя
к561ЛА7
 
Сообщения: 337
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: запуск АЦП в атмеге 48

Сообщение Duhas » 09 янв 2011, 22:36

есть там разница в именах регистров.. есть...

Добавлено спустя 53 секунды:
есть там разница в именах регистров.. есть...

АВР123 вот вам и проблема... если пишешь на АСМ или на СИ но БЕЗ генератора - то все смотришь в ДШ...
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6341
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: запуск АЦП в атмеге 48

Сообщение avr123.nm.ru » 09 янв 2011, 22:38

Какая ж тут проблема если чел в генераторе кода не тот чип указывает.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: запуск АЦП в атмеге 48

Сообщение к561ЛА7 » 09 янв 2011, 22:42

Duhas писал(а):есть там разница в именах регистров.. есть...

Добавлено спустя 53 секунды:
есть там разница в именах регистров.. есть...

Атмега 8

// ADC initialization
// ADC Clock frequency: 500,000 kHz
// ADC Voltage Reference: AREF pin
// Only the 8 most significant bits of
// the AD conversion result are used
//ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84; // 62 êãö, 85- 31 êãö

Атиега 48

// ADC initialization
// ADC Clock frequency: 62,500 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: None
// Digital input buffers on ADC0: On, ADC1: On, ADC2: On, ADC3: On
// ADC4: On, ADC5: On
DIDR0=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84; // 62 êãö, 85- 31 êãö

по моему ADCSRA одинаково называется

Добавлено спустя 1 минуту 49 секунд:
avr123.nm.ru писал(а):Какая ж тут проблема если чел в генераторе кода не тот чип указывает.



#include <mega48.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x00
О любимый мой учитель АВР 123
Надавал ты мне советов, и что вышло, посмотри
Я теперь паяю платы, программирую МК
Заказал я их по почте, у Семенова М.К.
Аватара пользователя
к561ЛА7
 
Сообщения: 337
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: запуск АЦП в атмеге 48

Сообщение avr123.nm.ru » 09 янв 2011, 22:43

просто пишите так:
ADCSRA=(1<<6);
и будет работать.

В задаче 1 курса, в примерах манипулирования битами в разных компиляторах, сказано что запись типа ADCSRA.6 подходит не для всех регистров !

ПРЧЕМ !!! CVAVR прямо в ругани пишет что ему ТОЧКА не нравится. :ROFL:
Последний раз редактировалось avr123.nm.ru 09 янв 2011, 22:47, всего редактировалось 1 раз.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: запуск АЦП в атмеге 48

Сообщение к561ЛА7 » 09 янв 2011, 22:47

avr123.nm.ru писал(а):просто пишите так:
ADCSRA=(1<<6);
и будет работать.

В задаче 1 курса, в примерах манипулирования битами в разных компиляторах, сказано что запись типа ADCSRA.6 подходит не для всех регистров !


Фантастика, Учитель! А Вы не подскажите как писать вторую строчку?
О любимый мой учитель АВР 123
Надавал ты мне советов, и что вышло, посмотри
Я теперь паяю платы, программирую МК
Заказал я их по почте, у Семенова М.К.
Аватара пользователя
к561ЛА7
 
Сообщения: 337
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола

Re: запуск АЦП в атмеге 48

Сообщение avr123.nm.ru » 09 янв 2011, 22:51

маски это страница 5 курс Си для мк

примерно так
while((ADCSRA & 0b00010000) == 0);

или while((ADCSRA & (1<<(название бита))) == 0);

или while((ADCSRA & (1<<4)) == 0);

но обычно прерывание включают по окончании преобразования, как в примерах CVAVR - ADC8535

======

a5=ADCH;
тут наверно оба регистра надо читать и потом если нужно то масками и сдвинами оставлять то что в старшем байте
a5=ADCW;
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14200
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: запуск АЦП в атмеге 48

Сообщение к561ЛА7 » 09 янв 2011, 23:11

Спасибо, Учитель!
Работает всяко!
Правда на выражение
"или while((ADCSRA & (1<<4)) == 0);" сначала ругнулся invalid expression :)
О любимый мой учитель АВР 123
Надавал ты мне советов, и что вышло, посмотри
Я теперь паяю платы, программирую МК
Заказал я их по почте, у Семенова М.К.
Аватара пользователя
к561ЛА7
 
Сообщения: 337
Зарегистрирован: 08 дек 2009, 19:21
Откуда: Й-Ола


Вернуться в Микроконтроллеры

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

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

Mail.ru counter