Недавно решил разобраться с МК. С языком СИ вообще не знаком. Первые программки пошли на ура) помигать светодиодом, кнопка и т.п. Взялся за более сложное. Хочу вывести на матрицу 7х8 с общим анодом, при помощи tiny2313 хотябы букву, в последствии бегущую строку. Суть проблемы в следующем, нашел кучу статей по динамической индикации. Самая полная и разжеванная показалась мне эта: http://arv.radioliga.com/content/view/172/49/
Сделал. Зашиваю на МК никаких результатов... а код компилируется без ошибок.. что не так? помогите чайнику...
Вот исходник, что пытаюсь впихнуть)
CODE:
#include <avr/io.h>
#include <avr/iotn2313.h>
//#include <avr/delay.h>
#define F_CPU 8000000UL // 8МГц
#define SCR_SZ 7 /* число знакомест дисплея */
#define ROWS PORTB /* порт «строк» дисплея, т.е. управления сегментами */
#define COLS PORTD /* порт управления «столбцами», т.е. общими катодами */
#define SKIP 15 /* число пропускаемых прерываний таймера */
unsigned char SCR[SCR_SZ]={0x80, 0x77, 0x77, 0x77, 0x80}; /*Массив вывода символа (A)*/
ISR (TIMER0_OVF_vect)
{
static unsigned char pos = 0;
static unsigned char skip = SKIP;
if (--skip) return;
skip = SKIP;
COLS = 0x00;
ROWS = SCR[pos];
COLS |= (1 << pos);
if(++pos == SCR_SZ) pos = 0;
}
int main(void)
{
DDRB=0xff; //инициализация как выводы
DDRD=0xff; //инициализация как выводы
TIMSK=0x10;
TCCR0B=0x01;
TCNT0=0x00;
TIFR = 0x10;
while(1)
{
}
}
#include <avr/io.h>
#include <avr/iotn2313.h>
//#include <avr/delay.h>
#define F_CPU 8000000UL // 8МГц
#define SCR_SZ 7 /* число знакомест дисплея */
#define ROWS PORTB /* порт «строк» дисплея, т.е. управления сегментами */
#define COLS PORTD /* порт управления «столбцами», т.е. общими катодами */
#define SKIP 15 /* число пропускаемых прерываний таймера */
unsigned char SCR[SCR_SZ]={0x80, 0x77, 0x77, 0x77, 0x80}; /*Массив вывода символа (A)*/
ISR (TIMER0_OVF_vect)
{
static unsigned char pos = 0;
static unsigned char skip = SKIP;
if (--skip) return;
skip = SKIP;
COLS = 0x00;
ROWS = SCR[pos];
COLS |= (1 << pos);
if(++pos == SCR_SZ) pos = 0;
}
int main(void)
{
DDRB=0xff; //инициализация как выводы
DDRD=0xff; //инициализация как выводы
TIMSK=0x10;
TCCR0B=0x01;
TCNT0=0x00;
TIFR = 0x10;
while(1)
{
}
}