|
Генератор импульсов на Attiny 45, Прямоугольный сигнал. Как получить? |
|
|
|
Oct 30 2012, 18:56
|
Группа: Новичок
Сообщений: 5
Регистрация: 30-10-12
Пользователь №: 74 169

|
Форумчане, здравствуйте! Простите за нубский вопрос. Спасите меня. Сам я разработчик-схемотехник, но в программировании микроконтроллеров понимаю мало, а дело срочное. Итак, у меня есть всё аппаратное и программное обеспечение: распаянный на колодке контроллер Attiny45 без кварца, программатор SM-4, софт asisp для чтения и записи флеш и еепром, (т.е. сам я прошить-считать-стереть и.т.д. умею). Есть установленная Atmel Studio 6.0. Есть всё. Знаний про написание кода нет. Требуется: получить с 2х ножек контроллера меандр скважностью 2, частота 50 кГц. Меандры должны идти в противофазе. т.е. если на одной ноге 0 то на другой в это время должен быть 1. Вот и всё, вот и вся задача. Подал питание - и нарубается меандр. Я чувствую, что это просто, а Си и Ассемблер забыл)))) Или чем вы его там пишите... Ещё конкретнее: как написать программу, компилировать, а лучше, простите за наглость, дайте текст или уже готовую прошивку, но с исходником, чтобы я мог менять частоту и длительность импульсов. Горю, ребята., спасите, на самостоятельное изучение этого вопроса нет времени, но я займусь. Пишите прямо тут, а ещё лучше - прямо мне в мыло ofts@yandex.ru Спасибо всем заранее.
|
|
|
|
|
 |
Ответов
|
Nov 23 2012, 10:12
|
Группа: Новичок
Сообщений: 8
Регистрация: 23-11-12
Пользователь №: 74 525

