www.elektronik.si
Programiranje v bascom avr
Pojdi na stran Prejšnja  1, 2, 3 ... 35, 36, 37, 38  Naslednja  :||:
www.elektronik.si -> Bascom sekcija

Avtor: VladoKraj: Ljubljana PrispevekObjavljeno: Sob Jan 30, 2016 12:44 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Nekaj na to temo lahko najdete na:
http://www.mcselec.com/index.php?option=com_content&task=view&id=211&Itemid=57

http://www.mcselec.com/index.php?option=com_content&task=view&id=73&Itemid=57
LP

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Sob Jan 30, 2016 1:38 pm    Naslov sporočila:  
----------------------------------------------------------------------------
V mislih sem imel PID za nadzor temperature

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Ned Mar 13, 2016 4:28 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Imam težave z ATmega32 in RTC DS1307.
Iz SDA in SCL imam dva 10K upora na 5V ter ustrezen kristal na DS1307.
Ure, minute in sekunde mi kaže pravilno, dan, mesec in leto pa ne.
Testiram pa tako, da na uart vnesem čas in datum program to zapiše v DS1307 in potem prebere z njega in mi podatke pošlje nazaj na uart.

Primer, pošljem mu podatke 02112015223344 (02-dan, 11-mesec, 2015-leto, 22-ura, 33-minute, 44-sekunde), odgovori pa mi z 01022011223344 ki pa bi moral biti v istem zaporedju kot ko sem jih poslal jaz. ura je v redu (zadnjih 6 številk - 223344) datum pa je kar nekaj (01022011 Eh? ).
Uporabljam knjižnico ds1307clock.lib

Še del programa kjer mislim, da je napaka:
Koda:

Podatkicas = Mid(podatki_prejeto , 11 , 15)             'podatkicas=02112015223344
      Stringtobyte = Mid(podatkicas , 1 , 2)                'dobi dan
       _day = Val(stringtobyte)
       Stringtobyte = Mid(podatkicas , 3 , 2)               'dobi mesec
       _month = Val(stringtobyte)
       Stringtobyte = Mid(podatkicas , 7 , 2)               'dobi leto (samo zadnji dve številki: 15)
       _year = Val(stringtobyte)
      Stringtobyte = Mid(podatkicas , 9 , 2)                'dobi ura
       _hour = Val(stringtobyte)
      Stringtobyte = Mid(podatkicas , 11 , 2)               'dobi minuta
       _min = Val(stringtobyte)
       Stringtobyte = Mid(podatkicas , 13 , 2)              'dobi sekunda
       _sec = Val(stringtobyte)

      Gosub Setdate
      Waitms 100
       Gosub Settime
      Waitms 100
      Gosub Getdatetime

   If _day < 10 Then
   Strday = "0" + Str(_day )
   Else
   Strday = Str(_day )
   End If
   If _month < 10 Then
   Strmonth = "0" + Str(_month )
   Else
   Strmonth = Str(_month )
   End If
   Stryear = "20" + Str(_year )
   If _hour < 10 Then
   Strhour = "0" + Str(_hour )
   Else
   Strhour = Str(_hour)
   End If
   If _min < 10 Then
   Strmin = "0" + Str(_min )
   Else
   Strmin = Str(_min )
   End If
   If _sec < 10 Then
   Strsec = "0" + Str(_sec )
   Else
   Strsec = Str(_sec )
   End If

   Print Strday ; Strmonth ; Stryear ; Strhour ; Strmin ; Strsec

Getdatetime:
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' start address in 1307

  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307r                                          ' send address
  I2crbyte _sec , Ack
  I2crbyte _min , Ack                                       ' minute
  I2crbyte _hour , Ack                                      ' ure
  I2crbyte _day , Ack                                       ' dan
  I2crbyte _month , Ack                                     ' mesec
  I2crbyte _year , Nack                                     ' leto
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 4                                                ' starting address in 1307
  I2cwbyte _day                                             ' dan
  I2cwbyte _month                                           ' mesec
  I2cwbyte _year                                            ' leto
  I2cstop
  Waitms 10
Return

  Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' starting address in 1307
  I2cwbyte _sec                                             ' sekunde
  I2cwbyte _min                                             ' minute
  I2cwbyte _hour                                            ' ure
  I2cstop
  Waitms 10
Return

Avtor: protoncekKraj: Mengeš PrispevekObjavljeno: Ned Mar 13, 2016 5:26 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Ti imaš dan-mesec-leto. kaj pa "day of week"? Datum je v obliki:
Nedelja (=day of week), 13 (=dan), 3(=mesec) 2016 (leto se računa samo 16).
Nikjer ne vidim, da bi vpisal dan v tednu...posledično si datum vpisal narobe in dobil ven
01022011223344, kar pomeni 01=recimo ponedeljek, 02.20.(20)11, ura=22:33:44.

Glej tabelo v datasheetu, stran 8. Saj vpisuješ prav (no, ne vpišeš dneva, ampak na prave adrese), samo pri branju preskočiš "day of week"...

Dan v tednu je od 1 do 7, kaj je kaj, določiš sam, jaz ponavadi rečem, da je 1 ponedeljek, 7 pa nedelja (dan se pri nas začne s ponedeljkom).

Avtor: joze PrispevekObjavljeno: Ned Mar 13, 2016 7:02 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Dan v tednu je od 1 do 7, kaj je kaj, določiš sam, jaz ponavadi rečem, da je 1 ponedeljek, 7 pa nedelja (dan se pri nas začne s ponedeljkom).

