Nackdelen med swech kort är att det inte finns en enda lysdiod som är direktkopplad till någon processorpinne. För att få något att fungera på det kortet måste man shifta ut bitar seriellt från processorn - något som kan vara lite krångligt att få till i början om man inte prorammerat en processor förr. Men du får fråga Swech om varför output-enable pinnarna på shiftregistren är oanslutna? Det ska de inte vara!
Du behöver studera mer grundläggande saker först, och lägga åt sidan de detaljerade frågorna om dimning osv. till en början. Har du installerat WINAVR och AVRStudio4? Kan du ansluta programmeraren och få kontakt med programmet? (läsa av processorns ID t.ex)? Lånat en bok om C-programmering och skrivit några rader.... (om du inte vill prova assembler först).
Exempel på en programsnutt som kanske kan vara till hjälp:
Kod: Markera allt
//---------------- standardbibliotek ------------------
#include <avr/io.h>
#include <util/delay.h>
#include <util/delay_basic.h>
/* definiera pinnar på processorn .
* (1<< BIT) tilldelar VÄRDET av en bit.
* T.ex BIT=5 ger värdet 32. */
// färger
#define OUTPUT_BLUE (1<<PB3)
#define OUTPUT_GREEN (1<<PB4)
#define OUTPUT_RED (1<<PB5)
// shiftregister - styr lysdiodernas färger i kolumner
#define CLOCK (1<<PB2) // shiftregister klocka (SCK)
#define STROBE (1<<PB6) // shiftregister strobe (STR)
// lysdioder - rader
#define RAD0 (1<<PA0) // motsvarar pinne PA0 - dvs LED0 i schemat.
#define RAD1 (1<<PA1)
#define RAD2 (1<<PA2)
#define RAD3 (1<<PA3)
#define RAD4 (1<<PA4)
#define RAD5 (1<<PA5)
#define RAD6 (1<<PA6)
#define RAD7 (1<<PA7) // motsvarar pinne PA7 - dvs LED7 i schemat.
// funktion som skickar ut data till shiftregistren
// red,blue,green innehåller var och en 8 bitar data.
// varje bit tänder en LED i den kolumnen
void skicka_data(char red, char blue, char green) {
// SKRIV ALGORITM HÄR
}
/**** huvudprogrammet ****/
int main(void) {
// initiering av portar (se kapitel 12 i databladet - särskilt 12.2.1)
DDRA = 0b11111111; // alla pinnar på port A ska vara utgångar
DDRB = 0b11111111; // alla pinnar på port B ska vara utgångar
// skicka ut en bit på shiftregister
PORTB = STROBE | OUTPUT_RED; // sätt röd färg
_delay_ms(1);
PINB = CLOCK; // toggla klockan
_delay_ms(1);
PINB = CLOCK;
while(1) { // ...loopa för evigt...
// tänd och släck olika diodrader med fördröjning emellan...
PORTA = RAD5; // tänd rad 5
_delay_ms(300);
PORTA = RAD6; // tänd rad 6
_delay_ms(300);
PORTA = RAD7; // tänd rad 7
_delay_ms(300);
PORTA = RAD1|RAD2|RAD3;
_delay_ms(500);
}
}
)
När du lärt dig att tända och släcka en lysdiod genom att programmera processorn , kan du gå vidare och försöka tända och släcka en rad , ändra färg osv... blinka i olika hastigheter...
Processorn heter Attiny461.
* Läs Per Foyer's bok "Mikrokontrollers" och kolla samtidigt i databladet för Attiny461.
Kanske AVR-programmering för nybörjare kan hjälpa, eller försök hitta andra liknande guider på nätet.
Och så läs lite om shiftregister (kan vara bra att förstå även om du inte ska använda sådana själv sedan): här är lite kunskapatt ta in om shiftregister. Och givetvis databladet för 4094.
Det gäller att plugga lite nu. När du väl lärt dig symbolerna i ritningen och hur kretsarna fungerar är det inte så svårt.