Självklart får du låna koden. Den är såpass simpel att det inte är något att skydda.
Skippa reläet i din lösning dock. Använd en transistor och jorda minussidan när du vill klippa tändningen istället. (men det talar vi mer om i ämnet jag såg att du skapat om din varvtalsregulator)
Mvh
Dwarf
Shiftligt till MC
Jag blir knäpp...
Är det någon som har lust, tid och ork att förbarma sig över min kod? Jag behöver ett par (eller fler) extra ögon för att se om jag gjort någon tankevurpa eller annan miss.
Grejen är att som koden nedan är skriven nu så skall lysdioden (se schema tidigare i tråden) tändas om Extern interupt triggas ca 244 gånger per sekund. OK, fine! Kruxet är att jag lyckas tända dioden och hålla den tänd genom att peta frenetiskt på interuptpinnen med en liten kabel ansluten till VCC
Är det kontaktstuds? Jag tror mig nämligen inte vara snabb nog att klara 244 Hz
Så snälla någon, ta en titt och se vad som är galet, om något?
Det handlar om en aTiny15 som går på intern oscillator 1,6 MHz.
[edit]Schemat i tidigare inlägg syns strax igen. Servern bilderna ligger på hade roat sig med att gå ned i batterisparläge när jag råkat dra ur sladden till den. [/edit]
Tack på förhand
Nisse
Är det någon som har lust, tid och ork att förbarma sig över min kod? Jag behöver ett par (eller fler) extra ögon för att se om jag gjort någon tankevurpa eller annan miss.
Grejen är att som koden nedan är skriven nu så skall lysdioden (se schema tidigare i tråden) tändas om Extern interupt triggas ca 244 gånger per sekund. OK, fine! Kruxet är att jag lyckas tända dioden och hålla den tänd genom att peta frenetiskt på interuptpinnen med en liten kabel ansluten till VCC


Så snälla någon, ta en titt och se vad som är galet, om något?
Det handlar om en aTiny15 som går på intern oscillator 1,6 MHz.
[edit]Schemat i tidigare inlägg syns strax igen. Servern bilderna ligger på hade roat sig med att gå ned i batterisparläge när jag råkat dra ur sladden till den. [/edit]
Kod: Markera allt
// Shiftlight XT660R
.include "tn15def.inc"
.def Counter = r17 ;Räknaren i register 17
.def Temp = r16 ;Register 16 används till lite av varje
//-- Testar med 8052 RPM kommer senare ändras till ca 7000 RPM
.equ Varv = 40 ;40 ger 40*6,1 = 244 Hz
.org 0x0000
rjmp Reset
//--- Interrupt Vector -------------------------------------------------
.org INT0addr
rjmp ExtInt ;Extern Interupt INT0
.org OVF1addr
rjmp TimerInt ;Intern Interupt Timer 1 overflow
Reset:
//--- Init --------------------------------------------------------------
ldi Counter, 0x00 ; Nollställ räknaren
ldi Temp, 0b00111011 ; Sätt PB2/INT0 som ingåmg och övriga som utgångar
out DDRB, Temp
sbi PORTB, PORTB3 ; Sätt PB3 till 1
ldi Temp, 0b00000011 ; Sätt att trigga på Stigande flank
out MCUCR, Temp
ldi Temp, 0b01000000 ; Aktiverar extern interupt INT0
out GIMSK, Temp
//-- Sätter timer och overflow till att ge interupt ca 6,1 gånger/sec vid CK 1,6 MHz
//-- 1600000/1024/256 ~ 6,1
ldi Temp, 0b00001111 ; Sätt Timer1 prescaler till CK/1024
out TCCR1, Temp
ldi Temp, 0b00000100
out TIMSK, Temp ; Aktivera interupt på timer1 overflow
sei
Loop:
rjmp Loop
//-- Extern interupt PB2 -----------------------
ExtInt:
inc Counter ; Öka räknaren
reti
//-- Intern Timer Interupt ---------------------------
TimerInt:
ldi Temp, Varv
cp Counter, Temp
brsh Light ; Om räknaren över hoppa
cbi PORTB, PORTB3 ; Släck lysdiod
ldi Counter, 0 ; Nollställ räknare
reti
Light:
sbi PORTB, PORTB3 ; Tänd lysdiod
ldi Counter, 0 ; Nollställ räknare
reti
Nisse
Hmm.. minns inte hur PORTB ser ut som default, men för säkerhets skull, sätt PB2/INT0 i PORTB hög för att aktivera pullup-motståndet.
Kolla om det blir någon skillnad. Om inte:
Räkna fram ett RC-nät som spärrar höga frekvenser (kontaktstudsar). R kopplar du mellan ingången och VCC (den interna pullupen kan funka), C kopplar du mellan ingången och GND. Ofrivilliga kontaktstudsar borde försvinna då.
Kolla om det blir någon skillnad. Om inte:
Räkna fram ett RC-nät som spärrar höga frekvenser (kontaktstudsar). R kopplar du mellan ingången och VCC (den interna pullupen kan funka), C kopplar du mellan ingången och GND. Ofrivilliga kontaktstudsar borde försvinna då.