генератор на меге8515
|
|
HiSER | Дата: Понедельник, 11.07.2011, 22:36 | Сообщение # 16 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| http://disk.tom.ru/nxk77qz
|
|
| |
Shakal | Дата: Вторник, 12.07.2011, 14:26 | Сообщение # 17 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| HiSER, спасибо) только можно еще помощь.. что именно нужно добавить в код чтоб 3-ей кнопкой менялось скважность хотяб 2 значения ? огромное спасибо
|
|
| |
HiSER | Дата: Среда, 13.07.2011, 10:39 | Сообщение # 18 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| Надо счетчик ставить в режим PWM top = ICR, но тогда со сменой частоты будет меняться и разрядность ШИМ'а.
|
|
| |
Shakal | Дата: Четверг, 14.07.2011, 16:05 | Сообщение # 19 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| HiSER, а как сделать чтобы минимальная частота была 1 герц? (нужно чтобы она за 1 уменьшалось так?)
|
|
| |
HiSER | Дата: Четверг, 14.07.2011, 19:22 | Сообщение # 20 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| нужно еще тогда и делителем счетчика управлять.
|
|
| |
Shakal | Дата: Понедельник, 18.07.2011, 17:29 | Сообщение # 21 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| HiSER, а как делитель в коде называеться? Добавлено (18.07.2011, 12:13) --------------------------------------------- HiSER, и еще как сделать кнопки + и - чтобы от динамической индикации опрос происходил для экономии портов ??? Добавлено (18.07.2011, 17:29) --------------------------------------------- блин не получаеться чтоб индикация работала вот для такой схемы!!!!!
http://disk.tom.ru/ypddvv2
|
|
| |
HiSER | Дата: Вторник, 19.07.2011, 18:57 | Сообщение # 22 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| Вместо R1, R2 должны быть диоды, анодом к кнопкам. PD7 подтянуть резистором на ~10k к VCC. Проверяешь уровень на PIND.7 в зависимости от отображаемого разряда и будет проверяемая кнопка. A-G, DP должны быть подключены через резисторы.
PS. И в чем смысл экономии пинов, если их при достаточно?
Сообщение отредактировал HiSER - Вторник, 19.07.2011, 18:57 |
|
| |
Shakal | Дата: Вторник, 19.07.2011, 20:49 | Сообщение # 23 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| HiSER, это у меня получилось у меня не почучаеться индикация когда использються транзисторы , схему я выкинул перед этим Добавлено (19.07.2011, 20:49) --------------------------------------------- HiSER, согласен) просто требования такие и бешеный чувак практики (
|
|
| |
HiSER | Дата: Среда, 20.07.2011, 11:38 | Сообщение # 24 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| за комментируй LCD_CATHODE
|
|
| |
Shakal | Дата: Среда, 20.07.2011, 16:39 | Сообщение # 25 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| HiSER, что то не помогла
|
|
| |
HiSER | Дата: Среда, 20.07.2011, 17:20 | Сообщение # 26 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| Посмотри в коде, инверсия на катоды должна быть
|
|
| |
Shakal | Дата: Среда, 20.07.2011, 18:19 | Сообщение # 27 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| HiSER, блин что то я убираю ее а смысла нету( у тебя остался же этот код .. можешь посмотреть очень буду благодарен ..
|
|
| |
HiSER | Дата: Среда, 20.07.2011, 21:12 | Сообщение # 28 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| Code interrupt [TIM0_OVF] void tmr0_ovf() { PORTC&=0xc0; PORTA=~led_buff[led_dig]; PORTC|=1<<led_dig; led_dig++; if (led_dig>5) led_dig=0; }
|
|
| |
Shakal | Дата: Среда, 20.07.2011, 22:31 | Сообщение # 29 |
Рядовой
Группа: Пользователи
Сообщений: 16
Статус: Offline
| логически вроде все правильно и какраз бегает 1 которая должна открывать транзисторы но нифига они не открываються ....
я уже наверное заколупал ....так вот нужно было схему собирать http://disk.tom.ru/3yh76q4 всеровно одни 8-ки
Code #include <mega8515.h> #include <delay.h> //#define LED_CATODE
typedef unsigned char byte; typedef unsigned int word; typedef unsigned long dword; typedef union { struct { byte low; byte high; }b; word val; }twb;
flash byte led_table[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
byte led_dig=0; twb pos; byte led_buff[6]; interrupt [TIM0_OVF] void tmr0_ovf() { PORTC&=0xc0; PORTA=~led_buff[led_dig]; PORTC|=1<<led_dig; led_dig++; if (led_dig>5) led_dig=0; } /*
interrupt [TIM0_OVF] void tmr0_ovf() { #ifdef LED_CATODE PORTC|=0x3f; PORTA=~led_buff[led_dig]; PORTC&=~(1<<led_dig); #else PORTC&=0xc0; PORTA=~led_buff[led_dig]; PORTC|=1<<led_dig;
#endif led_dig++; if (led_dig>5) led_dig=0;
} */ void led_freq() { dword t; byte i; i=6; t=pos.val; t=8000000/(t+1)/2; do { i--; if (t>0) { led_buff[i]=led_table[t%10]; t=t/10; }else{ led_buff[i]=led_table[10]; } } while(i!=0); }
void main(void) { PORTA=0x00; DDRA=0xff; PORTC=0x3f; DDRC=0x3f; PORTB=0; DDRB=0; PORTD=0x00; DDRD=0x7F;
TCCR0=3; TCNT0=0;
TCNT1H=0; TCNT1L=0; ICR1H=0; ICR1L=255; TCCR1A=0x40; TCCR1B=0x19;
TIMSK=2;
ACSR=0x80;
#asm("sei")
pos.val=255;
while(1) {
if (PIND.7!=0 && PINC.0==0) { if (pos.val<1023) pos.val++; } if (PIND.7!=0 && PINC.1==0) { if (pos.val>1) pos.val--; } ICR1H=pos.b.high; ICR1L=pos.b.low;
led_freq();
delay_ms(50); }
}
Сообщение отредактировал Shakal - Среда, 20.07.2011, 22:42 |
|
| |
HiSER | Дата: Четверг, 21.07.2011, 12:51 | Сообщение # 30 |
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Статус: Offline
| http://disk.tom.ru/41rrzgu
|
|
| |