Hallo,

ik heb een programaatje waar de tmr0 als counter is ingesteld en deze samen met de aantal overflow interrupts een totaal aantal pulsen geeft.

Nu is het de bedoeling dat als een poort hoog is, de counter onderbroken wordt. Deze dient dan stil te staan maar wel zijn waarde te behouden. met de verschillende INTCON flags lukt het niet om de teller stop te zetten. Ik had wel het volgende idee om het met code op te lossen maar is er geen gemakkelijkere manier de counter stil te zetten:


if Achteruit = TRUE then
 TempTmr0 = Tmr0
 TempOverflowVar=OverFlowVar
 AchteruitAanGezet = TRUE 
else
 If AchteruitAanGezet = TRUE then
 Tmr0 = TempTmr0
 OverFlowVar = TempOverflowVar
 AchteruitAanGezet = FALSE
endif

Achteruit is de poort waarbij de teller niet hoort door te tellen. Iemand een goed idee?

EDIT: Ineens schiet mij iets te binnen: is het een mogelijkheid (of een goed idee) de poort even als output te configureren? Ik weet trouwens niet hoe mijn afgetakt kilometer signaal hierop gaat reageren...als output wordt de poort toch ineens laagohmig......Misschien geen goed idee...

[Bericht gewijzigd door amateurtje op (15%)]

Taal? Compiler?

In Bascom kan je gewoon Stop Timer0 neerzetten.

de taal is proton picbasic.

Met T0IE zet ik (ik dacht dat ik het al geprobeerd had) alleen de overflow variabele stil maar niet de tmr0 timer zelf.. Ik kan het direct nog even proberen maar daar kom ik er niet mee denk ik.

Ow, timer 0 uitzetten.

Voor zover ik weet kan dat niet. Je kan de interrupt uitzetten maar de timer blijft door tikken.

Je moet gewoon de timer waarde opslaan en als je weer door wilt tellen terug zetten.

@Bassie
tsja, ik kon het ook al nergens vinden. de code hierboven is als het goed is wat jij ook beschrijft..

Ik zou de overflowvar wel stil kunnen zetten met T0IE maar dat is ongeveer net zoveel programma als het opslaan en terugzetten. Scheelt wel een variabele..

Als je timer0 kunt aanzetten kun je um ook uitzetten. Kijk in de datasheet.

natuurlijk is dat het eerste wat je doet maar als je er al een hele avond in hebt zitten turen en het niet kunt vinden dan stel je de vraag toch maar hier in de hoop dat er iemand is die het weet..

Als timer 0 op de externe pin reageert kun je hier een NAND poort tussen zetten. Als je dan met een andere uitgang de 2de ingang van de nand hoog zet komen er geen pulsen meer op de externe pin van timer 0.

Moet het perse timer 0 zijn of mag timer 1 ook?

- Je biedt het telsignaal aan aan RA4 (T0CKI) via een 470 ohm weerstand.
- Je knoopt RA3 aan RA4.

Als je nu RA3 als input configureert dan telt hij netjes de pulsen, als je RA3 als output configureert dan telt ie niet. Dat kan je doen door in TRISA een bit te setten/clearen.

Vind ik een gevaarlijke oplossing. Als de signaal gever op RA4 laag is zal er via de 470 ohm weerstand vanuit RA3 stroom vloeien. Het is maar de vraag of de signaalgever dat lijkt vindt. Want deze moest immers ook nog signaal geven aan de kilometer teller.

mijn afgetakt kilometer signaal

De enige nette oplossing is via een AND of een NAND poort. Als de frequentie van het signaal laag is kan het eventueel ook via een diode en dan de oplossing van JoWi, maat ik ben er geen voorstander van.

RA3 maak je uiteraard laag. Maar de signaalgever moet wel TTL kunnnen leveren. Anders een buffertor ervoor.
Deze truuk wordt trouwens gebruikt in zo ongeveer elke op een PIC gebaseerde frequentie teller, en die gaan tot 50MHz. Dus ook bij hoge frequenties werkt dit prima.

Welke processor gebruik je. Relevant, want bij bv de 18Fxx2 serie kun je timer0 aan- en uitzetten, maar bij de 16F62x gaat dat niet zomaar.