Willi L schrieb:
> Henning U. schrieb:
>> Hab noch ein wenig rumprobiert und jetzt klappts :-)
>
> Hallo,
>
> kannst du uns bitte sagen woran es lag
Zum Beispiel daran
1 | DDRA=0xff;
|
2 |
|
3 | ...
|
4 | taster = PINA & 0xf0;
|
wenn man vom Port A über das Pin Register den Zustand von Tasten
einlesen will, dann ist es eher wenig zielführend, den kompletten Port
auf Ausgang zu schalten.
volatile wurde schon angesprochen.
Das Rücksetzen von overflow hingegen ist nicht notwendig. Durch die Art
der Berechnung wäre es egal, sofern die Datentypen der Variablen
vernünftig gewählt wären. Einfach alles int machen ist nicht
zielführend. Praktisch alles in seinem Programm kann zuallererst mal
unsigned gemacht werden, was den Vorteil hätte, dass
1 | ergebnis=(mess2-mess1);
|
ein definiertes Verhalten hätte, wenn es in den 'Overflow' Bereich rein
geht. Dann müsste man allerdings utoa anstelle von itoa benutzen.
'tasten', als die Variable, die den Portinhalt aufnimmt, sollte
zusätzlich noch als 8 Bit Variable ausgeführt werden und nicht als int.
Sowas
ist nicht wirklich schön und/oder vernünftig.
Fazit: Jemand, der seine Grundübungen im Umgang mit Portpins gemacht hat
und Ein/Ausgabe auf diesem Level beherrscht (durch Spielerein mit LED
und Tastern), sollte keine Probleme haben, all die kleinen Fehler zu
finden und zu korrieren, die dem TO das Leben schwer gemacht haben,
indem er die ersten Schritte in der AVR Programmierung übersprungen hat.