www.mikrocontroller.net

Forum: Compiler & IDEs ICP1 ATmega will nicht


Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe bislang ein Servosignal per externem Interupt ausgewertet.

Nun will ich den ICP1 Pin, PortB 0 nehmen.

Ich habe PB0 auf Eingang, Pullup an,

// Port Init
  DDRB = 0xFE;    // Port Ausgang PB0=ICP1 Eingang
  PORTB = 0x01;    // Port low PullUp PB0 an

Timer1 VT /64, IPC Noicecanceler an

TCCR1B = 0b1000011; // Timer1/64 Noise Canceler

Und die Interupts frei gegeben

TIMSK = 0b10100001; // Timer2 Compare Interupt  Timer0 Overflow  
TICIE1 = Input Capture

natürlich auch mit

sei();// Interups freigeben

Leider komme ich durch Pegelwechsel an PB0 nicht in diese Routine:

ISR(SIG_INPUT_CAPTURE1)
{
mach was,....
}

Kann mir jemand sagen, warum der ICP1 so nicht den INT0 ersetzt?

Gruß Tobi

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"ATMegas" gibts viele. Hättest Du vielleicht die Güte, auch mitzuteilen, 
welchen davon Du zu verwenden gedenkst?

Abgesehen davon: Nimm nicht die alten "SIGNAL"-Namen, sondern die 
neueren Vektornamen, die denen aus dem Datenblatt entsprechen, nur, dass 
jeweils ein "_vect" hinten dranhängt. Und vor allem: Zeig mal 
vollständigen Code ohne "Abtipp-Artefakte"!

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich nutze einen ATmega8.

ich habe nur Teile des Codes rausgesucht, da er zimlich lang ist.

Gruß Tobi

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> TCCR1B = 0b1000011; // Timer1/64 Noise Canceler
Zähl mal die Nullen und Einsen.... Und gewöhn Dir ne vernünftige 
Schreibweise an (z.B. mit Bitshifts, da passiert so was schon mal 
nicht...). Du hast nämlich nicht den Noise Canceler aktiviert, sondern 
den Capture auf steigende Flanke konfiguriert. Wenigstens beim TIMSK 
stimmt es anscheinend.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast Recht, habe eine Null vergessen.

Aber trotzdem geht es nicht so, wie ich will.

Tobi

Autor: M. H. (doktorgnadenlos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du die richtige Header-Datei eingebunden ?
Für viele Interrupts sind die Einsprungadressen der verschiedenen 
AVR-Derivate unterschiedlich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.