Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

Леонид Иванович писал(а):Например, Keil.
а там для AVR проги писать мона ?
Tell Me The Truth
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

mr.boroda писал(а): картинку не получилось вставить
программатором громова и uniprof через Com порт получается программировать,
а подключаю к плате usbasp и avrdude - ошибка чтения!
я так понял, что вы не смогли прошить камень вашего программатора через тот разъем, через который на сайте написано, поэтому вытащили и прошили через панель и громова так?
потом вставили на место и пытаетесь с его помощью прошить другой камень так?
так вот два вопроса возникает :
1.вы драйверы ставили для usbasp?
2.как устройство определился программатор?
и на засыпку вопрос как вы подаете питание на программируемый Мк?
В поисках истины человек развивается.
Контактная информация:
Реклама
Встал на лапы
Сообщения: 124
Зарегистрирован: Вт июл 10, 2012 00:13:27
Откуда: Белгородская обл.

Сообщение mr.boroda »

vitalik_1984 писал(а):
mr.boroda писал(а): картинку не получилось вставить
программатором громова и uniprof через Com порт получается программировать,
а подключаю к плате usbasp и avrdude - ошибка чтения!
я так понял, что вы не смогли прошить камень вашего программатора через тот разъем, через который на сайте написано, поэтому вытащили и прошили через панель и громова так?
потом вставили на место и пытаетесь с его помощью прошить другой камень так?
так вот два вопроса возникает :
1.вы драйверы ставили для usbasp?
2.как устройство определился программатор?
и на засыпку вопрос как вы подаете питание на программируемый Мк?
программатор заработал после танцев с бубном)). Замкнул перемычку J3, поставил последние дрова. Теперь шьет через казарму, но переодически вылазит ошибка чето типа error setings usbasp isp clock, которая на прошику вроде не влияет.
Питание раздельное на программатор и плату
Вопрос. Почему светодиод на PD2 у меня светит тусклее чем остальные на PD0,PD1,PD3? Резисторы все одинаковые стоят... перекидываю светодиод на другой бит - нормально светит...
Изображение
Изображение
Изображение
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

FreshMan писал(а):а там для AVR проги писать мона ?
Нет, только ARM, Cortex-M, Cortex-R, 8051, C166, and 251 processor families.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Опа, я думал что Keil и AVR поддерживает. Просто его расхваливали как универсальный. Будем знать...
Реклама
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Ср ноя 17, 2010 15:38:40

Сообщение mrkea »

Ногой микроконтроллера AVR можно вкл/выкл ЖКИ дисплей(HD44780) и его подсветку?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3874
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Дисплей можно, подсветку - через ключ. Смотрите ток потребления дисплея, его подсветки и сколько может выдать нога контроллера (AVR - max 40mA) в даташитах.
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Конечно можно. Только буфер поставить, транзисторный ключ.
Docendo discimus
Контактная информация:
Встал на лапы
Сообщения: 124
Зарегистрирован: Вт июл 10, 2012 00:13:27
Откуда: Белгородская обл.

Сообщение mr.boroda »

народ, подскажите по 1wire...не получается ничерта. Один датчик ds18b20 на PD.6 attyny2313...

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

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.9 Evaluation
Automatic Program Generator
© Copyright 1998-2012 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 20.07.2012
Author  : 
Company : 
Comments: 


Chip type               : ATtiny2313
AVR Core Clock frequency: 12,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 32
*****************************************************/

#include <tiny2313.h>

#include <1wire.h>
#include <ds18b20.h>
#include <delay.h>

// Declare your global variables here
unsigned char h[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char msek, sek, min,des,ed,des1,ed1,t0,t1,k,devices,temp,temp1;
// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
// Place your code here
//t0++;
//if (t0==1){PORTD=0b00010000;PORTB=h[ed];};
//if (t0==3){PORTD=0b00001000;PORTB=h[des];};
//if (t0==5){PORTD=0b00000010;PORTB=h[ed1];};
//if (t0==9){PORTD=0b000000001;PORTB=h[des1];t0=0;};
//if (t0==2||4||6||8){PORTD=0xFF;PORTB=0xFF;};
}

// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
// Place your code here
//t1++;
//k++;
  //    if (t1==100) {msek++;t1=0;}; 
      //if (k==255 & (PIND.6==0)) {min++;k=0;};
  //    if (msek==100){sek++;msek=0;};
  //    if (sek==60) {min++;sek=0;};
   //   if (min==99){min=0;};

}

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port A initialization
// Function: Bit2=In Bit1=In Bit0=In 
DDRA=(0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit2=T Bit1=T Bit0=T 
PORTA=(0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port D initialization
// Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRD=(0<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
// State: Bit6=P Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTD=(1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1500,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (1<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0A=0x01;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1500,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x46;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<TOIE1) | (1<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (0<<TOIE0) | (1<<OCIE0A);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=(0<<INT1) | (0<<INT0) | (0<<PCIE);
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

// USI initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC);

// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
DIDR=0x00;
devices=w1_init();

// Global enable interrupts
#asm("sei")

while (1)
      {
      //if(sek>=10){des=(sek/10);} else {des=0;};
      //ed=sek-(des*10);
      //if(min>=10){des1=(min/10);} else {des1=0;};
      //ed1=min-(des1*10);   
      temp = (ds18b20_temperature());
      if(temp>=1000){des1=temp/1000;}else{des1=0;};
      if(temp>=100){ed1=((temp-(des1*1000))/100);};      
      if(temp>=10){des=((temp-((des1*1000)+(ed1*100))/10));};
      if(temp>=1){ed=(temp-((des1*1000)+(ed1*100)+(des*10)));};
      t0++;
if (t0==1){PORTD=0b00010000;PORTB=h[ed];};
if (t0==3){PORTD=0b00001000;PORTB=h[des];};
if (t0==5){PORTD=0b00000010;PORTB=h[ed1];};
if (t0==9){PORTD=0b000000001;PORTB=h[des1];t0=0;};
if (t0==2||4||6||8){PORTD=0xFF;PORTB=0xFF;};
      }
}
или дайте исходник на С посмотеть у кого есть
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Если датчик висит на PD6, то какого хэ:

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

PORTD=0b000000001
...
PORTD=0xFF
?

И, раз уж используете прерывания, то сделать:

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

asm("cli");
      temp = (ds18b20_temperature());
asm("sei");
Docendo discimus
Контактная информация:
Встал на лапы
Сообщения: 124
Зарегистрирован: Вт июл 10, 2012 00:13:27
Откуда: Белгородская обл.

Сообщение mr.boroda »

а у кого есть пример с библиотекой ds18b20.h?
Встал на лапы
Сообщения: 124
Зарегистрирован: Вт июл 10, 2012 00:13:27
Откуда: Белгородская обл.

Сообщение mr.boroda »

в общем переписал))) теперь постоянно светится цифра 241 :))) НО! в протеусе все работает. У кого есть библиотека ds18b20 скиньте плз!
код

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

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.9 Evaluation
Automatic Program Generator
© Copyright 1998-2012 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : 
Version : 
Date    : 20.07.2012
Author  : 
Company : 
Comments: 


