Forum: Mikrocontroller und Digitale Elektronik ATiny13A - Pin Change Interrupt


von Billy B. (avr-billy)


Angehängte Dateien:

Lesenswert?

Ich versuche mich heute den ganzen Nachmittag daran, einen Interrupt 
durch Pegelwechsel auszulösen. Leider krieg ich das - warum auch immer 
nicht hin.

Ich habe als Testumgebung ein Pollin Evaluationsboard Version 2.01 mit 
einem ATtiny13A. Ich möchte mittels PCINT4 durch Betätigung eines 
Tasters an PB4 eine LED an PB2 leuchten lassen. Lasse ich den Taster 
los, soll die LED wieder erlöschen. Ich habe dazu ein Assembler-Programm 
geschrieben (siehe Anhang). Ich habe das Kapitel über die externen 
Interrupts in der Spezifikation des ATiny13A gelesen und krieg das 
einfach nicht gebacken.

Der Taster liegt mittels RC-Glied (33k/330n - wegen Entprellung) an 
Masse. Durch Betätigung geht PB4 auf H. Die LED benötigt zum leuchten 
H-Potential am PB4.

Wenn ich das Prograsmm im AtmelStudio simuliere, wird bei Veränderung an 
PB4 kein Interrupt ausgelöst.

Es wäre nett, wenn mit jemand helfen könnte.

Herzlichen Dank in voraus.

---
Gruß,
Billy

von Detlef K. (adenin)


Lesenswert?

Muss wohl am Simulator liegen.
Ich hab hier ein altes AVR Studio 4.18.692 und da läuft dein Programm 
wie erwartet.

von Billy B. (avr-billy)


Lesenswert?

@adenin
Hallo Detlef,

ich verwende das Artmel Studio 6.1. Ich habe zu Beginn der ISR einen 
Breakpoint gesetzt. Wenn ich mit F11 bis in den Loop durchsteppe, danach 
PORTB4 auf H setze tzt sich nichts. Selsamerweise wird das I-Bit 
gelöscht; und zwar o h n e dass die ISR aufgerufen wird. (Ich steppe 
alles mit F11 - also kein Run mit F5)

Ich habe das Programm heute auf die echte Hardware gespielt. Da tut sich 
ebenfalls nichts. Ich meine, dass die LED bei anhaltenten Tastendruck 
leuchten sollte. Leider passiert hier rein gar nichts.

Ich habe da vermutlich doch irgendwie etwas übersehen/falsch 
interpretiert.
Keine Ahnung, was ich da falsch gemacht habe. Brauche ich evtl 
irgendwelche nop-Befehle aus Synchronisationsgründen?


---
Gruß,
Billy

von spess53 (Gast)


Lesenswert?

Hi

>ich verwende das Artmel Studio 6.1. Ich habe zu Beginn der ISR einen
>Breakpoint gesetzt. Wenn ich mit F11 bis in den Loop durchsteppe, danach
>PORTB4 auf H setze tzt sich nichts.

Eingang ist das PIN-Register, nicht das PORT-Register.

MfG Spess

von Billy B. (avr-billy)


Lesenswert?

@Elke:
> Das entspricht aber keinem pinchange Ereignis.

Was ist dann ein pinchange Ereignis? Ich dachte es wäre jeder 
Potentialwechsel?

--
Gruß,
Billy

von Billy B. (avr-billy)


Lesenswert?

@spess53:

> Eingang ist das PIN-Register, nicht das PORT-Register.

... sorry - mein Fehler!

Klar, das PIN-Register ist für's Einlesen zuständig ;-).
Ich hab natürlich am PINB4 das Potential geändert. Trotzdem: Es tut sich 
einfach nix :-((.

---
Gruß,
Billy

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.