mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR PCINT am Mega48


Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche die PCINT Eingänge zu nutzen. Leider klappt das nicht so 
ganz... Ich benutze den Atmel Mega48 und BASCOM Demoversion 1.11.8.3

Mein Problem:
Ich verwende den PCINT21 (also PD5). Dazu habe ich der Einsprungadresse 
vom PCINT2 (also PORTD) mit dem Befehl 1 festgelegt. Mit 2 habe ich den 
Pin PCINT21 (PD5) aktiviert und mit 3 den Interrupt PCINT2 aktiviert.
Im Interrupt soll bei aufsteigender Flanke von Pind.5 der Stand 
inkrementiert werden. Leider wird das nur ausgeführt wenn sich auch was 
an den Int0 und Int1 eingängen tut. Die sind anderweitig verwendet und 
haben mit der Zählfunktion nix zu tun.

1 On Pcint2 Zaehlen
2 Pcmsk2 = &B00100000
3 Pcicr.2 = 1


4 Zaehlen
5 if pind.5 = 1 then
6  incr Stand
7  Timer1=0
8  enable Timer1
9 end if

Kann mir das einer Erklären?

Gruß und Danke
Florian

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry ich programmier' eigentlich in C aber liegt hier vielleicht der 
Hund:

Pcicr.2 = 1

sollte das nicht

Pcicr2 = 1 heißen ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ebenfalls kein BASCOM Programmierer, aber:
muss da nicht noch ein
ENABLE INTERRUPT
oder so ähnlich hinein?

Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NEE leider nicht. das Register Pcicr ist für die PCINT eingänge 
zuständig und .2 kennzeichnet den PCINT2



Ja logo da steht auch noch mehr Code drum rum
der Enable interrupt habe ich natürlich auch

Wie gesagt er springt auch nin den Interrupt, aber nur wenn sich auch 
was am INT0 (PD1) tut. der ist aber durch das PCMSK register eigendlich 
ausgeschlossen und erzeugt auch nicht den Interrupt... Er muß nur da 
sein?!?!

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ja logo da steht auch noch mehr Code drum rum
Und warum schickst Du den Code dann nicht? Glaubst Du, hier sitzen 
überall Hellseher rum?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder anders rum.

Hast du das gleiche Phänomen auch dann, wenn du
nur das oben gepostete (+ Enable Interrupt natürlich)
programmierst?

Bei unerklärlichen Phänomenen ist ein Abspecken auf
eine Minimalverison oft eine gute Idee. So vermeidet
man dass man an der falschen Stelle sucht.

Autor: Florian D. (fdsurfer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem abspecken ist eine Prima Idee. werde ich morgen gleich mal 
probieren.

ich kann ja wohl schlecht 2500 Codezeilen posten.

Autor: Rahul, der Trollige (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich kann ja wohl schlecht 2500 Codezeilen posten.

Als Anhang?!

Autor: Florian D. (fdsurfer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal nur den oben genannten Code versucht. durch immer mehr vom
Programm dazunehmen konnte ich also tatsächlich den Int0 als
Fehlerquelle bestimmen. Sobald ich den Interrupt mit Enable Int0
aktiviere, kann ein anderer Prozessor den Zählerstand abfragen. Solange
ich den Bus nicht anshließe zählt der µC brav über den PCINT21. Sobald
der Bus das erste mal abruft läuft die Zählung nur noch wenn der Bus
aktiv ist. Vielleicht kann sich wer mal den Code anschauen und mir
sagen, wiso das so sein kann.

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.