AVR - T0 mit Taster nutzen?

Gast #7232681
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe da eine Platine mit einem Atmega2560 drauf, die ich jetzt super 
für ein anderes Projekt nutzen könnte, wenn mir nur kein Interrupt 
fehlen würde.

Ich brauche einen Eingang als Interrupt, der einige der aber noch frei 
ist, ist der PD7 (externer Timer0 Pin, T0).

Könnte ich den nicht nutzen und dann einen Timerinerrupt bei steigender 
Flanke auslösen? Oder habe ich einen Denkfehler?
Beitrag #7232713 wurde von einem Moderator gelöscht.
Gast #7232818
Lesenswert?
• ▲
▼
c-hater schrieb im Beitrag #7232713:
> Lukas schrieb:
>
>> ich habe da eine Platine mit einem Atmega2560 drauf, die ich jetzt super
>> für ein anderes Projekt nutzen könnte, wenn mir nur kein Interrupt
>> fehlen würde.
>>
>> Ich brauche einen Eingang als Interrupt, der einige der aber noch frei
>> ist, ist der PD7 (externer Timer0 Pin, T0).
>>
>> Könnte ich den nicht nutzen und dann einen Timerinerrupt bei steigender
>> Flanke auslösen? Oder habe ich einen Denkfehler?
>
> Ganze drei sogar.
>
> Der erste ist: jeder Pin kann einen Interrupt auslösen. Den sog.
> Pin-Change-Interrupt.
Das bezweifle ich...
>
> Der zweite ist: der Takteingang eines Timers kann direkt keinen
> Interrupt auslösen, sondern höchstens indirekt (durch geeignete
> Programmierung des Timers und Benutzung von dessen Interrupts).
Ja das ist mir schon klar..

> Aber das
> klappt höchstens bei jeder zweiten Taktflanke und auch nur, wenn der
> entsprechende Timer unbenutzt ist.
Unbenutzt ist der.. Aber warum bei jeder zweiten?

> So, wie du fragst, bist du Arduidiot.
> Dann kannst du aber getrost davon ausgehen, dass der Timer0 benutzt
> ist...
>
> Der dritte ist: Du bist in diesem Subforum vollkommen falsch.
Gast #7233398
Lesenswert?
• ▲
▼
jo hast recht wär es Port B , würde es gehen. Bei Port D nicht.

Table 13-12. Port D Pins Alternate Functions
Port Pin Alternate Function
PD7 T0 (Timer/Counter0 Clock Input)
PD6 T1 (Timer/Counter1 Clock Input)
PD5 XCK1 (USART1 External Clock Input/Output)
PD4 ICP1 (Timer/Counter1 Input Capture Trigger)
PD3 INT3/TXD1 (External Interrupt3 Input or USART1 Transmit Pin)
PD2 INT2/RXD1 (External Interrupt2 Input or USART1 Receive Pin)
PD1 INT1/SDA (External Interrupt1 Input or TWI Serial DAta)
PD0 INT0/SCL (External Interrupt0 Input or TWI Serial CLock)

Gruß
#7233412
Lesenswert?
• ▲
▼
Lukas schrieb:
> Könnte ich den nicht nutzen und dann einen Timerinerrupt bei steigender
> Flanke auslösen?

Ja, das geht:
1
void T0_init(void)
2
{
3
  TCCR0A = 0;
4
  TCCR0B = 1<<CS02 | 1<<CS01 | 1<<CS00;
5
  TIFR0 = 1<<TOV0;
6
  TCNT0 = 0xFF;
7
  TIMSK0 = 1<<TOIE0;
8
}
9

10
ISR(TIMER0_OVF_vect)
11
{
12
  TCNT0 = 0xFF;
13
  // other stuff
14
}

Wird T0 schon verwendet, kannst Du dessen Funktionen auf T2 verschieben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.