Hallo liebe Gemeinde,
nach langem suchen probieren und tüfteln wende ich mich nun an euch :)
Ich möchte mit dem Attiny13 einen Motor mit PWm steuern und dazu noch
einige LEDs ansteuern.
Die PWM hab ich jetzt nach einigem probieren hinbekommen, nur mit den
LEDs hab ich noch meine Probleme.
Ich habe einen MAX7221 oder wahlweise MAX7219 und möchte die LEDs damit
zum leuchten/blinken bringen. Da der Attiny13 über keine HW SPI verfügt
habe ich mich also auf die Suche nach SW SPI Lösungen gemacht, nur
leider bisher ohne nennenswerten Erfolg.
Zur Zeit nutze ich die serpa.h und serpa.c von folgender Seite.
http://www.rn-wissen.de/index.php/Portexpander_am_AVR#Ohne_SPI-Hardware
Dabei sieht man am Anfang auch kurz ein CLK und CS Signal am Oskar aber
ansonsten nichts.
1 | void serpa_init (void)
|
2 | {
|
3 | /* Verwendete Ports auf OUT */
|
4 | DDRB |= (1<<DDB2 )|(1<<DDB3)|(1<<DDB4);
|
5 |
|
6 |
|
7 | /* SCR und RCK auf definierten Level HIGH */
|
8 | PORTB |= (1<<PB2);
|
9 | PORTB |= (1<<PB4);
|
10 |
|
11 |
|
12 | }
|
1 | void serpa_out (void)
|
2 | {
|
3 | unsigned char anz = SERPA_SIZE;
|
4 | unsigned char* serp = serpa+SERPA_SIZE;
|
5 |
|
6 | do
|
7 | {
|
8 | unsigned char bits;
|
9 | unsigned char data = *--serp;
|
10 |
|
11 | /* 8 Bits pro Byte rausschieben */
|
12 | for (bits = 8; bits > 0; bits--)
|
13 | {
|
14 | PORTB &= ~(1<<PB3);
|
15 | if (data & 0x80)
|
16 | {
|
17 | PORTB |= (1<<PB3);
|
18 | }
|
19 |
|
20 | data <<= 1;
|
21 | /* Strobe an SCK schiebt Daten im Gaensemarsch */
|
22 | /* um 1 Position weiter durch alle Schieberegister */
|
23 | PORTB &= ~(1<<PB2);
|
24 | PORTB |= (1<<PB2);
|
25 | }
|
26 | }
|
27 | while (--anz > 0);
|
28 |
|
29 | /* Strobe an RCK bringt die Daten von den Schieberegistern in die Latches */
|
30 | PORTB &= ~(1<<PB4);
|
31 | PORTB |= (1<<PB4);
|
32 | }
|
Kann mir jemand sagen ob die Koniguration soweit ok ist?
Wie funktioniert die Übergabe genau?
Momentan steht in meiner main fogendes
1 | serpa[SERPA_SIZE]=0b01010101;
|
2 | serpa_out();
|
ist der Funktionsaufruf so richtig oder in welcher Form werden die
Segmente angesteuert?
Hoffe ihr könnt mir helfen.
Liebe Grüße
Jan