Ich habe einen mega16 am Steckbrett, wenn du mir deinen Quellcode schickst kann ich den mal ausprobieren und auch die Bedingungen der Flanken testen.
Hubert
Druckbare Version
Ich habe einen mega16 am Steckbrett, wenn du mir deinen Quellcode schickst kann ich den mal ausprobieren und auch die Bedingungen der Flanken testen.
Hubert
Kann ich mir nicht vorstellen. Der Interrupt wird ja ausgelöst durch den Flankenwechsel 0/1 oder halt 1/0. Ab der Eingang nun 0 oder 1 hat ist von der Spannung abhängig die anliegt. Wenn die langsam sinkt kommt der wechsel halt später aber er kommt. Also auch wenn die Spannung langsam sinkt gibts für den Interrupt ne steile Flanke( halt der wechsel 0/1..).Zitat:
Zitat von wkrug
man könnte ja an den Interrupteingang nen Sägezahn hinhänge (so 1Hz oder so ) dann immer wenn der Interrupt kommt nen Port tooglen, dann kann man schnell fest stellen wie langsam der Flankenwechsel max. sein darf.
Also in der ISR wird genau eine Variable gesetzt und der Timer0 angeworfen. Fertig. Also ne sehr kurze Routine, daran liegt es nicht.
Zuerst werde ich die Hardware der LS ein wenig ändern, kürzere Leitungen, andere Widerstände. Dann kann ich mal ein Rechteck auf den INT Eingang loslassen, um zu sehen, ob das geht. Falls ja, sind es die schlechten Flanken der LS. Es ist anscheinend tatsächlich so, dass der AVR eine steile Flanke braucht, ansonsten ist er zu lange im "verbotenen Bereich"...
Es ist sehr wahrscheinlich, dass es an der LS liegt.
Ich werde berichten.
Herzlichen Gruss und vielen Dank
Mario
Hallo!
Ich bin (leider :) ) ein PIC Benutzer, kann also ein Blödsinn hier schreiben, bitte um Verständniss !
Muss bei AVR's das interrupt flag nicht in der Software gelöscht werden ?
MfG
Nää, wird automatisch gelöscht, sobald der Interrupt durch ist.
Aber es liegt nicht an der Software.. Ich sehe nicht, was da falsch sein sollte ==> LS macht Ärger
Hallo Murus!
Vielleicht sind die Flanken wirklich schlecht. Wenn Du langes geschirmtes Kabel benutzts, wäre es möglich. Versuch den pull-up R2 direkt an AVR pin anzuschliessen. Wenn es nichts bringt, musst Du die Flanken mit einem Schmitt-Trigger (z.B. 74HC14) "schärfen" oder anderes Kabel (mit weniger pF/m) nehmen.
MfG :)
bei Bascom sind es trotzdem um die 66+ Operationen die durchgeführt werden ... aber das ist ein anderes Thema.Zitat:
Zitat von Murus
Das Timer0 anwerfen hab ich aber in asm gemacht. (Bei Bascom wäre es "Start Timer0") Ischt trotzdem eine relativ kurze ISR.
Bist du sicher, daß es nicht an seiner Software liegt?
Etwa, daß eine ISR zu lange braucht?. Du hast bestimmt noch andere IRQs aktiv. Wenn die zu lange dauern und IRQs so lange global deaktiviert sind passieren evtl mehrere INT-IRQs, von denen du nur einen siehst?