Hallo zusammen, ich habe ein Problem. Ich möchte einfach nur einen Eingang abfragen und demensprechend Ausgänge setzen bzw. rücksetzen. In der Simulation klappt das alles ganz gut nur wenn ich es auf den µC lade reagiert er garnicht auf den Eingang. Ich schätze das es ein simples Problem ist und ihr mir vielleicht weiterhelfen könnt! Ich benutze einen AVR Atmega32. Das Programm hab ich mal angehangen, ist nicht so spektakulär ;)
Ich habe keine Ahnung von C Aber könnte der Fehler hier stecken?
1 | DDRD = 0x00; //Alle bits von PORTD als Eingang deklarieren |
2 | PORTD = 0xff; // Alle Bits von PORTC auf 0 setzen |
3 | DDRC = 0x00; //PORTC als Eingang |
Wo setzt du ein Ausgang? Und warum den Port C löschen bevor er deklariert ist. Aber wie getippt ich habe von C keine Ahnung. Ich liebe Asembler :-)
1 | if ((PIND & 0x02) != 1) //PIND2 ungleich 1 |
Diese Bedingung ist immer wahr.
Hanswurst schrieb: > Holger P. schrieb: >> Ich liebe Asembler :-) > > So sehr, dass du es nicht mal richtig schreiben kannst? Ei ei ei das hier echt gesucht wird bis gefunden wurde ist doch klar. Hier haste Dein s.
Hm ja erstmal danke für die schnellen antworten, habe JTAG deaktiviert(via Fusebits und Software) aber es geht immernoch nicht.
Du musst dich irgendwann mal entscheiden, was in deiner SChaltung eigentlich Eingang und Ausgang sein soll, und dann auch demenstprechend die Ports konfigurieren.
1 | DDRD = 0x00; //Alle bits von PORTD als Eingang deklarieren |
2 | DDRC = 0x00; //PORTC als Eingang |
Alles kann nicht Eingang sein. Ein paar Ausgänge wirst du auch brauchen. Diesen (berechtigten) Einwand Beitrag "Re: AVR Atmega32 Probleme Eingang abfragen" hast du korrigiert?
Und machs halt für den ersten Versuch nicht zu kompliziert
1 | #include <avr/io.h> |
2 | |
3 | int main(void) |
4 | {
|
5 | DDRD = 0x00; |
6 | PORTD = 0xff; |
7 | DDRC = 0xFF; |
8 | |
9 | while(1) |
10 | {
|
11 | if ((PIND & 0x02)) |
12 | PORTC |= (1<<PINC5); |
13 | else
|
14 | PORTC &= ~(1<<PINC5); |
15 | }
|
16 | }
|
das reicht schon fürs erste um zu sehen, ob sich überhaupt was tut.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.