Hallo Forumsgemeinde,
seit einigen Wochen bin ich begeisterter yC Bastler. Gar nicht so
einfach sich das Ganze im Selfmade Prinzip beizubringen. Nach dem das
mit den LED rumspielen einigermaßen klappt, benötige ich mehr Ports für
weitere Funktionen. Aus diesem Grund habe ich mir die im Thema
angegebenen Schieberegister zugelegt.
Wie ihr euch schon denken könnt, es läuft nicht. Ziel ist es, mit einem
Atmega8 insgesamt 4 Schieberegister unabhängig voneinander anzusteuern.
Allerdings scheitert es schon bei einem.
1 | void IC (uint8_t Wert)
|
2 | {
|
3 | PORTD |= (1<<PORT_SCLR);
|
4 | for (int i = 8; i > 0; i--)
|
5 | {
|
6 | PORTD &=~ (1<<PORT_SER);
|
7 | if (Wert & 0x80)
|
8 | {
|
9 | PORTD |= (1<<PORT_SER);
|
10 | }
|
11 | Wert <<= 1;
|
12 | PORTD &=~ (1<<PORT_SCK);
|
13 | PORTD |= (1<<PORT_SCK);
|
14 | }
|
15 | PORTD &=~ (1<<PORT_RCK);
|
16 | PORTD |= (1<<PORT_RCK);
|
17 | PORTD &=~ (1<<PORT_SCLR);
|
18 | }
|
19 |
|
20 | int main(void)
|
21 | {
|
22 |
|
23 | init();
|
24 | uint8_t Test = 30;
|
25 | int Zahl = 0;
|
26 |
|
27 | while(1)
|
28 | {
|
29 |
|
30 | IC(Test);
|
31 | _delay_ms(1000);
|
32 | Test++;
|
33 | .
|
34 | .
|
35 | .
|
36 | .
|
37 | .
|
Zur Zeit gibt das Schieberegister nur den vorgegebenen Wert aus(Also
zeigt 30 binär an). Dieser will ich aber wie im Code verändern und das
Schieberegister soll sich danach anpassen, tut es aber nicht.
Vielen Dank schon mal im voraus für eure Hilfe.