Toon posts:

[68HC11] interrupt probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
dit is t idee, een freerunning counter telt en veroorzaakt interrrupt om de 4,1 ms.
die hou ik bij tot er +- 3 sec voorbij zijn (MC draait op 8mhz en dit is d meest nauwkeurige benadering). Na die 3 seconde wil ik via een txt uit sturen naar de terminal (sci..)
dan komt t probleem. Het uitsturen veroorzaakt interrupts als zn zendregister leeg is, maar de counter komt met een nieuwe interrupt voor dat alle txt weg is.
Het tijdelijk uitschakelen van de timer interrupt (of de gevoeligheid hiervoor) is geen optie en zou ook nix op lossen (weet ik niet wanneer de volgende 3 seconden voorbij zyn, en timers moet toch ingesteld worden in de eerste zoveel cycles :?)
ander probleem ontstaat al als ik een RTI geef nadat t eerste char. klaar is met zenden... (aangezien dan de interrupt van de timer ook automatisch weg is, wat verder geen probleem zou moeten zyn, all1 soms gebeurd dit ongelukkig voordat de tellers van timer zyn verhoogd)
de zender veroorzaakt dan meteen een nieuwe interrupt en zo gaat t door tot ik de flaggen reset nadat alle txt verzonden is.. maar t gaat zo traag (9600baut)
dat dit dus in de soep loopt met de timer interrupts
iemand een ideetje ? suggestie ?

oh en nog iets, weet iemand waarom de DLY bit in OPTION (bit 4 in $1039) gezet word als ik niet snel mn A/D converter power aangooi, maar later wel aanzet (en uitzet) ? Als ik in de eerste cycles meteen #$00 store in OPTION lijkt verholpen.. maar waarom ? (compiler fout ?)

Verwijderd

Verwijderd schreef op 29 januari 2003 @ 11:46:
dit is t idee, een freerunning counter telt en veroorzaakt interrrupt om de 4,1 ms.
die hou ik bij tot er +- 3 sec voorbij zijn (MC draait op 8mhz en dit is d meest nauwkeurige benadering). Na die 3 seconde wil ik via een txt uit sturen naar de terminal (sci..)
dan komt t probleem. Het uitsturen veroorzaakt interrupts als zn zendregister leeg is, maar de counter komt met een nieuwe interrupt voor dat alle txt weg is.
Het tijdelijk uitschakelen van de timer interrupt (of de gevoeligheid hiervoor) is geen optie en zou ook nix op lossen (weet ik niet wanneer de volgende 3 seconden voorbij zyn, en timers moet toch ingesteld worden in de eerste zoveel cycles :?)
De timer moet geinitialiseerd zijn binnen een x aantal cycles. De eerste 30 geloof ik, maar dat weet ik niet zeker. Dat betekent echter niet dat je daarna de interrupt niet meer aan of uit kunt zetten. Je kan alleen de timer niet meer aanpassen.
ander probleem ontstaat al als ik een RTI geef nadat t eerste char. klaar is met zenden... (aangezien dan de interrupt van de timer ook automatisch weg is, wat verder geen probleem zou moeten zyn, all1 soms gebeurd dit ongelukkig voordat de tellers van timer zyn verhoogd)
de zender veroorzaakt dan meteen een nieuwe interrupt en zo gaat t door tot ik de flaggen reset nadat alle txt verzonden is.. maar t gaat zo traag (9600baut)
dat dit dus in de soep loopt met de timer interrupts
iemand een ideetje ? suggestie ?
Je kan toch zien welke interrupt je krijgt? Je weet dus of het een interrupt is van de counter of van je verzonden data. Afhankelijk daarvan kan je actie ondernemen.
oh en nog iets, weet iemand waarom de DLY bit in OPTION (bit 4 in $1039) gezet word als ik niet snel mn A/D converter power aangooi, maar later wel aanzet (en uitzet) ? Als ik in de eerste cycles meteen #$00 store in OPTION lijkt verholpen.. maar waarom ? (compiler fout ?)
Misschien kan je je verhaal op sommige punten nog iets verduidelijken ?? :?

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 09-01 11:25

D2k

iets minder BrEeZaH taal mag wel
ABN is het makkelijkst te begrijpen

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
hehe soz sorry D2k, in ABN even wat verheldering.
Ten eerste bedankt delighteddennis, ik zet nu tijdelijk de interrupt uit van de timer als ik aan het zenden ben. Ik heb gekeken hoeveel keer de timer een interrupt zou veroorzaken als ik deze aan liet en tel later dit aantal op als ik dus klaar ben met zenden (om dus die 3 seconde te bepalen).
(niet echt een nette oplossing, want bij verandering van de tekst die uitgezonden moet worden moet dus opnieuw gekeken worden hoeveel interrupts de timer gemaakt zou hebben)

Ik heb nu alleen een nieuw probleempje, maar daar zal ik eerst zelf even rustig naar kijken voor ik jullie er mee lastig val.

Het laatste (over die DLY bit) snap ik zelf ook niets van.
Als ik namelijk geen code heb die de A/D-convertor beinvloed blijft dit bit (DLY) 0.
Maar als ik na wat tientallen cycles de A/D-convertor aanzet (en later weer uit (stroombesparing)) dan wordt dit bitje 1 gemaakt helemaal aan het begin.
Als ik in het begin (eerste cycles) deze bit 0 maak, blijft die 0.
(ook al zet ik de A/D-convertor aan en uit)

[ Voor 1% gewijzigd door Verwijderd op 29-01-2003 13:36 . Reden: typo ]


Verwijderd

Verwijderd schreef op 29 januari 2003 @ 13:34:
Ten eerste bedankt delighteddennis, ik zet nu tijdelijk de interrupt uit van de timer als ik aan het zenden ben. Ik heb gekeken hoeveel keer de timer een interrupt zou veroorzaken als ik deze aan liet en tel later dit aantal op als ik dus klaar ben met zenden (om dus die 3 seconde te bepalen).
(niet echt een nette oplossing, want bij verandering van de tekst die uitgezonden moet worden moet dus opnieuw gekeken worden hoeveel interrupts de timer gemaakt zou hebben)
Niet alleen bij verandering van de tekstlengte kan dit problemen op leveren. Ook bij het versturen van dezelfde string kan het soms wel eens langer duren. Om wat voor reden dan ook. Dus je systeem wordt zo zeer onzeker.
Ik heb nu alleen een nieuw probleempje, maar daar zal ik eerst zelf even rustig naar kijken voor ik jullie er mee lastig val.

Het laatste (over die DLY bit) snap ik zelf ook niets van.
Als ik namelijk geen code heb die de A/D-convertor beinvloed blijft dit bit (DLY) 0.
Maar als ik na wat tientallen cycles de A/D-convertor aanzet (en later weer uit (stroombesparing)) dan wordt dit bitje 1 gemaakt helemaal aan het begin.
Als ik in het begin (eerste cycles) deze bit 0 maak, blijft die 0.
(ook al zet ik de A/D-convertor aan en uit)
Dan zal ik toch echt m'n boeken er eens bij moeten zoeken. Zal vanavond ff voor je kijken.