Pic18Fx52 Program - USART + PWM
Moderátor: Moderátoři
Pic18Fx52 Program - USART + PWM
Zdravím, potřeboval bych pomoct s programem pro PIC 18F252, jedná se o maturitní práci, za pomoc bych klidně byl i ochoten něco zaplatit ).
Přesněji jde pouze o Přijmutí 8mi bit čísla (Např 10000010) a potom o PWM.
Abych vysvětlil to přijmutí. Přijímat bych to měl z USARTU (Pouze Rx nic víc) kde přijmu cosi ve tvaru XYYYZZZZ (Kde Z je číslo pinu na PORTB v binárce a X (nejvyšší bit) je nastavená hodnota na výstupu pinu portu B, Y zatím nevyužité) Např: 10000010 - Nastaví na PORTB Pin 3 na log. 1; 00000001 - Nastaví pin č. 1 na log 0.
U PWM je sedná o řízení stejnosměrného motoru (pouze řízení), nejlépe nějak vyřešit abych mohl frekvenci regulovat také přes Rx (Zřejmě to budu posílat do PICu přes String a né INT.)
Nejlépe bych to psal v Cčku.
Díky za kontakty )
Přesněji jde pouze o Přijmutí 8mi bit čísla (Např 10000010) a potom o PWM.
Abych vysvětlil to přijmutí. Přijímat bych to měl z USARTU (Pouze Rx nic víc) kde přijmu cosi ve tvaru XYYYZZZZ (Kde Z je číslo pinu na PORTB v binárce a X (nejvyšší bit) je nastavená hodnota na výstupu pinu portu B, Y zatím nevyužité) Např: 10000010 - Nastaví na PORTB Pin 3 na log. 1; 00000001 - Nastaví pin č. 1 na log 0.
U PWM je sedná o řízení stejnosměrného motoru (pouze řízení), nejlépe nějak vyřešit abych mohl frekvenci regulovat také přes Rx (Zřejmě to budu posílat do PICu přes String a né INT.)
Nejlépe bych to psal v Cčku.
Díky za kontakty )
Naposledy upravil(a) eXilim dne 05 pro 2011, 17:56, celkem upraveno 1 x.
Andrea: Děkuji, opravena už to řešim zas od rána tak se mi to zase motá
Atlan: No upřímě nemám nic. Nějakej pátek už programuju v C++ (i C a win aplikace) a doted jsem dělal pouze se 16F84A v assembleru, potřebuju přejít na Cčko a nakopnout na nějakou cestu. Dnes mi přišli od známýho 18F252 (všichni mi nadávaj že sem měl koupit něco jinýho, nevím proč, ale předem říkám - dostal sem dva kousky).
Něco sem už o tom četl, ale potřebuju takový ty začátečnický rady
Sem zvyklej psát v netbeans tak nevím jestli můžu pokračovat a jen integrovat compilátor?
Dále nevím jak to vlastěn funguje (čtení z portu, čtení z UARTU atpd.). Pokud to dobře chápu, načtu knihovnu s funkcema něco ve smyslu writeport(xxxx) atpd?
Díky předem
Atlan: No upřímě nemám nic. Nějakej pátek už programuju v C++ (i C a win aplikace) a doted jsem dělal pouze se 16F84A v assembleru, potřebuju přejít na Cčko a nakopnout na nějakou cestu. Dnes mi přišli od známýho 18F252 (všichni mi nadávaj že sem měl koupit něco jinýho, nevím proč, ale předem říkám - dostal sem dva kousky).
Něco sem už o tom četl, ale potřebuju takový ty začátečnický rady
Sem zvyklej psát v netbeans tak nevím jestli můžu pokračovat a jen integrovat compilátor?
Dále nevím jak to vlastěn funguje (čtení z portu, čtení z UARTU atpd.). Pokud to dobře chápu, načtu knihovnu s funkcema něco ve smyslu writeport(xxxx) atpd?
Díky předem
- ZdenekHQ
- Administrátor
- Příspěvky: 25593
- Registrován: 21 črc 2006, 02:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Asi založíme sekci "Pro zoufalé studenty" a budem to tam přesouvat. Brzy to ale zřejmě začne konkurovat Hvjezdné pjechotě...
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Proč pro zoufalé studenty? Jen sem se zeptal a poprosil o rady
edit: Připojuju soubor s programem který tvořím, vím plno tam toho chybí, snažím se to psát podle http://ww1.microchip.com/downloads/en/D ... 51297f.pdf ale plno věcí tam nechápu bohužel...
edit2: opravil sem nějaké chyby co sem zapoměl
edit: Připojuju soubor s programem který tvořím, vím plno tam toho chybí, snažím se to psát podle http://ww1.microchip.com/downloads/en/D ... 51297f.pdf ale plno věcí tam nechápu bohužel...
edit2: opravil sem nějaké chyby co sem zapoměl
- Přílohy
-
- sw.txt
- (1013 bajtů) Staženo 88 x
- ZdenekHQ
- Administrátor
- Příspěvky: 25593
- Registrován: 21 črc 2006, 02:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
To "zoufalé studenty" není (zatím) myšleno nijak špatně - prostě jsou období, kdy máte rojení, většinou těsně před tím, než přijde včelař vymetat úl...
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Píšeš, že C++ znáš, ale jen na PC.
Tak mi přijde divný, že sedmý bit testuješ takhle:To snad nemůže jít ani přeložit, ne? Nemělo by tam být spíš něco jako:?
A proč v té funkci usartRead čteš osm bajtů a pak se snažíš vrátit jen jeden (opět blbě)?
Tak mi přijde divný, že sedmý bit testuješ takhle:
Kód: Vybrat vše
unsigned char read = usartRead();
if(read[6]==0) ...
Kód: Vybrat vše
if ( read & 1 << 6 ) ...je_to_jednicka... else ...je_to_nula...
A proč v té funkci usartRead čteš osm bajtů a pak se snažíš vrátit jen jeden (opět blbě)?
Nene nekopíroval. Ok změna:
Zamaskuju to, co přijde a získám 7. bit, už je to spráně?
Jinak díky za rady
Kód: Vybrat vše
#include "18c252.h"
#include "uart.h"
unsigned long proc_type 0x8252;
void main() {
unsigned char read;
read = getRx();
baudUSART (BAUD_IDLE_CLK_HIGH &
BAUD_8_BIT_RATE &
BAUD_WAKEUP_ON &
BAUD_AUTO_ON);
if (read & 0x40) setPwm(read);
else setPin(read);
}
unsigned char getRx() {
unsigned char result;
result = ReadUSART();
return result;
}
void setPin(unsigned char get) {
unsigned char pin;
unsigned char hodnota;
hodnota = get & 0x80;
pin = get & 0xF;
//nastavení pinu
}
Jinak díky za rady