forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Komunikace PIC12F629 přes RS232

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Lukáš
Anonymní





PříspěvekZaslal: 07 únor 2008, 18:08    Předmět: Komunikace PIC12F629 přes RS232 Citovat

Ahoj,
nemá prosím někdo hotový kód pro Micochip PIC12F629 aby mohla odesílat (jde mi hlavně o odesílání) data do počítače přes RS232-TTL?

Potřebuji udělat program pro 12F629 s externím krystalem 32768 Hz, který by odesílal data, ale totálně nechápu jak, protože tahle PICka narozdíl od např. 16F877A nemá hardwarový USART...

Předem děkuji Smile.
Návrat nahoru
 

 
jankop
moderátor
moderátor


Založen: 24.10.2007
Příspěvky: 336
Bydliště: Brno

PříspěvekZaslal: 07 únor 2008, 21:17    Předmět: Citovat

Softwarové RS232 je pro 12F675/629 běžně na webu. Stačí se podívat. Ovšem vzhledem k tomu, že chceš použít krystal 32768Hz, tak je to v tvém případě téměř nerealizovatelné. Budeš se muset zamyslet a z něčeho slevit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1460

PříspěvekZaslal: 07 únor 2008, 22:39    Předmět: Citovat

Lukas spomynal, ze potrebuje data z PICu vysielat, mozno nepotrebuje prijem.
Ak PIC spravi s 32kHz Xtalom 8192 instrukcii, ,moze komunikaciu spravit tak, ze najprv si nieco spracuje co potrebuje a potom v jednej sw slucke odvysiela bajt po bajte.

Ak by chcel komunikovat rychlostou 1200Bd, potom jeden bit bude trvat cca 6.82 instrukcie. Ak dodrzis medzi start bitom a prvymi siestimi bitmi 7 instrukcii a medzi poslednymi dvoma bitmi bude 6 instrukcii, chyba bude cca 0.6%, co je celkom OK. Aj tych 7 instrukcii by to myslim hravo zvladlo vsade.

Jeden z moznych postupov:
1) na linku vysli log.0 - start bit
2) nacitaj si prvy bit, ktory chces vyslat.
3) Dopln cinnost v bodoch 1 a 2 tak, aby ti to cele trvalo 7 instrukcii

4) na linku nastav hodnotu 2. bitu z bajtu
5) nacitaj si dalsi bit, ktory chces vyslat - urcite ma PIC instrukciu rotovania napr cez CY.
6) Dopln cinnost v bodoch 4 a 5 tak, aby ti to cele trvalo 7 instrukcii

7) na linku nastav hodnotu 3. bitu z bajtu
8 ) nacitaj si dalsi bit, ktory chces vyslat
9) Dopln cinnost v predchadzajucich dvoch bodoch tak, aby ti to cele trvalo 7 instrukcii

...

na linku nastav hodnotu 8. bitu z bajtu
nacitaj si dalsi bit, ktory chces vyslat
Dopln cinnost v predchadzajucich dvoch bodoch tak, aby ti to cele trvalo 6instrukcii

na linku nastav log.1 - stop bit
pockaj do 7(1 stop bit) az 14(2 stop bity) instrukcii - Ak priprava dalsieho bajtu trva dlhsie ako 14 instrukcii, mozes to cakanie kludne vynechat, ale vystup urcite musis nastavit na log.1

chod si pripravit dalsi bajt na odvysielanie a znovu spusti hore uvedenu sekvenciu.
Takto mozes do PC kludne posielat spravy rychlostou 1200Bd.


Cas medzi vysielanim jednotlivych bajtov nie je kriticky - nehovorim o protokoloch ako Modbus RTU Wink, takze mas hafo casu. Dolezite je dodrzat cas medzi jednotlivymi bitmi s presnostou aspon cca 2%

S prijmom to vidim dost problematicke. Volakedy som programoval sw UART na PIC 16C84 a pri Xtale 9.6MHz (alebo polovicny? uz som si neni velmi isty) som sa dostal na 19200Bd. Viac to jednoducho neslo a aj to uz bolo problematicke, lebo pod jednym prerusenim siel aj casovac, takze spolahlivo len 9600Bd. Jednoduchym vydelenim pomerov Xtalov mi vychadza, ze sa mozes pre prijem i vysielanie dostat tak na 32Bd (64Bd?) rychlost, akurat, ze tu PC nepodporuje Sad.