Chip type               : ATtiny2313
AVR Core Clock frequency: 12,000000 MHz
Memory model            : Tiny
External RAM size       : 0
Data Stack size         : 32
*****************************************************/

#include <tiny2313.h>

// 1 Wire Bus interface functions
#include <1wire.h>

// DS1820 Temperature Sensor functions
#include <ds18b20.h>
#include <delay.h>
// Declare your global variables here

void main(void)
{
// Declare your local variables here
unsigned char h[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char des,ed,des1,ed1,temp,temp1;
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=(1<<CLKPCE);
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port A initialization
// Function: Bit2=In Bit1=In Bit0=In 
DDRA=(0<<DDA2) | (0<<DDA1) | (0<<DDA0);
// State: Bit2=T Bit1=T Bit0=T 
PORTA=(0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization
// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRB=(1<<DDB7) | (1<<DDB6) | (1<<DDB5) | (1<<DDB4) | (1<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);
// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port D initialization
// Function: Bit6=In Bit5=In Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out 
DDRD=(0<<DDD6) | (0<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
// State: Bit6=T Bit5=T Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0 
PORTD=(0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (0<<CS10);
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<TOIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<ICIE1) | (0<<OCIE0B) | (0<<TOIE0) | (0<<OCIE0A);

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=(0<<INT1) | (0<<INT0) | (0<<PCIE);
MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);

// USI initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC);

// USART initialization
// USART disabled
UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);
DIDR=0x00;


// 1 Wire Bus initialization
// 1 Wire Data port: PORTD
// 1 Wire Data bit: 5
// Note: 1 Wire port settings are specified in the
// Project|Configure|C Compiler|Libraries|1 Wire menu.
w1_init();

while (1)
      {
      // Place your code here 
      w1_init();
      temp = (ds18b20_temperature(0));
      ed=temp%10;
      des=((temp%100)-ed)/10;
      ed1=((temp%1000)-ed-(des*10))/100;
      des1=(temp-(ed1*100)-ed-(des*10))/100;
      delay_ms(750);
PORTD.4=1;PORTB=h[ed];
delay_ms(1);
PORTD.4=0;PORTB=0xFF;
PORTD.3=1;PORTB=h[des];
delay_ms(1);
PORTD.3=0;PORTB=0xFF;
PORTD.1=1;PORTB=h[ed1];
delay_ms(1);
PORTD.1=0;PORTB=0xFF;
PORTD.0=1;PORTB=h[des1];
delay_ms(1);
PORTD.0=0;PORTB=0xFF;
      }
}
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

У вас

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

unsigned char des,ed,des1,ed1,temp,temp1;
а функция

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

float ds18b20_temperature(unsigned char *addr)
Docendo discimus
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Пояснение если тип используемой переменной отличается от заявленной, особенно в меньшую сторону, должна появиться ошибка компилятора, даже если она не появляется, то дальнейшие действия просты - переменная подрезается под необходимый размер, таким образом реальный результат теряется.И вполне возможно, что вам и будет показывать одно и то же число.
Если результат больше, чем 255 всегда будет подставлять (результат-255) в дальнейшие выражения.
Примерно так.Точнее мастера скажут :)
В поисках истины человек развивается.
Контактная информация:
Встал на лапы
Сообщения: 124
Зарегистрирован: Вт июл 10, 2012 00:13:27
Откуда: Белгородская обл.

Сообщение mr.boroda »

что можно использовать как альтернативу реле в микроконтроллерных схемах? Нужно подключить нагрузку 220в от 100Вт к схеме ? в меня на выходе стоит ключ из кт 3102... думал туда реле подцепить... а у него размер большеват. как подключить симистор и какой?
Вымогатель припоя
Аватара пользователя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Сообщение zero648 »

Можно оптосимистор вот такой:
Вложения
S201S05V.pdf
(63.98 КБ) 427 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

есть ли программы отладчики кто пишет на Си для АVR ?......, чтобы можно было посмотреть как двигается рабочая точка во время исполнения проги :tea:
Tell Me The Truth
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Студия неплохо справляется только нужно смотреть ограничения симуляции для конкретного контроллера.
В поисках истины человек развивается.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

Сообщение FreshMan »

а разве в студии можно пиСать на См ? :))
Tell Me The Truth
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

не хочу вас огорчать, но на см нельзя, но зато точно можно на си.
В поисках истины человек развивается.
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»