Sida 1 av 1
RS232 med PIC 12C509
Postat: 29 december 2006, 08:20:06
av tops
Hej.
Letar efter exempelkod i C för att skriva en subrutin för kommunikation med mellan en PIC 12c509 och datorns serieport. Har hittat lite för tex 16f877, men denna har vad jag förstått ett inbyggt protokoll för rs 232.
Hur gör man för att sätta upp en fungerande konfiguration med 12c509?
Jag har PIC C kompilatorn.
Postat: 29 december 2006, 08:47:52
av bengt-re
Du måste lösa dessa med inline assambler för att få till timingen korrekt ELLER om det finns någon SW-rutin i din C-kompilator.
Postat: 29 december 2006, 11:20:35
av Jeppsson
Annars om du inte känner för att leka Assembler så finns det "Software UART Library" i MikroC...
Postat: 29 december 2006, 14:06:14
av sodjan
Vad är anledningen till att du använder just 12C509 ?
Alltså en OTP modell ?
Allt skulle bli så mycket enklare för dig om du använde en modernare
8-pinnars PIC. 12F675, 629 eler 683 beroende på vad du behöver...
> Har hittat lite för tex 16f877, men denna har vad jag förstått ett inbyggt protokoll för rs 232.
Den har inbyggd *hårdvara* for asynkron seriel kommunikation (USART).
*Ingen* PIC (som jag känner till) har hårdvara för RS232.
Postat: 29 december 2006, 15:07:27
av tops
Hej.
Tack för era svar, jag är rätt grön på området, så därfur har jag inte full koll.
Precis som du säger har inte f877 hårdvara för rs 232 utan det var usart jag syftade på. Anledningen till 509 var att det var den som jag hade liggande hemma och det var en liten krets. Men jag skall kika på dem du nämde, kanske lämpar sig bättre.
Postat: 29 december 2006, 15:15:38
av sodjan
Problemet med "C" kretsar är att de är jättejobbiga att utveckla med,
eftersom man bara kan programmera dom *en* gång. Sedan får
man ta en ny. Gäller alla "C" modeller. "F" kretserna har flash-minne
som kan programmeras om minst 100.000 gånger (gäller 12F629/675/693,
varierar lite, se databladen).
> Men jag skall kika på dem du nämde, kanske lämpar sig bättre.
Jag nämnde just de enbart för att de har lika många pinnar.
Seriekommunikationen blir betydligt enkelare om du kan välja en
med lite fler pinnar men som har hårdvaru-USART. T.ex 16F688, 14-pinnar
och fullt modern på alla sätt.
Postat: 30 december 2006, 16:16:44
av bengt-re
Inte för att det är supersvårt att skriva mjukvaru serielänkar, men har man inte oscilloscop så är det lite svårare. 12f675/629 är bra småkretsar och lite modernare än de 10F2xx som jag ofta använder. 10F i SOT-23 är verkligen en liten söt krets som ändå kan göra förvånandsvärt mycket. Byggde en PWM-krets med stöd för ett treknappsanvändarinterface med en sådan i Fredags faktist. 10F har en del irriterande begränsningar som att man inte kan välja destination på många instruktioner, inte kan välja WPU individuellt för de olika pinnarna och så, men det är begränsningar som går att leva med.
12F6XX är enklare att programmera och har också mer minne, AD och annat godis - tyvärr saknar den UART. PIC16F628A är en bra krets annars, lite större tyvärr.
Postat: 30 december 2006, 16:24:57
av sodjan
10F har i princip samma begränsningar (arkitekturmässigt) som alla
andra "base-level" PICs, d.v.s de med 12-bitars programord. Men
dom valde väl den arkitekturen för att kunna klämma in den i SOT-
kapseln...
Även den här nämnda 509'an har 12-bitars arkitekturen, om jag inte tar fel.
Bör undvikas (om det går och om det finns alternativ).
628A är OK, men har 18 pinnar och större kapsel än den 688 som jag föreslog.
688'an har också "nanowatt" arkitekturen med 8 Mhz 1% intosc m.m.
Postat: 30 december 2006, 16:34:40
av bengt-re
Antar att jag missat 688án. Som det ser ut använder jag nästan alltid små (6-8 pinnars) eller 28-44 pinnars. Sist jag körde med midsize så var det 628A som gällde.