Knightrider (nybörjar varning)

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Vilken kondensator

Inlägg av Pinkevin »

Jag ska använda en 20 MHz kristall till PIC kretsen, men hur stor kapacistans ska de 2 kondensatorerna ha som man ska parallell koppla kristallen med?
Det står att de ska ha mellan 10 och 75 pF i databladet till dem, men exakt hur stor ska de ha?
Och, ska jag använda en kristall som är avsedd för parallell eller serieresonans?
Det är en sån här kristall jag ska använda:
http://www.elfa.se/pdf/74/07450000.pdf
AsmN
Inlägg: 76
Blev medlem: 10 juni 2003, 17:39:16
Ort: Pedersöre, Finland
Kontakt:

Inlägg av AsmN »

Du skall använda en för parallell.

Om jag minns rätt så står det 15-30pF i PIC:ens datablad. Någonting där emellan blir bra :)
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

>> Pinkevin

Köp dessa itället: http://www.elfa.se/elfa/produkter/se/2013474.htm
De är mindre och t.om. billigare. Dessutom står det angivit vilken kapacitans kondingarna ska ha.
Småkondingar: http://www.elfa.se/elfa/produkter/se/2012694.htm
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Re: lite tips...

Inlägg av anlamotte »

Pinkevin skrev:
anlamotte skrev:Hej jag gjorde något liknande för ett tag sedan med en AVR och Bascom...
tänkte dela med mig lite med lite tips...

Ett enkelt sätt att fixa det hela är att ha en interrupt rutin
som går på en timer... sen kan man använda en variabel som
'delar' tiden i ett visst antal delar... t.ex:

Kod: Markera allt


...

resten är ganska enkel, värdet för varje lysdiod/lampa (ljusstyrka)
finns i array'en Leds(), värdet på Led_fade bestämmer hur snabbt
varje lysdiod ska släckas.

Med denna interupt rutin skulle ett rinnade ljus kunna skrivas med följande kod:

Kod: Markera allt


...

restens sköts av interupten... hoppas detta hjälper dej lite iaf..
Hej
Är bascom någon sorts basic till avr eller? För det är väldigt likt basic.
Jo, det hjälpte rätt mycket :)
Frågan är bara ifall man skulle kunna något liknande med en PIC.
En PIC 16F84A har bara 13 st I/O portar, medans den avr krets som du har använt ser ut att ha 16 st, så det blir lite problem där.
Men jag får knåpa vidare på hur jag ska göra för att få det att fungera.
Ni som har gjort knightrider's med fejdande lysdioder har ju använt AVR kretsar, så ifall jag ska kunna använda kod från era knightrider's så måste jag lära mig (lite grann) avr programmering också, vilket tar tid.
Men ni ska ha ett stort tack för att ni hjälper mig med detta.
Jag ska åka in till elfa senare idag och köpa resten av de saker jag behöver för att kunna bygga en JDM 2.
Också ska jag försöka få min vanliga knightrider att fungera (den som inte fadar).
Men innan jag åker så vill jag veta ifall den här koden fungerar, för ifall den inte gör det så åker jag inte in heller.
Tanken från början var att köpa en veroboard (kopplingsplatta, sån lödfri) eftersom att det är mycket mera praktist.
I katalogen så har de byggt på såna små bitar med 10 st 2x5 håls stora "terminaler" där man ska trycka ner komponentbenen, men på nätet så har de bara den stora "mittbiten" som man bygger på de mindre bitarna på.
Ifall det bara är mittibten utan sidobitarna så köper jag en experiment platta, men då måste koden fungera, eftersom att jag inte har någon lödsug eller avlödningsfläta, så när jag har lödat fast alla komponenter på kretskortet så får koden se till att fungera, för jag kan inte löda av komponenterna sen igen.
Så jag tror att jag kör iväg ett mail till dem och ser efter ifall det bara är mittibten eller om det även är sidobitarna också, och hoppas på svar innan jag åker in.
japp, Bascom AVR, använder sig av basic, mycket smidigt när man snabbt
vill få ihop något... Snabbt och bra blir det med.. =)
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

$tiff skrev:>> Pinkevin

