Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void setup() {
- //konfiguracja ARDUINO
- #include <math.h>
- #include <fix_fft.h>
- DDRA |= B11111111; //ustaw caly port A jako OUTPUT, ukladowo sluzy jako sterowanie wysokoscia kolumny zerem 22 -> 29
- DDRC |= B11111111; //ustaw caly port C jako OUTPUT, ukladowo sluzy jako sterowanie zasilaniem kolumny jedynka 37 -> 30
- //ustaw przerwania timer1 co 400 Hz
- TCCR1A = 0; // set entire TCCR1A register to 0
- TCCR1B = 0; // same for TCCR1B
- TCNT1 = 0; //initialize counter value to 0
- // ustaw rejestr timer1 na zliczanie 400 Hz
- OCR1A = 39;// = (16*10^6) / (391*1024) - 1 ; 391*1024 ~ 400000
- TCCR1B |= (1 << WGM12); // wlacz tryb CTC - Clear Timer on Compare
- TCCR1B |= (1 << CS12) | (1 << CS10); // Ustaw bity CS10 i CS12 dla preskalera 1024
- TIMSK1 |= (1 << OCIE1A); // wlacz tryb timer compare interrupt
- //The Power Reduction Timer/Counter1 bit, PRTIM1, in “PRR0 – Power Reduction Register 0” on page 55 must be written to zero to enable Timer/Counter1 module.
- PRR0 |= (0 << PRTIM1); //ustaw 0 na PRTIM1 aby wlaczyc modul Timer/Counter1 wg instrukcji ATMEGA
- sei(); //zezwól na przerwania
- }
- void loop() {
- // maski oraz tablice danych
- int wysokosc_kolumny_1[8] = {254 , 253 , 251 , 247 , 239 , 223 , 191 , 127}; // tabela wartosci uzywanych do wyswietlenia wysokosci kolumny LED (tylko szczyt)
- int wysokosc_kolumny_2[8] = {254 , 252 , 248 , 240 , 224 , 192 , 128 , 0}; // tabela wartosci uzywanych do wyswietlenia wysokosci kolumny LED (kolumna wypelniona)
- for (int a = 0; a <= 7; a++) //rozpocznij petle for, przy kazdym kolejnym rozpoczeciu petli zwieksz a o 1
- {
- PORTA = wysokosc_kolumny_1[a];
- delay(125);
- }
- }
- ISR(TIMER1_COMPA_vect){//obsługa przerwania timer1 - timer1 compare interrupt service routine. Jedno przerwanie jedno przesuniecie bitu
- if(PORTC != B10000000) // jezeli PORTC jest rozny od 0 to :
- {
- PORTC = PORTC << 1; //przesun bit o jeden w lewo
- }
- else {
- PORTC = B00000001; // jezeli PORTC jest rowny zero ustaw jedynke na osmy bit
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement