а там для AVR проги писать мона ?Леонид Иванович писал(а):Например, Keil.
Мелкие вопросы по МК и ПЛИС.
Tell Me The Truth
- Реклама
я так понял, что вы не смогли прошить камень вашего программатора через тот разъем, через который на сайте написано, поэтому вытащили и прошили через панель и громова так?mr.boroda писал(а): картинку не получилось вставить
программатором громова и uniprof через Com порт получается программировать,
а подключаю к плате usbasp и avrdude - ошибка чтения!
потом вставили на место и пытаетесь с его помощью прошить другой камень так?
так вот два вопроса возникает :
1.вы драйверы ставили для usbasp?
2.как устройство определился программатор?
и на засыпку вопрос как вы подаете питание на программируемый Мк?
В поисках истины человек развивается.
программатор заработал после танцев с бубном)). Замкнул перемычку J3, поставил последние дрова. Теперь шьет через казарму, но переодически вылазит ошибка чето типа error setings usbasp isp clock, которая на прошику вроде не влияет.vitalik_1984 писал(а):я так понял, что вы не смогли прошить камень вашего программатора через тот разъем, через который на сайте написано, поэтому вытащили и прошили через панель и громова так?mr.boroda писал(а): картинку не получилось вставить
программатором громова и uniprof через Com порт получается программировать,
а подключаю к плате usbasp и avrdude - ошибка чтения!
потом вставили на место и пытаетесь с его помощью прошить другой камень так?
так вот два вопроса возникает :
1.вы драйверы ставили для usbasp?
2.как устройство определился программатор?
и на засыпку вопрос как вы подаете питание на программируемый Мк?
Питание раздельное на программатор и плату
Вопрос. Почему светодиод на PD2 у меня светит тусклее чем остальные на PD0,PD1,PD3? Резисторы все одинаковые стоят... перекидываю светодиод на другой бит - нормально светит...



Нет, только ARM, Cortex-M, Cortex-R, 8051, C166, and 251 processor families.FreshMan писал(а):а там для AVR проги писать мона ?
Опа, я думал что Keil и AVR поддерживает. Просто его расхваливали как универсальный. Будем знать...
- Реклама
- Сообщения: 36
- Зарегистрирован: Ср ноя 17, 2010 15:38:40
Ногой микроконтроллера AVR можно вкл/выкл ЖКИ дисплей(HD44780) и его подсветку?
Дисплей можно, подсветку - через ключ. Смотрите ток потребления дисплея, его подсветки и сколько может выдать нога контроллера (AVR - max 40mA) в даташитах.
Конечно можно. Только буфер поставить, транзисторный ключ.
Docendo discimus
народ, подскажите по 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;};
}
}Если датчик висит на PD6, то какого хэ:
?
И, раз уж используете прерывания, то сделать:
Код: Выделить всё
PORTD=0b000000001
...
PORTD=0xFFИ, раз уж используете прерывания, то сделать:
Код: Выделить всё
asm("cli");
temp = (ds18b20_temperature());
asm("sei");Docendo discimus
в общем переписал))) теперь постоянно светится цифра 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;
}
}
У вас
а функция
Код: Выделить всё
unsigned char des,ed,des1,ed1,temp,temp1;Код: Выделить всё
float ds18b20_temperature(unsigned char *addr)Docendo discimus
Пояснение если тип используемой переменной отличается от заявленной, особенно в меньшую сторону, должна появиться ошибка компилятора, даже если она не появляется, то дальнейшие действия просты - переменная подрезается под необходимый размер, таким образом реальный результат теряется.И вполне возможно, что вам и будет показывать одно и то же число.
Если результат больше, чем 255 всегда будет подставлять (результат-255) в дальнейшие выражения.
Примерно так.Точнее мастера скажут
Если результат больше, чем 255 всегда будет подставлять (результат-255) в дальнейшие выражения.
Примерно так.Точнее мастера скажут
В поисках истины человек развивается.
что можно использовать как альтернативу реле в микроконтроллерных схемах? Нужно подключить нагрузку 220в от 100Вт к схеме ? в меня на выходе стоит ключ из кт 3102... думал туда реле подцепить... а у него размер большеват. как подключить симистор и какой?
есть ли программы отладчики кто пишет на Си для АVR ?......, чтобы можно было посмотреть как двигается рабочая точка во время исполнения проги 
Tell Me The Truth
Студия неплохо справляется только нужно смотреть ограничения симуляции для конкретного контроллера.
В поисках истины человек развивается.
не хочу вас огорчать, но на см нельзя, но зато точно можно на си.
В поисках истины человек развивается.


