Hallo! Langsam bin ich am ver(zweifeln)! Ist der PA7 ein Mister Besonders? Ich benutze beim Tiny26 den PA7 zum erfassen einer Haltezeit. PA7 ist als Input mit Pullup eingestellt und anfangs high. Wird er auf Masse geschaltet, reagiert darauf der Pin Change Interrupt was bemerkt, das ein Pegelwechsel war und darauf hin ein Register aktuallisiert. Aber seltsammer weise wird kein Pin Change Interrupt ausgeführt, wenn der Pegel an PA7 von low auf high geht. Auch bei einem erneuten Wechsel von high auf low keine Ausführung des Pin Change Interrupt. Egal, wie oft ich an PA7 einen Wechsel mache. Ich benutze noch ADC an ADC4 (PA5) mit AVCC als Spannungsquelle. Liegt es etwa daran? Habe was darüber gelesen, das beim Analog Comparator PA7 und PA6 benutzt wird, aber das ist hier nicht der Fall. Während des indirekten Scans an PA7 wird kein ADC ausgeführt (Single Mode) und es wird vorher darauf gewartet, bis der ADC fertig ist. Bisher ist mir dieses Prob nicht aufgefallen da ich in einem Timer-Prog immer eine LED an PB3 alle 250ms aus oder eingeschaltet habe was mir als Kontrolle und Zeitmessung diente. Kaum mach ich das weg, geht das mit dem PA7-Change nicht. Habe mit 2 Tiny26 schon alles mögliche versucht und schmeiße alle Tiny26 bald in den Müll. Gruß Andi
Hast Du die Flanke, bei der der Interrupt ausgelöst werden soll, umgestellt (high->low nach low->high)? Hast Du den Interrupt wieder scharf gemacht, nachdem er ausgelöst wurde?
Muß man die Flanke einstellen? Ich verwende nicht den INT0. Laut DOC kommt doch automatisch bei jedem Wechsel ein PCIRQ. Der Interrupt wird doch nach einem RETI wieder scharf gemacht, I-Bit in SREG wird gesetzt. Das Flag-Bit, PCIF in GIFR, wird nach dem Sprung in den PCIRQ sofort wieder zurück gesetzt (0). Ich muß noch sagen, das der Pin PA7 und PA6 als Input UND Output verwendet werden. Auf Input wird so umgestellt was zu 99,99% der Fall ist: sbi porta,7 ;Pullups aktivieren cbi ddra,7 ;Datenrichtung auf Input Auf Output wird so umgestellt: sbi ddra,7 ;Datenrichtung auf Output cbi porta,7 ;Pullups aktivieren Mir ist aufgefallen, das wenn das Prog nach einer bestimmten Wartezeit mit dem obigen Code auf Output umschaltet und kurz darauf wieder auf Input, der Pin Change auf PA7 oder PA6 nicht reagiert. Solange das Prog nicht auf Output und Input umschaltet, gehts mit dem PCIRQ. Ich stell das mal um und schaun ma mal... Vielleicht braucht das ja die richtige Reihenfolge. Gruß Andi
Meinte natürlich folgendes zum Output: sbi ddra,7 ;Datenrichtung auf Output cbi porta,7 ;Leitung an PA7 auf GND Gruß Andi
So, jetzt ist es Eindeutig. Keine Reaktion bei einem Pegelwechsel an PA6 und PA7 im Tiny26. WAS SOLL DAS? SCH... DOC!!! Habe in dem Pin Change Interrupt Programm ne Sichthilfe eingebaut welche für ca. ne halbe Sekunde eine LED ausschaltet und danach wieder ein. An den Pins PB0 - PB6 (PB7 ist ja Reset) und PA3 gehts wunderbar aber natürlich an PA6 und PA7 nicht obwohl in der DOC drin steht, das diese beiden beim PCIE1 dabei sein sollen. Habe es mit 4 Tiny26 probiert, einer war noch unangetastet, und überall das gleiche. Weis jemand, warum das so ist? Gruß Andi
So, müßte mich jetzt einigermaßen beruhigt haben, da es jetzt geht. Standardmäßig ist an PA6 und PA7 der Analog Comparator, AIN0 und AIN1, aktiv wodurch natürlich die Pin Change-Funktion an PA6 und PA7 deaktiviert ist da es sich ja um eine "Alternate Function" handelt. In der ganzen DOC zum Tiny26 gibt es eine Zeile, die darauf hinweist, das der Analog Comparator bei 0 aktiviert ist und zum abschalten eine 1 braucht. Grrrrrrrr Schaltet man den AC nicht ab kann man trotzdem die Pin-Pegel auslesen aber es geht kein PCINT an PA6 und PA7. Das Bit "ACD" (Analog Comparator Disable, Bit 7) im Register "ACSR" setzen (1) = AC aus, initial Value = 0 also an. Vielleicht hilft es noch anderen weiter die sich auch wundern, warum keine PCINT-Funktion an PA6 und PA7 geht. Gruß Andi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.