Hallo allerseits, ich versuche gerade mich in die AVR-Assembler-Programmierung einzuarbeiten. Dafür wollte ich folgende Testanwendung schreiben: - Pin3 als Output; es ist eine Led plus Widerstand angeschlossen - Pin4 als Input; es ist ein Schalter angeschlossen - Wenn auf Pin4 ein High-Signal anliegt, soll Pin3 auch auf High gehen, bzw. die Led soll angehen Als erstes mal eine ganz einfache Frage: Wie muss ich den Schalter an den Pin4 anschliessen? Muss ich den Schalter an Masse oder VCC anschliessen? Einen zusätzlichen Widerstand brauche ich eigentlich nicht, wenn ich den Pullup aktiviere, oder? Bezüglich der Konfiguration bin ich folgendermaßen vorgegangen: PORTB = 0b00101111 PINB = 0b00010000 Wie kann ich in AVR-Studio den Input "simulieren"? Muss ich dafür den PINB (bzw. nur den Pin4) per Hand setzen (im Debug-Fenster)? Tschoe, Hansi.
Hansi schrieb: > Hallo allerseits, > ich versuche gerade mich in die AVR-Assembler-Programmierung > einzuarbeiten. Gerade mit dem Attiny13 könnte das Franzis-Paket dazu interessant sein: http://www.elo-web.de/elo/mikrocontroller-und-programmierung/avr-grundlagen/experimente-mit-dem-attiny13 > Dafür wollte ich folgende Testanwendung schreiben: > - Pin3 als Output; es ist eine Led plus Widerstand angeschlossen > - Pin4 als Input; es ist ein Schalter angeschlossen > - Wenn auf Pin4 ein High-Signal anliegt, soll Pin3 auch auf High gehen, > bzw. die Led soll angehen Lobenswert einfache Anfangsaufgabe! > Als erstes mal eine ganz einfache Frage: > Wie muss ich den Schalter an den Pin4 anschliessen? Muss ich den > Schalter an Masse oder VCC anschliessen? Einen zusätzlichen Widerstand > brauche ich eigentlich nicht, wenn ich den Pullup aktiviere, oder? Du willst einen Active-High Schalter (Taster) haben. Im Nichtaktiven Zustand (Ruhezustand) soll der Schalter LOW liefern. Beim Drücken (Aktion), soll der Schalter den Pegel HIGH liefern. Da hilft ein interner Pullup-Widerstand nicht weiter (http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Tasten_und_Schalter). > Bezüglich der Konfiguration bin ich folgendermaßen vorgegangen: > PORTB = 0b00101111 > PINB = 0b00010000 Schau dir die Bedeutung von DDRB an. Mit PORTB setzt du bei Ausgängen den Ausgangspegel und bei Eingängen den internen Pullup-Widerstand. Mit PINB fragst du Eingänge ab, ein Setzen von PINB macht man i.d.R. nicht. > Wie kann ich in AVR-Studio den Input "simulieren"? Muss ich dafür den > PINB (bzw. nur den Pin4) per Hand setzen (im Debug-Fenster)? Yes.
Hallo Stefan, danke für die Hinweise. Bzgl. des Pullups: Im grunde genommen kann ich auch einen Active-Low Schalter einsetzen. Das entspricht zwar nicht den Anforderungen, ist aber nicht tragisch, schließlich ist es nur eine selbstgestellte Anfangsaufgabe. Bzgl. Franzis-Paket: Ist eine gute Sache, keine Frage. Ich war aber etwas geizig und habe mir einen eigenen Parallel-Programmer gebaut (auf Basis eines HC 244). Es läuft soweit ganz gut. Beim Eval-Board habe ich ebenfalls was eigenes gebaut, daher auch die Fragen mit dem Schalter. Der Link ist diesbezüglich sehr hilfreich. Beim eigenen Rumstöbern bin ich leider nicht auf diese Seite gestossen. Bzgl. PORTB und PINB: Da habe ich mich vertippt. Ich meinte eigentlich: DDRB = 0b00101111 PORTB = 0b00010000 (Das kommt davon, wenn man nicht den "echten" Code postet). Ich werde es mal anpassen und schauen, ob es klappt. Tschoe, Hansi.
Hat am Ende funktioniert. Wie gesagt waren die Links sehr hilfreich. Danke für die Hilfe.
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.