Kako določiš sam, kaj ni vezan na datum (dan)?

Če pogledaš na kolendar za določeni datum (dan), vidiš kateri dan v tednu je.

Se motim?

Avtor: vilkoKraj: Dragomer PrispevekObjavljeno: Ned Mar 13, 2016 7:19 pm    Naslov sporočila:  
----------------------------------------------------------------------------
joze je napisal/a:
Dan v tednu je od 1 do 7, kaj je kaj, določiš sam, jaz ponavadi rečem, da je 1 ponedeljek, 7 pa nedelja (dan se pri nas začne s ponedeljkom).

Kako določiš sam, kaj ni vezan na datum (dan)?

Če pogledaš na kolendar za določeni datum (dan), vidiš kateri dan v tednu je.

Se motim?


Nee. Sam s seboj se dogovoriš, kaj pomeni številka med 0 in 6 oziroma med 1 in 7.
RTC samo skrbi, da se ob prelomu dneva števec dvigne za ena, in na koncu prevrne na 0 oziroma 1. Ne vem kako je to pri konkretnem RDT čipu. Osebno uporabljam starega PCF8583

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Ned Mar 13, 2016 8:14 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Ja hvala stvar sedaj deluje Dancing
Dodal sem vrstico
Koda:
I2crbyte _Weekday , Ack


Koda:

Getdatetime:
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' start address in 1307

  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307r                                          ' send address
  I2crbyte _sec , Ack                                       ' sekunde
  I2crbyte _min , Ack                                       ' minute
  I2crbyte _hour , Ack                                      ' ure
  I2crbyte _Weekday , Ack             ' < GLEJ TUKAJ
  I2crbyte _day , Ack                                       ' dan
  I2crbyte _month , Ack                                     ' mesec
  I2crbyte _year , Nack                                     ' leto
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Sob Maj 14, 2016 10:11 am    Naslov sporočila:  
----------------------------------------------------------------------------
Imam problem z UART komunikacijo dveh mikrokontrolerjev Atmega32.
RX in TX je povezan pravilno. Masa je tudi skupna. Pri obeh enak baud rate 2400 in enaka frekvenca kristala 3,6864MHz.
Če mikrokontroler posebej povežem z računalnikom in na terminalu simuliram ukaze drugega mikrokontrolerja deluje tako kot je treba. Vsak zase delujeta lepo ko pa ju povežem skupaj se nič ne dogaja Eh?
Prosim za kakšen nasvet
L.p. Mato

Avtor: protoncekKraj: Mengeš PrispevekObjavljeno: Sob Maj 14, 2016 11:37 am    Naslov sporočila:  
----------------------------------------------------------------------------
Kako pa imaš napisan program? Imaš sprejem izveden z interruptom (on urxc sprejem_telegrama) ali imaš serial konfiguriran kot "buffered"? Če samo občasno bereš inkey ni v redu, ker tako izgubljaš sprejete znake. Sam avr nima nobenega baferja (no, ima za en znak).
S terminalom poslušaj tisti kontroler, ki naj bi oddajal, če res to počne.

Avtor: VladoKraj: Ljubljana PrispevekObjavljeno: Sob Maj 14, 2016 11:38 am    Naslov sporočila:  
----------------------------------------------------------------------------
Mato,
brez kode lahko samo ugibamo kje si ga polomil.
Kako sprejemaš podatek (inkey, witkey, input)??

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Sob Maj 14, 2016 5:15 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Z prekinitveno rutino od vilkota Mr. Green
Saj pravim da kontrolerja lepo delujeta ce vsakega posebej priklopim na racunalnik in podatke pisem na roke preko bray terminala.

Avtor: igoKraj: Krško PrispevekObjavljeno: Sob Maj 14, 2016 7:15 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Ti si za hece, ja.

Prilepi oba programa.
Na koncu se bo ugotovilo, da oba MCU-ja samo čakata, da kaj prileti na RX, za začetek komunikacije mora biti pa vsaj eden dovolj nesramežljiv, pogumen in zgovoren, da vpraša tisti znameniti: "Živijo, kako si?"

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Sre Sep 20, 2017 12:01 pm    Naslov sporočila:  
----------------------------------------------------------------------------
No da malo obudim temo Mr. Green

Potrebujem kakšen nasvet.
Imam nek dolg string podatkov v katerem iščem številko ki bi jo rad zapisal v drugi string. Problem pa je da ta številka ni vedno na istem mestu in ni vedno enako dolga.
Primer kaj bi rad prepisal v drug string (podčrtano):
+CMGR: "REC UNREAD","+38651123456","","14/09/17,21:52:51+08"
+CMGR: "REC READ","+38651123456","","14/09/17,21:52:51+08"
+CMGR: "REC UNREAD","10086","","14/09/17,21:52:51+08"

Avtor: frenkiKraj: Ljubljana (JN76GB) PrispevekObjavljeno: Sre Sep 20, 2017 1:30 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Če z instr() poiščeš prvo pojavljanje separatorja polja => "," <= , nato pa od tu dalje naslednje, boš dobil startno pozicijo in dolžino, ki jo z mid() potegneš ven?

Avtor: mato1111Kraj: Vrhnika PrispevekObjavljeno: Sre Sep 20, 2017 6:06 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Hvala z malo igranja mi je uspelo Dancing

Stran 36 od 38

Powered by phpBB © 2001,2002 phpBB Group