Köp dessa itället: http://www.elfa.se/elfa/produkter/se/2013474.htm
De är mindre och t.om. billigare. Dessutom står det angivit vilken kapacitans kondingarna ska ha.
Småkondingar: http://www.elfa.se/elfa/produkter/se/2012694.htm
Tack! :)
Mjo, men det förstod ju inte jag, att det var last kapacitans som visade vilken kapacistans kondensatorn skulle ha ;)
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Re: lite tips...

Inlägg av Pinkevin »

anlamotte skrev: japp, Bascom AVR, använder sig av basic, mycket smidigt när man snabbt
vill få ihop något... Snabbt och bra blir det med.. =)
Det låter ju bra =)
Förrästen, du verkar kunna en del om avr.
Vet du ifall det finns ngon krets som heter Atiny22 eller ATtiny22?
För i AoE 10-11/2001 så har de med en 6 lysdiods kitt scanner baserad på en Atiny22 (ja, de stavar den Atiny och inte ATtiny).
Jag har kollat på atmels hemsida efter den, och även sökt där eftersom att de iaf brukar ha kvar specifikationerna på dem och en snutt text där det står att "xxx har blivit utbytt mot den bättre xxx...", men den hittar inget alls, varken när man söker efter Atiny22 eller ATtiny22.
Jag skulle vilja ha databladet till den kretsen, för att iaf försöka göra en 8 (alt. 16) lysdiods kitt scanner mha en avr och skriva mjukvaran till den i asm, men jag skulle först behöva datasheetet för Atiny22 så jag vet vilka saker jag ska ändra för att få den att fungera.
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Här finns databladet till ATtiny22: http://avr.hw.cz/hw/avr/pdf/attiny_22.pdf
Andledningen till att den inte finns på Atmels sida är för att den inte produceras längre, innehöll en ganska alvarlig bug har jag läst (sök på tex avr-freaks). Vet inte vilken krets som du kan använda som motsvarar den, men alla ATtiny1x borde fungera om du vill ha samma pinout och det räcker med 1KB flash istället för 2KB.
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Tackar!
Okej, men går det att använda ett program skrivet för ATtiny22 i en ATtiny13, utan att behöva ändra i koden förutom den delen som visar vilken avr krets det är?
Koden i fråga är denna:
http://www.alltomelektronik.com/Files/014038-11.zip
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Vet inte, men instruktionsuppsättningen borde vara ungefär densamma, så för den delen borde det fungera. Såg därimot att tiny13 hade en extra I/O-pinne som kan användas som reset också, men det borde väl inte vara några problem heller egentligen. Prova programmet i AVR-studio med någon annan tiny än 22:an och se om det fungerar som det ska.
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Jag ändrade den .inc filen den skulle inkludera till ATtiny26's sådan, och det fungerade, utan att behöva ändra någonting alls i koden :)

Jag tänkte försöka göra mjukvaran till en 8 lysdiods kitt scanner med en ATtiny26, eftersom att det bara blir att ändra lite i den koden:
http://www.alltomelektronik.com/Files/014038-11.zip
Men jag förstår inte riktigt hur man väljer vilka utgångar som man ska göra höga.

Här är koden som jag vill modifiera för att använda 8 lysdioder:

Kod: Markera allt

.include "tn26def.inc"
 
 rjmp RESET   ;reset handle
 
 
 
 
;* Register variables 
 
 .def T1   = r16
 .def T2   = r17 
 .def temp = r18 
 
;* Code 
 
runDelay: 
 ldi T1, 150   ;T1 used as delay 2nd count 
 ldi T2, 150   ;T2 used as delay 3nd count 
delay_1: 
 dec T1 
 brne delay_1 
 dec T2 
 brne delay_1 
 dec temp    ;temp must be preset as 
 brne delay_1    ; delay master count 
 ret 
 
 
 

;* Mainprogram - let the LEDs run back and forth
 
;* Defines
 
 .equ A = 0   ;portB0 (1st LEDs)
 .equ B = 1   ;portB1 (2nd LEDs)
 .equ C = 2   ;portB2 (3th LEDs)
 .equ D = 3   ;portB4 (common 1)
 .equ E = 4    ;portB5 (common 2)
 
 .equ X = 1   ;X times runDelay
 
;* Register variables
 
 .def baff = r19
 
;* Code
 
