wie heeft een idee, ik kan er geen topic over vinden evenmin in de piccursus:
? kan ik de voeding naar de PIC zo programmeren dat ik met een (1) tip(impuls)toets de AAN/UIT van het hele systeem kan regelen. nu doe ik dat met een aparte flipflop maar als het even kan doe ik alles met dezelfde PIC.
http://home.versatel.nl/edithenwilliam/william.htm
Daar staat een cursus. Wat je wil is mogelijk. Met een tellertje: ingang is hoog>teller +1. Ingang nog een keer hoog>reset teller. Schrijf waarde van teller naar uitgang.
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Ik weet niet hoe snel een PIC opstart, maar je zou kunnen overwegen met een transistor je PIC van spanning te voorzien. Met de tiptoets, stuur je de Basis aan zodat de pic zijn spanning krijgt.
Als je een poort meteen hoog maakt en deze de funktie van de tiptoets laat overnemen...
Maar ergens in dit verhaal mis ik iets.
Ik heb opwellingen in mijn hoofd over uitgangsspanning van een hoge poort versus de voedingsspanning van de PIC.
Ik kan het niet onder woorden brengen maar iets zegt me dat mijn bovenstaande theorie mank gaat.
Op 15 november 2006 22:07:35 schreef Fantomaz:
Ik weet niet hoe snel een PIC opstart, maar je zou kunnen overwegen met een transistor je PIC van spanning te voorzien. Met de tiptoets, stuur je de Basis aan zodat de pic zijn spanning krijgt.
Als je een poort meteen hoog maakt en deze de funktie van de tiptoets laat overnemen...Maar ergens in dit verhaal mis ik iets.
Ik heb opwellingen in mijn hoofd over uitgangsspanning van een hoge poort versus de voedingsspanning van de PIC.
Ik kan het niet onder woorden brengen maar iets zegt me dat mijn bovenstaande theorie mank gaat.
Beetje vreemde situatie. Dit kun je gewoon softwarematig oplossen. Hij wil dat als je 1 keer drukt,een lijn hoog wordt, en als je nog een keer drukt weer laag. Dat gaan niet lukken met jou theorie.
Edit: of wil je je PIC aan/uit schakelen met die toets?
bedankt voor jullie reacties:
... of wil je je PIC aan/uit schakelen met die toets? ja dat is de bedoeling. doel: aantal bedieningstoetsen en componenten tot een minimum beperken. als het met de PIC lukt zou mooi zijn.
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
druktoets met parallel een mosje
de pic stuurt dat mosje.
de druktoets geeft spanning aande pic
het eerste wat die doet bij powerup is die mos sturen en zichzelf van stroom voorzien.
T.Assies
Ik zie dingen die je nooit voor mogelijk hield. Ik maak ze mogelijk. Ik kan je pijn en lijden laten zien. In tegenslag vind ik hoop, in de verhalen die ik hoor inspiratie. Ik kan je veel vertellen. Wat ik doe? Ik ontdek. Mijn wereld is jouw wereld.
Op 15 november 2006 22:22:17 schreef pijl:
bedankt voor jullie reacties:... of wil je je PIC aan/uit schakelen met die toets? ja dat is de bedoeling. doel: aantal bedieningstoetsen en componenten tot een minimum beperken. als het met de PIC lukt zou mooi zijn.
Software maken dat zodra er spanning op de pic komt (je drukt de knop in), PORTB7 hoog maken, de tor neemt dan de spannings voorziening over. Zodra er op PORTB6 weer wordt gemerkt dat de toets wordt ingedrukt, PORTB7 weer laag maken...
kan iemand mij even op weg helpen met de software voor bovenstaand schema van t.assies? met de cursus picbasic in de hand kom ik er nog niet uit, helaas
LuckyBasterd
:D Eagle addicted!! :D
C of ASM?
PM me anders even 
(daarna poste we het ook hoor
)
[Bericht gewijzigd door LuckyBasterd op ]
LuckyBasterd
:D Eagle addicted!! :D
void interrupt(void)
{
PORTB.F7 = ~PORTB.F7;
PORTB.F1 = 0; // EIGEN CODE (dingen aan of uit zette)
INTCON = 0x90;
while (1)
{
if (PORTB.F7 == 1) break; // ga verder met het programma als transistor geleid!
}
}
void main ()
{
INTCON = 0x90; //init interrupt
TRISB = 0x01; // port def
PORTB.F7 = 1; // transitor aansturen
while (1)
{
PORTB.F1 = ~PORTB.F1; // EIGENCODE
delay_ms(1);
}
}
Ik het even in C gedaan ASM code zal ik er ook bij zetten
; ASM code generated by mikroVirtualMachine for PIC - V. 6.0.0.0
; Date/Time: 17-11-2006 10:04:15
; Info: http://www.mikroelektronika.co.yu
; ADDRESS OPCODE ASM
; ----------------------------------------------
$0000 $2836 GOTO _main
$0004 $ _interrupt:
$0004 $00CF MOVWF STACK_15
$0005 $0E03 SWAPF STATUS, 0
$0006 $0183 CLRF STATUS
$0007 $008D MOVWF ?saveSTATUS
$0008 $0804 MOVF FSR, 0
$0009 $008C MOVWF ?saveFSR
$000A $080A MOVF PCLATH, 0
$000B $008E MOVWF ?savePCLATH
$000C $018A CLRF PCLATH
$000D $0841 MOVF STACK_1, 0
$000E $0090 MOVWF STSAVED_1
$000F $0840 MOVF STACK_0, 0
$0010 $008F MOVWF STSAVED_0
$0011 $3000 MOVLW 0
$0012 $1B86 BTFSC PORTB, 7
$0013 $3001 MOVLW 1
$0014 $00C1 MOVWF STACK_1
$0015 $0941 COMF STACK_1, W
$0016 $00C0 MOVWF STACK_0
$0017 $3000 MOVLW 0
$0018 $1840 BTFSC STACK_0, 0
$0019 $3080 MOVLW 128
$001A $0606 XORWF PORTB, 0
$001B $3980 ANDLW 128
$001C $0686 XORWF PORTB, 1
$001D $1086 BCF PORTB, 1
$001E $3090 MOVLW 144
$001F $008B MOVWF INTCON
$0020 $ L_interrupt_0:
$0020 $3000 MOVLW 0
$0021 $1B86 BTFSC PORTB, 7
$0022 $3001 MOVLW 1
$0023 $00C1 MOVWF STACK_1
$0024 $0841 MOVF STACK_1, 0
$0025 $3A01 XORLW 1
$0026 $1903 BTFSC STATUS, Z
$0027 $2829 GOTO L_interrupt_1
$0028 $ L_interrupt_2:
$0028 $2820 GOTO L_interrupt_0
$0029 $ L_interrupt_1:
$0029 $ L_Interrupt_end:
$0029 $0810 MOVF STSAVED_1, 0
$002A $00C1 MOVWF STACK_1
$002B $080F MOVF STSAVED_0, 0
$002C $00C0 MOVWF STACK_0
$002D $080E MOVF ?savePCLATH, 0
$002E $008A MOVWF PCLATH
$002F $080C MOVF ?saveFSR, 0
$0030 $0084 MOVWF FSR
$0031 $0E0D SWAPF ?saveSTATUS, 0
$0032 $0083 MOVWF STATUS
$0033 $0ECF SWAPF STACK_15, 1
$0034 $0E4F SWAPF STACK_15, 0
$0035 $0009 RETFIE
$0036 $ _main:
$0036 $3090 MOVLW 144
$0037 $008B MOVWF INTCON
$0038 $3001 MOVLW 1
$0039 $1303 BCF STATUS, RP1
$003A $1683 BSF STATUS, RP0
$003B $0086 MOVWF TRISB
$003C $1283 BCF STATUS, RP0
$003D $1786 BSF PORTB, 7
$003E $ L_main_3:
$003E $3000 MOVLW 0
$003F $1886 BTFSC PORTB, 1
$0040 $3001 MOVLW 1
$0041 $00C1 MOVWF STACK_1
$0042 $0941 COMF STACK_1, W
$0043 $00C0 MOVWF STACK_0
$0044 $3000 MOVLW 0
$0045 $1840 BTFSC STACK_0, 0
$0046 $3002 MOVLW 2
$0047 $0606 XORWF PORTB, 0
$0048 $3902 ANDLW 2
$0049 $0686 XORWF PORTB, 1
$004A $3002 MOVLW 2
$004B $00CB MOVWF STACK_11
$004C $30FF MOVLW 255
$004D $00CA MOVWF STACK_10
$004E $0BCB DECFSZ STACK_11, F
$004F $2851 GOTO $+2
$0050 $2854 GOTO $+4
$0051 $0BCA DECFSZ STACK_10, F
$0052 $2851 GOTO $-1
$0053 $284E GOTO $-5
$0054 $304A MOVLW 74
$0055 $00CA MOVWF STACK_10
$0056 $0BCA DECFSZ STACK_10, F
$0057 $2856 GOTO $-1
$0058 $283E GOTO L_main_3
$0059 $2859 GOTO $Het zal wel korter kunnen maar goed dat is even kijken
Aan de C code kan je aflezen dat ik de INTERRUPT heb gebruikt en dat hij hier op schakelde
en als rb7 hoog is dat hij verder mag met zijn programma