Forum: Mikrocontroller und Digitale Elektronik Attiny 1616 Hardware-Interrupt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan W. (swuethrich)


Lesenswert?

Hallo zusammen.

Ich wollte fragen ob mir jemand sagen kann welches der 
Hardware-Interrupt INT0 oder INT1 PIN ist. Irgend wie bin ich zu dof und 
blicke nicht mehr durch und in Googel finde ich mit INT0 PIN oder so 
leider nichts.

Ich habe ein Programm das bis jetzt auf einem Attiny84 lief und den INT0 
oder INT1 benötigt.

Könnte mir da jemand helfen? ich währe sehr dankbar.

Gruss
Stefan

von Ingo L. (corrtexx)


Lesenswert?

Stefan W. schrieb:
> Könnte mir da jemand helfen? ich währe sehr dankbar.
Jeder Pin kann bei diesem Model Interrupts erzeugen. Siehe Datenblatt 
S.134 Kapitel 16.3.3:
"Each PORT pin n can be configured as an interrupt source. Each 
interrupt can be individually enabled or disabled by writing to ISC in 
PORTx.PINnCTRL."

von Georg M. (g_m)


Lesenswert?

Datasheet:
All pins can be used for external interrupt, where pins Px2 and Px6 of 
each port have full asynchronous detection.

von Purzel H. (hacky)


Lesenswert?


von Stefan W. (swuethrich)


Lesenswert?

Danke Ingo

Darf ich dich Konkret Fragen ob ich demnach den Attiny1616 für mein DCC
Projekt nehmen kann?

NMRA Digital Command Control (DCC) Library

This library allows you to interface to a NMRA DCC track signal and 
receive DCC commands.

The library currently supports the AVR ATTiny84/85 & 
ATMega88/168/328/32u4 and Teensy 3.x using the INT0/1 Hardware Interrupt 
and micros() ONLY and no longer uses Timer0 Compare Match B, which makes 
it much more portable to other platforms.

https://github.com/mrrwa/NmraDcc

Nochmals besten Dank

von Wastl (hartundweichware)


Lesenswert?

Purzel H. schrieb:
> So schwierig ist das doch auch nicht...

Wieder mal erwartet der gemeine User dass im gebratene Tauben
in den Mund fliegen bzw dass ihm von anderer Seite alles auf
dem Silbertablett serviert wird ohne dass er selbst seinen
Denkapparat anwerfen muss.

von Ingo L. (corrtexx)


Lesenswert?

Stefan W. schrieb:
> Darf ich dich Konkret Fragen ob ich demnach den Attiny1616 für mein DCC
> Projekt nehmen kann?

Stefan W. schrieb:
> The library currently supports the AVR ATTiny84/85 &
> ATMega88/168/328/32u4 and Teensy 3.x using the INT0/1 Hardware Interrupt
> and micros() ONLY and no longer uses Timer0 Compare Match B, which makes
> it much more portable to other platforms.

Deinen eigenen Aussagen nach unterstützt deine LIB den Controller nicht. 
Da du dich mit dem Entnehmen von Informationen aus Text so schwer tust, 
denke ich nicht, dass du das Problem selber lösen kannst.

Stefan W. schrieb:
> Ich habe ein Programm das bis jetzt auf einem Attiny84 lief und den INT0
> oder INT1 benötigt.
Dann lass es weiterhin auf dem funktionierenden Controller laufen

von Stefan W. (swuethrich)


Lesenswert?

Ingo Ich suche keine fertige lösung sondern ein Weg zu der Lösung um 
mein Wissen aus zu bauen.

Der beste Lehrer war einmal auf das wissen anderer angewiesen.

würde es in etwa um so etwas gehen wen ich es richtig verstanden habe.

ISR(PORTC_PORT_vect) {
  PORTC.OUT ^= (1 << 0);
  PORTC.INTFLAGS |= (1 << 5);
}

von Ingo L. (corrtexx)


Lesenswert?

Stefan W. schrieb:
> ISR(PORTC_PORT_vect) {
>   PORTC.OUT ^= (1 << 0);
>   PORTC.INTFLAGS |= (1 << 5);
> }
Genau, so würdest du das machen können. Vorher musst du aber natürlich 
noch den PC5 konfigurieren und den entsprechenden Interrupt aktivieren. 
Global Interrupt enable nicht vergessen.

von Achim H. (pluto25)


Lesenswert?

"in etwa um so etwas"
Ja, es muß über eine Art PCint abgefangen werden.
Wie genau scheint hier keiner zu wissen.
Das ist "ganz einfach" Nicht Möglich. Es gibt die Int0/1 Vectoren nicht.

von Georg M. (g_m)


Lesenswert?

Korrekte (verständliche) Schreibweise:
1
PORTA.DIRSET = PIN4_bm;      // PA4 as output
2
3
PORTA.DIRCLR = PIN4_bm;      // PA4 as input
1
PORTA.OUTSET = PIN4_bm;      // PA4 on
2
3
PORTA.OUTCLR = PIN1_bm;      // PA1 off
4
5
PORTB.OUTTGL = PIN1_bm;      // toggle PB1
1
ISR(PORTA_PORT_vect) 
2
{
3
  PORTA.INTFLAGS = PORT_INT6_bm;  // clear PA6 interrupt flag
4
}

von Georg M. (g_m)


Angehängte Dateien:

Lesenswert?

Achim H. schrieb:
> Wie genau scheint hier keiner zu wissen.

von Wastl (hartundweichware)


Lesenswert?

Achim H. schrieb:
> Wie genau scheint hier keiner zu wissen.

Nein. Ich bin nur zu faul die Faulheit anderer zu unterstützen.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

das Bsp. von Microchip ist eine gute Basis.
https://github.com/microchip-pic-avr-examples/avr128da48-ext-int-wakeup-example
Klickste dich durch bis zur main.c, lesen, verstehen lernen, 
ausprobieren. Danach an eigene Zwecke anpassen. Die AVRs sind streng Art 
verwandt, sprich die Registernamen und Funktionalitäten sind nahezu 
gleich. Kannste direkt das Manual von deinem ATtiny daneben legen.
Generell kann ich empfehlen bei allen 8 Bit ATtiny und AVR Controller in 
den Dokumenten quer zu lesen. Diese Getting Started Dokus zu 
verschiedenen Themen sind etwas verstreut verlinkt. Da sie wie gesagt 
sehr ähnlich aufgebaut sind, kann man alle diese Dokus für alle neuen 
Controller verwenden. Dann hat man den Einstieg geschafft denke ich. Die 
Getting Started Dokus kann man alle durchlesen.
Bei Fragen - einfach fragen.
Ich habe einen AVR128DB64 immer zur Hand. Ein Atmega4808/4809 ebenso.

: 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.