|
Здравствуйте. У меня те-же "грабли" что и у автора, и мне очень полезна эта тема для освоения. Предыстория: На одном из англо-язычных форумах наткнулся на одну схему с описанием и "исходником" устройства на Attiny85 которое может мне помочь так как нужно портативное устройство. Автор, так-же как и я не разбирается в программировании, а в нашем городе на радио рынке Attiny нет но есть Atmega16A и Atmega8. Я пытался пере компилировать в CVAVR код но не получается Код /***************************************************** Project : Sweeper generator Version : 1.0 Date : 28/02/2012 Author : Chip type : ATtiny85 Clock freq. : 8,000000 MHz (Internal) *****************************************************/
#include <ATtiny85.h> #include <inavr.h>
// Standard defines +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define HIGH 1 #define LOW 0
#define TRUE 1 #define FALSE 0
#define ON 0 #define OFF 1
#define BIT0 0x01 #define BIT1 0x02 #define BIT2 0x04 #define BIT3 0x08 #define BIT4 0x10 #define BIT5 0x20 #define BIT6 0x40 #define BIT7 0x80
#define MIN_FREQ 10 // 3,2Khz #define MAX_FREQ 1000 // 32Hz
// I/O Port pins ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++
#define LED_ON PORTB &= (~BIT3) #define LED_OFF PORTB |= BIT3
#define PWM_HIGH PORTB |= BIT0 #define PWM_LOW PORTB &= (~BIT0)
#define BUTTON_IN PINB & BIT4
// Global variables +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
volatile unsigned long pwm_step; volatile unsigned int pwm_counter, pwm_frequency; volatile unsigned char direction;
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++ // ++ Interrupts // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++
void timer0_ovf_isr(void) __interrupt[TIMER0_OVF_vect] //error missing"{" { if (pwm_counter) { pwm_counter++; if (pwm_counter > (pwm_frequency/2)) PWM_HIGH; else PWM_LOW; if (pwm_counter >= pwm_frequency) pwm_counter=0; } }
void timer1_ovf_isr(void) __interrupt[TIMER1_OVF_vect] { if (!pwm_counter) { if (direction) { pwm_frequency++; if (pwm_frequency >= MAX_FREQ) direction=0; } else { pwm_frequency--; if (pwm_frequency <= MIN_FREQ) direction=1; }
pwm_counter=1; }
if (pwm_step) pwm_step--; }
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++ // ++ Main // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++
void main(void) { // Ports initialization PORTB=0x3F; DDRB=0x09; // Timer/Counter 0 initialization TCCR0A=0x00; TCCR0B=0x01; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization PLLCSR=0x00; TCCR1=0x01; GTCCR=0x00; TCNT1=0x00; OCR1A=0x00; OCR1B=0x00; OCR1C=0x00; // External Interrupts initialization GIMSK=0x00; MCUCR=0x00; // Timers/Counters Interrupts initialization TIMSK=0x06; // Universal Serial Interface initialization USICR=0x00; // Analog Comparator initialization ACSR=0x80; ADCSRB=0x00;
// Main loop while (1) { __disable_interrupt(); LED_OFF;
while (BUTTON_IN); LED_ON; pwm_step=1832000; // 1 Min. count pwm_counter=1; // Start counter pwm_frequency=MIN_FREQ; // Min. start freq. direction=0; // Count up
__enable_interrupt();
while (pwm_step); } } Ошибка missing"{" Принцип работы такой: при подаче питания на устройство лампа (PB3) не горит устройство в режиме ожидания при нажатии кнопки (PB4) лампа загорается и с вывода (PB0) генерируется сигнал ~3.2 кГц на 1 минуту. От автора " It's designed to sweep from 32Hz to 3,2Khz for 1 minute when you press the button." Помогите пере компилировать для Atmega16A
|
|
|
|
Сообщений в этой теме
mamuka60 Генератор импульсов на Attiny 45 Oct 30 2012, 18:56 kovigor Цитата(mamuka60 @ Oct 30 2012, 21:56) Пиш... Oct 30 2012, 20:44 mamuka60 [quote name='kovigor' date='Oct 31 201... Oct 31 2012, 19:26  kovigor Цитата(mamuka60 @ Oct 31 2012, 22:26) Спа... Oct 31 2012, 21:46   mamuka60 Цитата(kovigor @ Nov 1 2012, 01:46) Подош... Nov 1 2012, 06:57    Valek Цитата(mamuka60 @ Nov 1 2012, 10:57) PORT... Nov 1 2012, 08:14    kovigor Цитата(mamuka60 @ Nov 1 2012, 10:57) Поск... Nov 1 2012, 08:33 ae_ Цитата(mamuka60 @ Oct 31 2012, 03:56) Под... Nov 1 2012, 13:02 kovigor Цитата(ae_ @ Nov 1 2012, 16:02) В tiny45 ... Nov 1 2012, 21:44 mamuka60 Спасибо всем, друзья! Завтра попробуем. Выложу... Nov 1 2012, 19:00 mamuka60 Большое спасибо всем и особенно kovigor, мы получи... Nov 2 2012, 15:23 _Артём_ Цитата(mamuka60 @ Nov 2 2012, 17:23) Но ... Nov 2 2012, 15:28 kovigor Цитата(mamuka60 @ Nov 2 2012, 18:23) Боль... Nov 2 2012, 16:18 kovigor Цитата(20AmpMax @ Nov 23 2012, 14:12) Пом... Nov 23 2012, 11:43 20AmpMax А вот все равно Спасибо !
А вот все равно С... Nov 23 2012, 13:08 kovigor Цитата(20AmpMax @ Nov 23 2012, 17:08) А в... Nov 23 2012, 13:12 20AmpMax Конечно любой главное чтоб генерировал Nov 23 2012, 13:14 kovigor Цитата(20AmpMax @ Nov 23 2012, 17:14) Кон... Nov 23 2012, 13:18 20AmpMax вот спасибо спасибо спасибо.
А с чем Attiny85 ... Nov 23 2012, 13:36 kovigor Цитата(20AmpMax @ Nov 23 2012, 17:36) вот... Nov 23 2012, 13:43 20AmpMax Если будет интересно то линк на описание проблемы
... Nov 23 2012, 13:49 kovigor Цитата(20AmpMax @ Nov 23 2012, 17:49) Есл... Nov 23 2012, 13:53 20AmpMax Работает !!!!!!!!... Nov 23 2012, 14:18 kovigor Цитата(20AmpMax @ Nov 23 2012, 18:18) Раб... Nov 23 2012, 16:10 20AmpMax Да но не совсем нужна ешё техническая доработка (о... Nov 23 2012, 16:32 kovigor Цитата(20AmpMax @ Nov 23 2012, 20:32) Man... Nov 23 2012, 16:51 20AmpMax Завелась. Работает.
Да я сам не вожу у меня и пра... Nov 23 2012, 17:10 kovigor Цитата(20AmpMax @ Nov 23 2012, 20:10) Зав... Nov 23 2012, 17:14
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|