Fórum témák
- • Klíma szervizelés, javítás
- • Villanyszerelés
- • Érdekességek
- • Kombikazán működési hiba
- • Li-Ion saját akkucsomag készítése
- • Sztereó erősítő olcsón
- • Rádióamatőrök topikja
- • Erősítő mindig és mindig
- • Felajánlás, azaz ingyen elvihető
- • Szárítógép problémák
- • Toroid transzformátor
- • Oszcilloszkóp vétel, mit gondoltok?
- • Forrasztási 1×1 forrasztástechnikai miértek
- • Elektronikai témájú könyvek újságok
- • Lézer érzékelő
- • Mosógép vezérlők és általános problémáik
- • Logikai analizátor
- • VF2 végerősítő
- • Autós fejegységek kapcsolási rajza
- • Muzeális készülékek-alkatrészek restaurálása
- • Számítógép hiba, de mi a probléma?
- • Rádió javítás
- • Áramlökés határoló lágyindító
- • Boombox javítás
- • Elfogadnám, ha ingyen elvihető
- • Hibrid erősítő
- • Porszívó javítás
- • Fejhallgató erősítő
- • Autórádió építés, szerelés
- • Transzformátor készítés, méretezés
- • Hegesztő inverter javítás
- • Elektromos sütő
- • MIka 6E kazán paraméter lista
- • Mobiltelefon hiba
- • ESR mérő
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • TV hiba, mi a megoldás?
- • Műhelyünk felszerelése, szerszámai
- • Arduino
- • Hangszóró készítése
- • FET vezérlése
- • Napelem alkalmazása a lakás energia ellátásában
- • Általános antennás kérdések, válaszok
- • Kapcsolóüzemű táp 230V-ról
- • RP2040
- • Klíma beszerelése, fűtés-hűtés házilag
- • Flexibilis nyák
- • Robot porszívó - Roomba
- • Kondenzátor
- • Alternativ HE találkozó(k)
- • Rádió adó építése
- • PROM (TBP18S030N)
- • Li-Po - Li-ion akkumulátor és töltője
- • Hűtőgép probléma
- • Vásárlás, hol kapható?
» Több friss téma
|
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Én ezt nem tudom megmérni mert nincs hozzá megfelelő eszközöm.
1 Hz-et egy kozonseges multimeterrel, vagy egy LED segitsegevel is lathatod.
De azt megnéztem hogy ha a kvarcot kiszedem mit csinál akkor is ezt a hülyeséget írja azaz olyan mintha nem is menne a kvarc.
A led-nek mit kellene csinálnia a swq lábon?
Elméletileg egyre raktam write_ ds1307(7,0xff);
Ha nagyot hibázok elnézéseteket kérem még gyerekcipőben járok.
Ne a kvarcot piszkald, hanem nezd meg van-e a SQW kimeneten valami. Esetleg meg kellene nezni a I2C vonalakon van-e kommunikacio. Egy hangkartyas gepbol lehet oszcilloszkopot varazsolni, ami kezdoknek nagyon megfelel. Igaz nem GHz-es, de ket csatornat lehet vele lesni. Legfeljebb addig nem hallgatsz zenet.
Akkor nem lathatsz semmit. Az elobb leirtam mit kell allitani.
Mivel programozod a kontrollert? PICKit2 -vel. Az egyben egy 3 csatornás logikai analizátor is...
Milyen kivitel? Benne van a ICSP_CLK és ICSP_DAT vonalon a 4k7 lehúzó ellenállás?
Mivel az I2C vonalak elég nagy értékű felhúzó ellenállásokkal rendelkeznek, érdemes elkészíteni a buffer kártyát. A buffer kártyával már azok a PICKit2 -k is mérni tudják az I2C vonalakat, amiben benne vannak a lehúzó ellenállások.
A logikai analizátorral vedd fel a jelalakokat és hasonlítsd össze a DS1307 adatlapján levőkkel...
Az SCL1 és SDA1 láb bemenet?
SCL1 és SDA1 láb bemenet a többihez sajnos ilyen szinten nem értek.
de ez így nem jó? write_ ds1307(7,0xff);
0xff = 0b11111111. Nezd meg mit csinal a Control regiszterben ez az utasitas.
write_ ds1307(7,0x10); ha így állítom akkor villog a led mintha led blinking lenne.
Ha villog, akkor megy az oszci, -> engedélyezve van. Eddig okés. Akkor most próbálj beleírni valamit majd kiolvasni.
Tudnál nekem segíteni hogy beleírjak valamit meg kiolvassak, mert lehet itt rontom el mindig furcsa karakterek jelennek meg.
Egyébként ez a forrás és villog a led de az lcd a time =1:=1:=1
// LCD beállítása
sbit LCD_RS at LATD0_bit;
sbit LCD_EN at LATD1_bit;
sbit LCD_D4 at LATA2_bit;
sbit LCD_D5 at LATA3_bit;
sbit LCD_D6 at LATA4_bit;
sbit LCD_D7 at LATA5_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISA2_bit;
sbit LCD_D5_Direction at TRISA3_bit;
sbit LCD_D6_Direction at TRISA4_bit;
sbit LCD_D7_Direction at TRISA5_bit;
// LCD beállításának vége
unsigned short read_ ds1307(unsigned short address );
void write_ ds1307(unsigned short address, unsigned short w_data );
unsigned short sec;
unsigned short minute;
unsigned short hour;
unsigned short data1;
char time[9];
unsigned char BCD2UpperCh(unsigned char bcd);
unsigned char BCD2LowerCh(unsigned char bcd);
void InitMain() {
OSCCON = 0x71; //--- órajel beállítása 8Mhz-re
while ((OSCCON & 0x4)!=0x4); //--- várakozás az órajel stabilitásáig
delay_ms (500);
}
void main(){
InitMain();
ADCON1 |= 0x0F;
CMCON |= 7;
I2C1_Init (100000); //DS1307 100KHz
PORTB = 0;
TRISB = 0xFF; // Portb bemenetre állítom
Lcd_Init(); // Lcd inicializálása
Lcd_Cmd(_Lcd_CLEAR); // Képernyő törlése
Lcd_Cmd(_Lcd_CURSOR_OFF); // Cursor kikapcsolása
Lcd_Out(1, 1, "Ido:");
//Idő beállítása
while(1)
{
//--- Kiolvasás
sec=read_ ds1307(0); // másodperc
minute=read_ ds1307(1); // perc
//--- Tömb feltöltése
time[0] = BCD2UpperCh(hour);
time[1] = BCD2LowerCh(hour);
time[2] = ':';
time[3] = BCD2UpperCh(minute);
time[4] = BCD2LowerCh(minute);
time[5] = ':';
time[6] = BCD2UpperCh(sec);
time[7] = BCD2LowerCh(sec);
time[8] = '\0';
//--- Lcd-re való kiíratás
Lcd_Out(1,5,time);
Delay_ms(50);
}
}
//--- Olvas függvény
unsigned short read_ ds1307(unsigned short address )
{
I2C1_Start();
I2C1_Wr(0xd0);
I2C1_Wr(address);
I2C1_Repeated_Start();
I2C1_Wr(0xd1);
data1=I2C1_Rd(0);
I2C1_Stop();
return(data1);
}
//--- Karakter konvertálás
unsigned char BCD2UpperCh(unsigned char bcd)
{
return ((bcd >> 4) + '0');
}
unsigned char BCD2LowerCh(unsigned char bcd)
{
return ((bcd & 0x0F) + '0');
}
void write_ ds1307(unsigned short address, unsigned short w_data )
{
I2C1_Start(); // issue I2C start signal
//address 0x68 followed by direction bit (0 for write, 1 for read) 0x68 followed by 0 --> 0xD0
I2C1_Wr(0xD0); // send byte via I2C (device address + W)
I2C1_Wr (address ); // send byte (address of DS1307 location)
I2C1_Wr(w_data); // send data (data to be written)
I2C1_Stop(); // issue I2C stop signal
}
Itt van egy rajz arról, én hogyan csináltam. A te rajzodon a tápellátás is hibás, mert amikor a 12V eltűnik, akkor a 7805 kimenetén is el fog tűnni nem túl nagy késéssel a feszültség. A 7805-öt olyan helyről kell táplálni, ahol folyamatosan jelen van a 12V, és a sima 7805 helyett érdemes valami alacsonyabb készenléti áramú típust használni (az említett kapcsolásnál szintén találsz ilyeneket).
Esetleg nincs felcserélve a két adatvonalad?
while(1)
{
//--- Kiolvasás
sec=read_ ds1307(0); // másodperc
minute=read_ ds1307(1); // perc
//--- Tömb feltöltése
time[0] = BCD2UpperCh(hour);
time[1] = BCD2LowerCh(hour);
time[2] = ':';
time[3] = BCD2UpperCh(minute);
time[4] = BCD2LowerCh(minute);
time[5] = ':';
time[6] = BCD2UpperCh(sec);
time[7] = BCD2LowerCh(sec);
time[8] = '\0';
//--- Lcd-re való kiíratás
Lcd_Out(1,5,time);
Delay_ms(1000);
}
A while ciklusban a késleltetést átírtam 1 másodpercre a program így úgy indúl hogy a másodperc 00 majd egy másodperc múlva =1 és megáll.
Amit még észrevettem hogy amíg nem kezd el villogni a led addig 00-ról =1-re vált és megáll. De az óra és a perc ugyan úgy =1:=1
Esetleg a felhúzó ellenállásokat csökkents a próba kedvéért 2k2-ra
Köszönöm hogy ilyen kitartó vagy.
Csak 1k ellenállásom van jelenleg kéznél de sajna ezzel is ugyan azt csinálja. Nagyon kíváncsi vagyok mi lesz a probléma.
Egy kapcsrajzot és fényképet is küldhetnél, hogy lássuk...
Probald mar meg azt hogy a kijelzore csak a sec ertekeket irod ki semmi mast. Annak valtozni kellene folyamatosan. Persze nem tudjuk egyaltalan megy-e a kijelzo frissitesed, vagy egyszer kiirt valamit, es ugy marad. Amennyiben van elem a RTC-n nem kell megcsinalni mindig az inicializalast, csak ha a CH bit "1". Ugy a RTC folyamatosan fut kikapcsolas utan is. Probald meg atalakitani a programot igy, hatha latsz valami valtozast.
Itt a kapcsolás az lcd-t és a pic tápjának bekötését nem rajzoltam le mert ez előtti projectem egy ds1820 volt és az működött hibátlanul.
A PIC nem kap tápfeszültséget?
Raktam egyet, de sajna így sem jó.
|
|