Ak chces vysielanie iniciovat z PC a nepotrebujes moduly adresovat ci do nich posielat nejake udaje, mozes to vyriesit i tak, ze cez TX z PC vysles do stanice jeden bajt, napr 0x80 alebo 0x30 ('0'). TX z PC prived na interupt do PIC. Tak zaregistrujes, ze PC od procesora nieco chce. 0x80 bude drzat linku 5.8ms v log. 0, za tu dobu PIC spravi skoro 48 instrukcii, mozno sa ti tam zmesti aj sw kontrola poziadavku z PC na zaslanie udajov, ak interupt pouzivas na nieco ine.

Daj vediet, ako to dopadlo.

Martin
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
jankop
moderátor
moderátor


Založen: 24.10.2007
Příspěvky: 336
Bydliště: Brno

PříspěvekZaslal: 07 únor 2008, 23:01    Předmět: Citovat

Martine, vím, že tomu docela rozumíš. A taky bych to asi nějak dokázal naprogramovat sám. Ale z formulace dotazu je viditelné, že Lukáš v tom ještě nemá úplně jasno. Nejspíš se snaží udělat složitě něco, co jde udělat velmi jednoduše. Předpokládám, že nám svoje záměry trochu objasní. Tvůj slovní popis je brilantní, ale Lukášovi nejspíš nebude stačit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Lukáš
Anonymní





PříspěvekZaslal: 08 únor 2008, 11:46    Předmět: Citovat

Mnohokrát oběma děkuji. Martinův popis je opravdu skvělí, ale pochybuji, že to dám dokupy. Zatím jsem v programování PIC moc daleko nedošel.

Kamarád, který programuje normální PC aplikace mě prosí, abych mu dal dokupy takovouto krabičku, která mu prostě po zmáčknutí tlačítka odešle data na séiový port.

Pokud nemůžu použít 32k krystal, nevadí. Použiji jiný. Jen nejsem za nic na světě schopen najít ten SW RS232, o kterém mluvil jankop. Už Googluji tři dny v angličtině i češtině a začíná mě to pěkně štvát Smile Vím že moc otravuji, ale nemohl bys mi prosím jankope napsat nějaký web, kde to najdu?

A nebo existuje nějaká PICka s 8mi vývody, kompatibilní s 12F629, která má HW sériový port jako 16F877A, kde jen stačí nastavit pár bitů a už odesílám?
Díval jsem se zde:
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1001&mid=10&lang=en&pageId=74
a píšou tam, že PIC12F609 a PIC12F615 má USART. Stáhl jsem si datasheet, ale nikde na obrázku popisujícím vývody nebylo Tx, jako u 16F877A. Tak teď nevim, jestli se Microchip sekl nebo co.
Návrat nahoru
 

 
jankop
moderátor
moderátor


Založen: 24.10.2007
Příspěvky: 336
Bydliště: Brno

PříspěvekZaslal: 08 únor 2008, 12:17    Předmět: Citovat

Microchip nic takového netvrdí, špatně se díváš, jsou tam nuly.
O sériové komunikaci malých PIC12F675/629 jsou na webu desítky odkazů. Dva za všechny včetně HW
http://www.wrankl.de/SMST4PIC/SMST4PIC.html
http://pandatron.info/elektronika/clanek.php?rubrika=mi&clanek=18
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky
 

 
Lukáš
Anonymní





PříspěvekZaslal: 08 únor 2008, 13:31    Předmět: Citovat

Ouuuuaaa! Mnohokrát děkuji, s tím se už dá něco udělat.

Co se týče toho Microchip webu, tak jsi mě dostal Smile. Prostě jsem si přečetl, že je tam napsáno USART a stačilo mi to Smile. Stejně to ale mají pitomě - u ostatních nemají nic napsané, ale u PIC12F508, PIC12F609 a PIC12F615 tam mají nulu. Tož, tak ať píšou nuly všude nebo nikde Very Happy
Návrat nahoru
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)