Dvouintervalový blikač
Moderátor: Moderátoři
Dvouintervalový blikač
Vím, že nejjednodušší bude řešit to přes nějaký μP (pokud možno Pascal nebo C)
Máte proto nějaké doporučení, jaký μP zvolit, případně schéma zapojení?
Obvod bude pro napájení 12 V.
Předem děkuji za rady.
Atlan: Nemáš nějaký příklad zapojení (schéma)?
hakamusai: Programování by právě nebyl problém, horší je to se sestavením programátoru..
Nějaké odkazy na funkční levný programátor (schéma)?
Bude stačit, když si sestavím tento?
V mikropascalu jsou v helpu i schémata zapojení.
Schema třeba tohle:

http://6502.org/users/dieter/mpd/mpd_3.htm
Mám následující problém po vložení PIC12F675 do patice se nic neděje, přitom chci, aby dioda blikala s 1 sekundovým intervalem.
Použivám kompilátor mikroPascal PRO.
(Frekvence oscilátoru v mP PRO nastavena na 40 Hz namísto 4 MHz z DataSheetu, tam je zjevně překlep)
Zde je schéma (použil jsem doporučené):

Pascal kód:
program PIC12F675_LEDBLINK;
begin
TRISIO := 0;
{
CMCON := 7;
ANSEL := 0;
VRCON := 0;
ADCON0 := 0;
}
while 1 do
begin
GPIO.GP2 := 1;
Delay_ms(1000);
GPIO.GP2 := 0;
Delay_ms(1000);
end;
end.
Zjištění:
- když přes (další) rezistor měřím napětí na GPIO5 (cca 2.22 V) a "sáhnu" si na onen rezistor, tak začně dioda blikat, jinak nic.
- zřejmě je třeba pozměnit prvotní nastavení před cyklem, protože ať nastavím TRISIO jakkoliv (:=%00010 (0) nebo %00011 (3)...) dělá to pořád to stejný - viz "zjištění výše"... Když to nenastavím vůbec, nedělá to nic
Jsem si jist, že je to v kódu, protože jsem zkoušel zkompilovaný .hex soubor z této stránky a se zapojením funguje (LED bliká)
Na netu jsou pro tento konkrétní typ čipu příklady, ale jsou většinou v Assembleru, což není něco, čemu bych rozuměl.
Datasheet zde nebo zde (CZ).
Budu rád za jakékoliv rady.
Každopádně se mi to podařilo zprovoznit!!!
Zásek byl hlavně v kompilátoru a jeho nastavení:
Je třeba nastavit interní oscilátor (Project/Edit Project.../Oscillator Selection - INTOSC oscillator) a frekvenci oscilátoru zde tedy nastavit zpět na 4 MHz (v datasheetu to mají správně, jen z počátku došlo k nepochopení)
Výsledný kód, kdyby ho někdo potřeboval (dioda bliká po 1 sekundě):
Kód: Vybrat vše
program PIC12F675_LEDBLINK;
begin
GPIO := 0x00;
TRISIO := 0x00; // all ports as output
ANSEL := 0x00; // turns off the ADC module
ADCON0 := 0x00; // turns off the A/D converter
CMCON := 0x07; // turns off the comparator
VRCON := 0x00; // turns off Vref for min current
while 1 do
begin
GPIO.GP2 := 1;
Delay_ms(1000);
GPIO.GP2 := 0;
Delay_ms(1000);
end;
end.(Změna blikání už je jen věcí úpravy kódu ve while cyklu)
- frantajetel11
- Příspěvky: 1922
- Registrován: 13 lis 2008, 00:00
- Bydliště: Kladno