RESET:
 ldi    temp, RAMEND  ;point stack in RAM
 out    SP, temp
 
 sbi DDRB, A   ;output A
 sbi DDRB, B   ;output B
 sbi DDRB, C   ;output C
 sbi DDRB, D   ;output D
 sbi DDRB, E   ;output E
 
KITT:
 ldi baff, 0b11101011 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101101 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101110 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110011 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110101 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110110 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110101 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11110011 ;D active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101110 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 ldi baff, 0b11101101 ;E active and light next LED
 out PORTB, baff  ;data to portB
 ldi temp, X   ;delay
 rcall runDelay
 rjmp KITT   ;next loop
Det jag inte riktigt förstår är hur jag ska välja vilka i/o pinnar som ska vara höga.
Altså, det är ju detta:
ldi baff, 0b11101101
out PORTB, baff
Som säger att pinne x och y (jag tror att det är så iaf, att de första fyra bitarna visar att en pinne x ska bli hög och att de 4 sista bitarna visar att pinna y ska bli hög). ska bli höga.
Men hur vet jag vilka pinnar som heter vad, i binär form?
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Eftersom ATtiny26 har 16 I/O-pinnar så gör du nog lättast i att göra om koden helt.. Vad jag förstår så är den där "kittscannern" uppbyggd i 2 segment på 3st lysdioder vardera. Dom tre lägre bitarna väljer lysdiod som ska vara tänd genom att sätta någon av dom låg och dom två övre bitarna väljer vilket segment med lysdioder som det ska gälla genom att sätta någon av dom höga. Vill du absolut bara ändra i koden så kan du tex göra två segment med 4st lysdioder i varje, men simplast är ju i ditt fall att bara ansluta 8lysdioder till en port, eftersom du har pinnar så det räcker och blir över till det. Sedan kan du tända och släcka dom hur du vill.
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Precis, här är schemat till kittscannern:
http://www.grendosa.com/dump/kitt.jpg

Jag har tänkt göra så att varje segment får 4 lysdioder.
Men vad heter de olika pinnarna binärt?
Jag har letat igenom databladet till ATtiny22, men jag hittar inte det.
Alltså, ifall jag vill att PORTB1 ska bli hög, vad heter då PORTB1 binärt?
Användarvisningsbild
karlstedt
EF Sponsor
Inlägg: 966
Blev medlem: 14 oktober 2003, 16:55:23
Ort: Lund
Kontakt:

Inlägg av karlstedt »

ta en titt på instruktionerna CBI och SBI.
Då blir det lätt att sätta en pinne hör i en port.
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Förstår inte riktigt vad du menar med vad dom heter binärt.
PORTB0 är bit 0 på PORTB, PORTB1 är bit 1 på PORTB osv... I den inkluderade filen finns pinnarna definerade där dom heter PB0,PB1 osv. Så du kan skriva tex "sbi PORTB,PB1" eller "sbi PORTB,1". "PB1" är definierat i den inkluderade filen som 1 så båda dessa sätt ger samma resultat.
ldi r16,0b10101010
Bit7........| || || || |
Bit6..........|| || || |
Bit5...........| || || |
Bit4.............|| || |
Bit3..............| || |
Bit2................|| |
Bit1.................| |
Bit0...................|
Pinkevin
Inlägg: 285
Blev medlem: 1 januari 2004, 12:44:10
Ort: Norrtälje

Inlägg av Pinkevin »

Melker skrev:Förstår inte riktigt vad du menar med vad dom heter binärt.
PORTB0 är bit 0 på PORTB, PORTB1 är bit 1 på PORTB osv... I den inkluderade filen finns pinnarna definerade där dom heter PB0,PB1 osv. Så du kan skriva tex "sbi PORTB,PB1" eller "sbi PORTB,1". "PB1" är definierat i den inkluderade filen som 1 så båda dessa sätt ger samma resultat.
ldi r16,0b10101010
Bit7........| || || || |
Bit6..........|| || || |
Bit5...........| || || |
Bit4.............|| || |
Bit3..............| || |
Bit2................|| |
Bit1.................| |
Bit0...................|
Jo, det första visste jag.
Men det "ldi r16,0b10101010", vad betyder 0b10101010, det är ju ett binärt tal, men vad betyder det?
Den flyttar 10101010 till r16, men vad är 10101010?
Skriv svar