Ik ben bezig met het maken van een 8x8x8 LED Cube, ik had van een tweaker een ontwerp gekregen. Dat ontwerp heb ik helemaal in elkaar gesoldeerd op een experimenteerbordje, maar het geheel werkt voor geen meter, en ik vertrouw het ontwerp ook helemaal niet (heb er al meerdere fouten in ontdekt..). Dus mijn vraag is nu, heeft iemand een ontwerp liggen voor zo'n kubus die werkend is bevonden?
En nog een andere praktische vraag: Bij het solderen van het vorige ontwerp heb ik gemerkt dat er superveel draden naar GND en VCC geschakeld moeten worden, bij mijn eerste probeersel heb ik al die draden op 1 soldeereilandje weten te persen, maar dat werkte niet handig (je smelt er 1 vast, schieten er 3 los.. enz.), weet iemand iets slimmers?
Tot slot: Weet iemand een goed etsbedrijf (dan overweeg ik om het te laten etsen...)?
Schema wat ik nu gebruikt heb:

Wijzigingen hierin:
- Pin 14 van IC 1 ook daadwerkelijk aan Vcc +5V gehangen
- Pin 10 en 15 van IC 2 aan respectievelijk + 5V en GND gehangen
Tests hiermee:
- Heb de PIC geprogd met een Wisp648
- Programma code:
Resultaten:
Niks gaat branden
Ik heb de schakeling even doorgemeten, is allemaal in orde. Dus wat er mis gaat vat ik niet.
En nog een andere praktische vraag: Bij het solderen van het vorige ontwerp heb ik gemerkt dat er superveel draden naar GND en VCC geschakeld moeten worden, bij mijn eerste probeersel heb ik al die draden op 1 soldeereilandje weten te persen, maar dat werkte niet handig (je smelt er 1 vast, schieten er 3 los.. enz.), weet iemand iets slimmers?
Tot slot: Weet iemand een goed etsbedrijf (dan overweeg ik om het te laten etsen...)?
Schema wat ik nu gebruikt heb:
Wijzigingen hierin:
- Pin 14 van IC 1 ook daadwerkelijk aan Vcc +5V gehangen
- Pin 10 en 15 van IC 2 aan respectievelijk + 5V en GND gehangen
Tests hiermee:
- Heb de PIC geprogd met een Wisp648
- Programma code:
LIST P=16F628A
include <P16F628A.INC>
__CONFIG _CP_OFF & _DATA_CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF
ERRORLEVEL -302 ; free 16F628 RAM starts at 0x20(depends on type microcontroller)
CBLOCK 0x20
Var1
bits1
cntr1
cntr2
cntr3
herhalen
herhalen2
ENDC
#define BANK0 bcf STATUS,RP0 ; RAM PAGE 0
#define BANK1 bsf STATUS,RP0 ; RAM PAGE 1
#define data PORTB,0 ;dit is dus pin 14 van het eerste schuifregister(data pin)
#define klok PORTB,2 ;klokingang van eerste schuifregister(pin 11)
#define latch PORTB,1 ;dit is de latch van schuifregister 1,2 en 3(pin12)
#define vdata PORTB,4 ;schuifregister van de verdiepingen
#define vklok PORTB,6
#define vlatch PORTB,5
;startadres of the controller
org 0x0000
; For using A0-A3 as digital I/O
movlw D'7' ;
movwf CMCON ; Comparators off, all pins digital I/O
; Reset Port values
clrf PORTA
clrf PORTB
BANK1 ; Switch to bank 1
movlw b'00000000' ;
movwf TRISA ; PORTA = all outputs
movlw b'00000000' ;
movwf TRISB ; PORTB = all outputs
BANK0 ; Switch to bank 1
main
movlw b'00000000'
call LOOPLICHT
movlw b'00000000'
goto main
LOOPLICHT
movlw b'00000000'
call inklokken
call inklokken
call inklokken
call inklokken
call inklokken
call inklokken
call inklokken
call inklokken ;op alle registers staat nu een 0
call v1
call lopen
call v2
call lopen
call v3
call lopen
call v4
call lopen
call v5
call lopen
call v6
call lopen
call v7
call lopen
call v8
call lopen
lopen
movlw d'8'
movwf herhalen
l1 movlw b'00000001'
call inklokken
decfsz herhalen,f
goto l1 ;8 keer 00000001 inklokken
call vertraging
movlw d'8'
movwf herhalen
l2 movlw b'00000010'
call inklokken
decfsz herhalen,f
goto l2
call vertraging
movlw d'8'
movwf herhalen
l3 movlw b'00000100'
call inklokken
decfsz herhalen,f
goto l3
call vertraging
movlw d'8'
movwf herhalen
l4 movlw b'00001000'
call inklokken
decfsz herhalen,f
goto l4
call vertraging
movlw d'8'
movwf herhalen
l5 movlw b'00010000'
call inklokken
decfsz herhalen,f
goto l5
call vertraging
movlw d'8'
movwf herhalen
l6 movlw b'00100000'
call inklokken
decfsz herhalen,f
goto l6
call vertraging
movlw d'8'
movwf herhalen
l7 movlw b'01000000'
call inklokken
decfsz herhalen,f
goto l7
call vertraging
movlw d'8'
movwf herhalen
l8 movlw b'10000000'
call inklokken
decfsz herhalen,f
goto l8
call vertraging
return
v_all
call delay
movlw b'00000000'
call vinklokken
return
v8 call delay
movlw b'11111110'
call vinklokken
return
v7 call delay
movlw b'11111101'
call vinklokken
return
v6 call delay
movlw b'11111011'
call vinklokken
return
v5 call delay
movlw b'11110111'
call vinklokken
return
v4 call delay
movlw b'11101111'
call vinklokken
return
v3 call delay
movlw b'11011111'
call vinklokken
return
v2 call delay
movlw b'10111111'
call vinklokken
return
v1 ; 12345678
call delay
movlw b'01111111'
call vinklokken
return
inklokken
movwf Var1 ; zet de waarde vanuit w in Var1. dit is het getal wat geklokt moet worden
movlw D'8' ;zet de waarde 24 in het werkregister
movwf bits1 ;sla de waarde 24 uit w op in bits1 dit is het aantal bits wat ingeklokt moet worden
loop2 rlf Var1,1 ;rotate left trough carry en sla het resultaat op in Var1. Eerste bit zit nu in de carry
btfss STATUS, C ; lees de carry uit. Is carry= 1?
bcf data ;zo nee, zet de datalijn naar 0
btfsc STATUS, C ; is carry 0?
bsf data ;zo nee data is 1
bsf klok
nop
bcf klok ;bitje is nu ingeklokt
decfsz bits1,f ;verlaag bits1 met één totdat die nul is
goto loop2 ; is bits1 0? dan "return" zo nee ga naar loop1
bsf latch
nop
bcf latch ;latch dus resultaat is zichtbaar
return
vinklokken
movwf Var1 ; zet de waarde vanuit w in Var1. dit is het getal wat geklokt moet worden
movlw D'8' ;zet de waarde 24 in het werkregister
movwf bits1 ;sla de waarde 24 uit w op in bits1 dit is het aantal bits wat ingeklokt moet worden
loop3 rlf Var1,1 ;rotate left trough carry en sla het resultaat op in Var1. Eerste bit zit nu in de carry
btfss STATUS, C ; lees de carry uit. Is carry= 1?
bcf vdata ;zo nee, zet de datalijn naar 0
btfsc STATUS, C ; is carry 0?
bsf vdata ;zo nee data is 1
bsf vklok
nop
bcf vklok ;bitje is nu ingeklokt
decfsz bits1,f ;verlaag bits1 met één totdat die nul is
goto loop3 ; is bits1 0? dan "return" zo nee ga naar loop1
bsf vlatch
nop
bcf vlatch ;latch dus resultaat is zichtbaar
return
delay movlw D'1' ;15
movwf cntr2
delay2 movlw D'250' ;250
movwf cntr1
delay3 decfsz cntr1, f
goto delay3
decfsz cntr2, f
goto delay2
return
vertraging
movlw D'255'
movwf cntr2
ver1 movlw D'255'
movwf cntr1
ver2 decfsz cntr1, f
goto ver2
decfsz cntr2, f
goto ver1
return
END
Resultaten:
Niks gaat branden
Ik heb de schakeling even doorgemeten, is allemaal in orde. Dus wat er mis gaat vat ik niet.
[ Voor 84% gewijzigd door bindsa op 08-07-2010 19:12 ]