AVR-Neuling
12.05.2014, 20:24
Hallo Community,
ich bin neu hier und erst seit einigen Wochen in die AVR-Programmierung in C eingestiegen. Aus diesem Grund ist das alles ziemlich neu für mich. Seit bitte nicht zu hart mit mir wenn ich in sämtliche Fettnäpchen trete ;-)
Ich versuche mich zur Zeit an einem Schieberegister Baustein
http://www.produktinfo.conrad.com/datenblaetter/150000-174999/155762-da-01-en-LOGIK_IC_M74HC595B1R_STM.pdf
mit einem ATmega8 anzusteuern. Hier der Code:
while(1)
{
uint8_t Wert;
PORTD |= (1<<PORT_SCLR);
for (int i = 8; i > 0; i--)
{
PORTD &=~ (1<<PORT_SER);
if (Wert & 0x80)
{
PORTD |= (1<<PORT_SER);
}
Wert <<= 1;
PORTD &=~ (1<<PORT_SCK);
PORTD |= (1<<PORT_SCK);
}
PORTD &=~ (1<<PORT_RCK);
PORTD |= (1<<PORT_RCK);
PORTD &=~ (1<<PORT_SCLR);
Was mir an dem Ganzen zur Zeit ein wenig unklar ist:
1. Wenn ich uint8_t Wert; vor der while-Schleife anlege, erkennt der Baustein die Variable Wert nicht und tut nichts, warum???
2. Wie kann ich die Variable Wert verändern??? Wenn ich nach diesem Programmcode ein Wert++; hinzufüge, bleibt die Variable bei ihrem vordefinierten Wert und ändert sich nicht!!!
Vielen Dank im Voraus !!!
ich bin neu hier und erst seit einigen Wochen in die AVR-Programmierung in C eingestiegen. Aus diesem Grund ist das alles ziemlich neu für mich. Seit bitte nicht zu hart mit mir wenn ich in sämtliche Fettnäpchen trete ;-)
Ich versuche mich zur Zeit an einem Schieberegister Baustein
http://www.produktinfo.conrad.com/datenblaetter/150000-174999/155762-da-01-en-LOGIK_IC_M74HC595B1R_STM.pdf
mit einem ATmega8 anzusteuern. Hier der Code:
while(1)
{
uint8_t Wert;
PORTD |= (1<<PORT_SCLR);
for (int i = 8; i > 0; i--)
{
PORTD &=~ (1<<PORT_SER);
if (Wert & 0x80)
{
PORTD |= (1<<PORT_SER);
}
Wert <<= 1;
PORTD &=~ (1<<PORT_SCK);
PORTD |= (1<<PORT_SCK);
}
PORTD &=~ (1<<PORT_RCK);
PORTD |= (1<<PORT_RCK);
PORTD &=~ (1<<PORT_SCLR);
Was mir an dem Ganzen zur Zeit ein wenig unklar ist:
1. Wenn ich uint8_t Wert; vor der while-Schleife anlege, erkennt der Baustein die Variable Wert nicht und tut nichts, warum???
2. Wie kann ich die Variable Wert verändern??? Wenn ich nach diesem Programmcode ein Wert++; hinzufüge, bleibt die Variable bei ihrem vordefinierten Wert und ändert sich nicht!!!
Vielen Dank im Voraus !!!