Codeauschnitt: ldi temp3, 0b01000000 out GIMSK, temp3 ;ext int0 aktiviern in General Interupt Mask ldi temp3, 0b00000011 out EIMSK, temp3 ;ext int0 aktiviern in Ext Interupt Mask ldi temp3, 0b00001010 out EICRA, temp3 ;ext int0 und int1 aktivieren bei fallender Flanke sei loop: rjmp loop Hallo leute, ich bastele an meiner Diplarbeit und stehe seit ein paar Tagen vor dem Problem, mit den INterupts, meinen Atmega anzusteuern. Mittlerweile tut das auch soweit, allerdings habe ich noch ein Problem, zu dem ich keine Lösung finde: Wenn ich mit dem EICRA den Interupttrigger auf fallende Flanke setzen möchte, bekomme ic hvom Compiler folgende Fehlermeldung: E:\Arbeit\Diplomarbeit\AVR\040617\Timer040621.asm(78) : error : Illegal argument type or count Assembly complete with 1 error Dies passiert, bei egal welcher einstellung. Jetzt triggert er natürlich auf ein low, d.h. es funzt trotzdem, da bei 8Mhz keiner shcnell genug den bttonb loslassen könnte, aber es ärgert mich, das ich das nicht hinkrieg mit dem Register.. Wer kann mir helfen? Danke
Sers, also wenn man mal F1 drück kommt man in die Hilfe. Da steht dann drin das der out Befehl für Adressen von 0 bis 61 funktioniert. Laut Datenblatt ist das Register aber auf Adresse 6A, also leicht außerhalb. So wird das also nix. seb
Danke für die INfo, aber wenn ich in meiner Hilfe was gefunden hätte, dann hätte ich mir auch die Frage her gespart. (ich benutze AVRStudio 4) Ich habe übrigens gerade nocheinmal nachgesehn und nichts gefunden. Mag auch an meiner mangelnden Suchqualität liegen, ic hlasse mich gern eines Besseren belehren.
Hi! ;Externe Interrupts aktivieren lds temp1,EICRA sbr temp1, 1<<ISC11 | 0<<ISC10 | 1<<ISC01 | 0<<ISC00 sts EICRA,temp1 ;Int4-Int6: "falling edge" in temp1,EICRB sbr temp1, 1<<ISC61 | 0<<ISC60 sbr temp1, 1<<ISC51 | 0<<ISC50 | 1<<ISC41 | 0<<ISC40 out EICRB,temp1 in temp1,EIMSK sbr temp1, 1<<INT6 | 1<<INT5 | 1<<INT4 | 1<<INT1 | 1<<INT0 out EIMSK,temp1 in temp1,EIFR sbr temp1, 1<<INTF6 | 1<<INTF5 | 1<<INTF4 | 1<<INTF1 | 1<<INTF0 out EIFR,temp1 So mache ich das. Wie Du siehst verwende ich "out" bei EICRB, aber "sts" bei EICRA. Das liegt an dem Problem, was Sebastian schon angesprochen hatte --> OUT geht nicht überall. War für mich aber auch erst verwirrend! Theoretisch kann man immer STS verwenden, muß dann aebr 63 oder so immer dazuzählen bei den sonst OUT-Befehlen. Also: Probier's mal mit STS anstatt OUT! Sebastian
Thanx Sebastian, das ist genau was ich suchte. Habe STS in der Hilfe gefunden, war mir aber nicht klar über die Anwendung... bin noch recht blutiger Anfänger. Danke Torsten
Hi Torsten, gern geschehen! Über LDS und STS kannst Du auch auf die 4KB SRAM zugreifen. Da kannst Du z.B. "Variablen" abspeichern, falls die Register nicht mehr ausreichen. Sebastian
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.