Fórum témák
» Több friss téma |
A Watch ablakon a szimbólumra jobb klick, properties...
C ben használom a memset() és a memcpy() függvényeket.
Ugyan hibátlanul lefordul, de egy figyelmeztetést kapok például a memset() re: warning: implicit declaration of function 'memset' warning: incompatible implicit declaration of built-in function 'memset' Mi lehet a warning oka?
Melyik C -ről van szó?
Idézet: „warning: implicit declaration of function 'memset'” Általában akkor kapjuk ezt a figyelmeztetést, ha a deklarációja nélkül vagy az előtt használjuk a függvényt. #incude <string.h>
Jogos, valóban a <string.h> hiányzott.
Talán buta kérdés, de miért nem tehetjük meg hogy minden program elé automatikusan beírjuk az összes Standard Library headert? Ekkor ilyen hibát nem lehetne elkövetni. Ettől még nem nőne meg szerintem a használt memória. Vagy mégis? Nem csak a fordító számára lesz ez információ? A hozzászólás módosítva: Ápr 23, 2019
Hogy nő-e a kód és csökken-e a memória, az attól függ mi van a header-ben és hogyan optimalizál a fordító.
Hogy a kód lassabban fog lefordulni, az az egy biztos. A hozzászólás módosítva: Ápr 23, 2019
Részben értem, de valahogy mégsem áll össze a dolog teljesen.
Például adott headerben jellemzően jóval több fv. deklaráció van mint használunk belőle. Ez önmagában is hasonló helyzetet teremt mint az önkényesen beincludolt "felesleges" header. Valójában mitől tudna nő ni a kódhossz, csökkenni a memória csupán a deklarációk növekvő száma miatt? A lassabb fordulást érteni vélem, de a header tartalmától függő memóriafoglalás már nem egyértelmű nekem. A hozzászólás módosítva: Ápr 23, 2019
Azt is írtam: "attól függ mi van a header-ben". Emlékeim szerint kódot is lehet benne deklarálni, bár én ezt a megoldást a magam részéről lehetőleg kerülném...
Sziasztok!
Van egy PIC16f628a -s mikrovezérlőm. Interrupt-ot akarok csinálni, szeretnék villogtatni egy ledet, de nem működik a szimulációban. Mit rontok el?
Idézet: „TRISB = 0x07; // input ... PORTB.F0 = ~PORTB.F0; // RB0 láb villogtatás” TRISB = 0x07 bemenetre állítja a PORTB RB0 lábát.
Ha kimenetre állítom, akkor is elhasal.
Mit jelent az, hogy "elhasal"?
A Watchdog ki van kapcsolva? A konfigurációs bitek jól vannak beállítva? (LVP)
Ennyi van beállítva, amit látsz csak. Azt jelenti hogy :
Idézet: „Stack overflow pushing return address of interrupt”
Nem törlöd a TMR0IF bitet a void interrupt_ISR(void) függvényben.
MOst lenne jó tudni, hogy melyik fordítót használod. Ettől függ, mit kellene még csinálnia...
MikroC for pic fordítót használok.
Ha minden igaz, így törli, de a hiba ugyanaz. A hozzászólás módosítva: Ápr 24, 2019
Nem jó helyen van a törlés. Vidd át a jelenlegi 8. és 9. sor közé.
Az MpLab8/XC8 szimulálja (néhány módosítás után), és periódusidőnek 4MHz órajellel 1330,72 másodpercet számol. A hozzászólás módosítva: Ápr 24, 2019
Sziasztok!
Van egy PIC16f628A mikrovezérlőm , hozzá 4mHz-s kvarcom. Az miért van, hogy proteusban szimulálva működik a serial kommunikáció rendesen, de élesben összerakva olyan adatokat kapok a pictől, mintha rossz baudrate lenne beállítva? 9600 van beégetve a vezérlőbe és ugyanezzel a sebességgel olvasnám is. Ötlet?
4mHz-el ne csodálkozz!
![]() Bármi lehet, ha nem csatolsz kódot. Vagy legalább a regiszterekbe beírt értékeket írd le légy szíves.
Igen , bocs
![]() Villogtatja az RB0 - ás lábat , ahogy beállítottam, szóval fut a program, de a serial adaton olyan mintha rossz lenne a baudrate. 5V ról hajtom a PIC-et , USB/serial-t kötöttem rá egy az egyben. A hozzászólás módosítva: Ápr 27, 2019
Terminalprogiban játszva a baud rate beállításokkal nem lehet kitalálni?
MikroC, így sok minden nem derül ki. Esetleg beleszól a megszakítás, nem tudni, hogy lekezeli-e a Library.
De , 19200 - ra állítottam a terminált és jó lett. Érdekes, hogy programban viszont 9600 van.
A hozzászólás módosítva: Ápr 27, 2019
Ehhez a PIChez kellene szintillesztő? A vezeték egy sima próbapaneles 10 cm - es.
Közben töröltem a hozzászólást, mert látom, hogy 19.200-on megy.
Gondolom szoftveres ok, valahol rosszul van definiálva az órajel, vagy ilyesmi. Hogy kell-e jelszint illesztő, az a jelszintek függvénye. Ha pl. 3.3V-on megy a PIC és egy USB-TTL soros átalakítót használsz, akkor jellemzően nem kell.
5V-on megy a pic és USB-TTL átalakítót használok.
A súgó azt írja, hogy a hardveres UART-ot használja, csak sajnos nem látjuk mi megy félre.
Ellenőrizd a quartz-ot is, hogy valóban 4.000 000 van-e ráírva.
A 4MHz-hez HS oszcillátor beállítás tartozik a konfigurációs biteknél. MikroC-t nem ismerem, de a kontroller kétszer akkora sebességen megy, mint amennyihez a soros port be van állítva. Timert nézd meg, hogy az az elvárt sebességgel megy-e, vagy az is duplával.
Ha esetleg be tudnád állítani az init után a következő regisztereket ebben a sorrendben, talán át lehetne verni:
RCSTA-ban az SPEN=0 TXSTA-ban a BRGH=1 SPBRG=25 RCSTA-ban az SPEN=1
Nincs ráírva csak ez: yic80000h9
De erre semmi találatot nem kapok a googleban.
Ez így ránézésre 8MHz-nek jó lesz. Kell ott lennie egy pontnak is a 8-as után.
A hozzászólás módosítva: Ápr 27, 2019
|
Bejelentkezés
Hirdetés |