Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   320 / 1318
(#) Thomas10100 hozzászólása Okt 26, 2008 /
 
Sziasztok!

Még elég kezdő vagyok a PIC-ekben.

Írtam egy programot amiben minden szép és jó, de a watch ablakban a PORTB értéke nem változik.
S1 változóé például igen, és a W értéke is.

Egy LED-es villogóról van szó, késleltetéssel.

#include p18f4550.inc

s1 equ 50H

INIT clrf TRISB
setf TRISA
clrf PORTB

FO: bsf PORTB, 1
call KESES
bcf PORTB, 1
call KESES
goto FO

KESES: movlw d'5'
movwf s1
IDE decfsz s1,1
goto IDE
return
end


Meg még azt szeretném megkérdezni hogy ennél a PIC-nél, miket kell definálni az elején, szval egy proginak az elejét szeretném elkérni, amiben a konfig bit-ek is benne vannak. Mert csináltam egy kis teszt panelt, amit kiszeretnék próbálni, a PORTB-n van 8db LED.

Köszönöm szépen!
(#) frecsko válasza icserny hozzászólására (») Okt 26, 2008 /
 
Az "új szöveges dokumentum.text2"-ben már sikerül csatlakozni az ICD2-höz. Fel is ismeri a pic-ket amit égetni akarok de hibát ad fel mindig.

MPLab.docx
    
(#) potyo válasza frecsko hozzászólására (») Okt 26, 2008 /
 
Szerinted melyik sor jelenti azt, hogy felismerte a pic-et? A docx fájlokat meg inkább hanyagold, szerintem nem sokan fognak csak azért felrakni valamit a gépükre, hogy ezt megnézhessék. Jó az pdf-ben is.
(#) frecsko válasza potyo hozzászólására (») Okt 26, 2008 /
 
Szia.
Most 16f628a van az ICD2-mhöz csatlakozva és ezt írja ki:
Auto-connect not enabled - Not connecting (Try enabling auto-connect on the ICD2 settings pages.)
Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to MPLAB ICD 2
Target Device PIC16F628A found, revision = Rev 0x8
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 Ready

A target device az az nem hogy felismerte a céleszközt, mármint a picet.
(#) googa válasza Thomas10100 hozzászólására (») Okt 26, 2008 /
 
Szia!

Én ezt tudom ajánlani Neked: Nigel's PIC tutorials
(#) trudnai válasza Thomas10100 hozzászólására (») Okt 26, 2008 /
 
Thomas10100,

Eloszor is 18F-eket mar nem szokas abszolut modban programozni, csak relativ modban. Ehhez csupan be kell tenned a linker scriptet a projectbe, es a valtozo deklaralasoknal a 'res' kulcsszot kell hasnzlani. Az MPLAB elpjeen az assembly-t kivalasztva keress ra a 'res' kulcsszo hasznalatara...

Masodszor pedig, 18F-nel kozeli ugrasokat nem GOTO ill CALL-al sokas megejteni mert az extra programteruletet foglal el es azonkivul teljesen felesleges. BRA es RCALL utasitasokat nezd meg az adatlapban!

Legvegul pedig: Az adatlap a biblia, ott gyonyoruen le van irva peldaprogrammal hogyan kell a PORTB-t felinicializalni. Ott vannak a konfigok is amugy...
(#) Thomas10100 válasza trudnai hozzászólására (») Okt 26, 2008 /
 
Hali!

Na hát ez full nem érthető a számomra amit irtál.

Az ugrás az oké, meg az adatlap, de a relativ programozás, pff. Még nem hallottam róla...
(#) Thomas10100 válasza googa hozzászólására (») Okt 26, 2008 /
 
Helló!

Olyan kellene amiben 18-as PIC-ek vannak.
(#) frecsko válasza potyo hozzászólására (») Okt 26, 2008 /
 
A jumpert amikor égetni akarok az ICD2-n a cmos-en és az out-en közé kell rakni nem?
Az ICD2-n és az MPLab-ban nincs ilyan funkció mint az IC-progon hogy le tudom ellenőrizni a kimeneteket, hogy megvannak e rajta a feszültségszintek?
(#) potyo válasza frecsko hozzászólására (») Okt 26, 2008 /
 
Idézet:
„A jumpert amikor égetni akarok az ICD2-n a cmos-en és az out-en közé kell rakni nem?”


1. Leírást olvastad?

2. Nincs. De van kapcsolási rajz, egy kis gondolkodás, logikai áramkörismeret alapján nem egy nagy kaland leellenőrizni.
(#) googa válasza Thomas10100 hozzászólására (») Okt 26, 2008 /
 
Letöltöd az adatlapját a PIC-ednek és a konfigurációs bitek részt megnézed és szépen bepötyögöd, ami neked kell. Alapbeállításban minden bit '1'-re van állítva, ha jól tudom.
Ami a legfontosabb, hogy az oszcillátor bitjeit állítsd be olyanra, amilyet te kívánsz használni. Szerintem a programod meg sántít, de most annyira nincs kedvem bogarászni. Majd összeszedem magam.
(#) googa válasza googa hozzászólására (») Okt 26, 2008 /
 
Azt a rohadt...még nem láttam 18-as PIC-ek adatlapját, de ez a configbit-es téma most egy kicsit magas nekem.
(#) MPi-c válasza Thomas10100 hozzászólására (») Okt 26, 2008 /
 
Adatlap! Azt nem nézted meg, hogy a B Port-nak milyen funkciói vannak még, és ezért hogyan is kell beállítani.
A config-re meg, nézd csak meg watt honlapját is a "PIC infók, Példák, Leírások" pont alatt.
(#) googa válasza MPi-c hozzászólására (») Okt 26, 2008 /
 
Így van, ahogy mondod
(#) trudnai válasza Thomas10100 hozzászólására (») Okt 26, 2008 /
 
Idézet:
„Na hát ez full nem érthető a számomra amit irtál.”


'Completely' nem 'full' ebben a kornyezetben ha mar Angol szavakat akarsz bele keverni, de ne tedd, ugy fogunk jarni mint az Indiaiak hogy a Hindi mondatok minden masoik szava Angol. Mar igy is tok hulyen hasznaljak a Magyarok a 'hello' szot, meg mas szavakat is ossze-vissza, ne mindegy ehhh.

Idézet:
„Az ugrás az oké, meg az adatlap, de a relativ programozás, pff. Még nem hallottam róla...”


Roviden es tomoren a relativ proramozasnal a linker donti el a valtozok (valamint a program) hova fognak kerulni a memoriaban, azzal neked mint programozonak nem kell torodnod. Ehhez csak be kell tenned a projectedbe az un. linker scriptet - "LKR fileok". Ebbol fogja tudni a linker hova pakolaszhat. Abszolut programozasnal Te magad mondod meg az abszolut cimet a valtozoknak ill program teruleteknek - pl EQU-val ahogy csinaltad, vagy CBLOCK-al ahogy szoktak meg.

Az MPLAB helpjeben van egy baromi jo help - tenyleg jo! Ott az assembly reszleget erdemes olvasni, gyakorlatilag mintha konyv lenne (Help / Topics / MPASM Assembler). Erdemes rakeresni a 'linker script' vagy 'res' kulcsszavakra vagy 'relocatable object' szekciot megnyitni es atolvasni mit ir, mert ezeknel a nagy memoriaval rendelkezo joszagoknal mar egyre kezelhetetlenebbe valik mit hova pakol az ember, ill ha odebb kell 'koltozni' memoriaban vagy egy masik PIC-re atterni akkor az abszolut programozas miatt egeszen nehezkesse valhat a dolog.
(#) frecsko válasza potyo hozzászólására (») Okt 26, 2008 /
 
Mint már említettem kezdő vagyok. Nézd el az egyszerű kis hülye kérdéseimet. Köszi.
Most 16f628a van az ICD2-mhöz csatlakozva és ezt írja ki:
Auto-connect not enabled - Not connecting (Try enabling auto-connect on the ICD2 settings pages.)
Connecting to MPLAB ICD 2
...Connected
Setting Vdd source to MPLAB ICD 2
Target Device PIC16F628A found, revision = Rev 0x8
...Reading ICD Product ID
Running ICD Self Test
...Passed
MPLAB ICD 2 Ready

A target device az az nem hogy felismerte a céleszközt, mármint a picet.
(#) trudnai válasza frecsko hozzászólására (») Okt 26, 2008 /
 
Idézet:
„A target device az az nem hogy felismerte a céleszközt, mármint a picet.”


A target device = cel eszkoz. Es igen, kiirja az eszkoz nevet es hogy azt talalta (found). Szoval most akkor mukodik? Vagy hol tartasz?
(#) icserny válasza frecsko hozzászólására (») Okt 26, 2008 /
 
Idézet:
„Az "új szöveges dokumentum.text2"-ben már sikerül csatlakozni az ICD2-höz.”

Na, ez már fél siker!

Idézet:
„Fel is ismeri a pic-ket amit égetni akarok”

A cannot validate target szerintem nem erre utal. Hogy vannak összekötve? Van valami áramkör a PIC körül, ami bezavarhat?

A docx állományok helyett maradjunk a .txt formátumnál (nem mindenki tudja olvasni)!
(#) frecsko válasza icserny hozzászólására (») Okt 26, 2008 /
 
Nincs áramkör a pic körül.
Simán rá van kötve az ICD2-re az ICD2 pedig egy usb-s kábelen a gépre.
Küldök egy text-et hogy eddig meddig jutottam.
(#) frecsko válasza trudnai hozzászólására (») Okt 26, 2008 /
 
Hát eddig jutottam:
(#) trudnai válasza frecsko hozzászólására (») Okt 26, 2008 /
 
Ja, hat 3FFF-et olvasott ki, tehat nem sikerult a programozas. Az ICD kabel milyen hosszu es mibol van? A Vdd es Vss kozott van-e hidegito kondi? Mekkora feszultsegeket mersz a Vdd ill Vpp vonalakon programozaskor?
(#) icserny válasza Thomas10100 hozzászólására (») Okt 26, 2008 /
 
Idézet:
„#include p18f4550.inc
...
a PORTB-n van 8db LED.”

Vajh, miért is nem a D porton van az a nyolc LED???
(#) frecsko válasza trudnai hozzászólására (») Okt 26, 2008 /
 
usb kábellel van összekötve a gép és az ICD kb 1méter, a pic és az icd pedig 30 cm-es 5 eres szalagkábellel.
Vdd és Vss között nincs kondi.
Vdd: 4,90V
Vpp: 10,09V de nem kapcsolja rá az mclr-re.
(#) potyo válasza frecsko hozzászólására (») Okt 26, 2008 /
 
Idézet:
„Vdd és Vss között nincs kondi.”


Tegyél.
(#) vtnagy hozzászólása Okt 26, 2008 /
 
Sziasztok

PIC-C-ben szeretnék egy olyat csinálni, hogy van egy szöveg (a PIC-ben CHAR-ként eltárolva), annak megszámolnám, hány karakter hosszú, és ez alapján bontanám le értékekre, hogy egy LCD kijelzőn ki tudjam íratni az adott szöveget.

Én ezt magában PIC-ben szeretném, de eddig nem sok sikerrel. Egyáltalán lehet ilyet? Vagy ezt már csak számítógéppel összekötve tudnám megoldani?

Üdv
vtnagy
(#) potyo válasza vtnagy hozzászólására (») Okt 26, 2008 /
 
Hol van az a szöveg tárolva? Mert megoldani meglehet, csak a mikéntje attól is függ, hogy pontosan mit kell megoldani.
(#) vtnagy válasza potyo hozzászólására (») Okt 26, 2008 /
 
Ilyen módon:

  1. #include <16F877.h>
  2. #include <string.h>
  3.  
  4. --egyéb beállítások--
  5.  
  6. int16 i;
  7. char text1;
  8.  
  9. void main(void) { // Fő rutin
  10.         set_tris_a(0x03);               // PORTA 0:1 bemenet (0b00000011)
  11.         set_tris_b(0x00);               // PORTB kimenet
  12.         set_tris_c(0x00);               // PORTC kimenet
  13.         set_tris_d(0x00);               // PORTD kimenet
  14.         text1 = "1234567890123456789012345678901";
  15.         lcd_config();
  16.  
  17.         i=strlen(text1);
  18.         output_d(i);
  19.         char_send();
  20. }

Bocsi, hogy úgy nézve majdnem az egész programot másoltam be, de így a legérthetőbb (nagyon butított verzió).

A szöveget lényegében nem tárolom sehol, hanem menet közben adom a text1 változónak az értéket. Azért számok, hogy tudjam, milyen hosszúnak is kellene legyen.
Vannak benne egyéb funkciók, azok nem lényegesek ( lcd_config(), char_send() )

Pontosan azt szeretném így elérni, hogy a text1 változó hosszát eltárolom az i változóba, majd ennek a segítségével szeretném ennek a szövegnek az LCD-re való kiíratását megcsinálni, hogy egyesével elküldöm az adott karakter értékének megfelelő kódot.

Remélem érted, hogyan szeretném.
Üdv
vtnagy
(#) potyo válasza vtnagy hozzászólására (») Okt 26, 2008 /
 
Szöveg számára tömböt kell lefoglalni, nem egyetlen bájtot. Pl.
  1. char text1[40];

A zárójelben a várható maximális szöveghossz+1 értéket kell írni. Azért a +1, hogy a lezáró null karakternek is legyen hely. Ezután ha írtál valamit bele, akkor a hosszát úgy tudod lekérni, hogy egyesével végigmész rajta, amíg nem futsz rá a null karakterre. Pl.
  1. unsigned char i=0;
  2. while(text[i]) i++;

Bár most nézem, hogy a strlen() is ugyanezt csinálja.
(#) trudnai válasza frecsko hozzászólására (») Okt 26, 2008 /
 
igen, a kondi mindenkeppen kell, 100nF keramia Vdd es Vss koze. 30cm szalag kabel eleg sok zajt ossze tud szedni, azt is erdemes lecsokkenteni - 5cm-nel altalaban nem kell tobb, csak kozelebb kell tenni az ICD2-t az aramkorhoz.

10.09V az eleg keves, de benne van a Vdd+4V es a 12.5V tartomanyban. Az alatt mit ertesz, hogy nem jut el az mclr-ig? Valami szakadas lenne?
(#) vtnagy válasza potyo hozzászólására (») Okt 26, 2008 /
 
Rendben, köszi a segítséget, meglesem

Sajna bátyám elvitte a C-s könyvem, így nem tudom pontosan, mit és hogyan kell, de remélem hazahozza holnap, és nem fogom így fárasztani az embereket

Még egyszer köszi!

Üdv
vtnagy
Következő: »»   320 / 1318
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem