# ATMEL mikrokontrolleri >  ATTINY13 no programmēšanas uz darbību un atpakaļ.

## Jurkins

Tātad, esmu nolēmis būt mūsdienīgs  ::  un "aizrauties" ar mikrokontrolieriem. Līdz šim ir bijusi darbošanās ar "profesionālajiem", ja tā drīkst izteikties, tas ir ar tiem, kas stāv smukos korpusiņos iekš iekārtām.
Atradu atvilktnē Arduino Mega un čupiņu ar mazajiem ATTINY13. Sekss turpinājās apmēram 2 stundas, kamēr visos daudzajos failos un mapēs izdevās visu sarakstīt tā, ka caur to Megu iešuvu mazajam kverplim būtlouderu uz 1.2 MHz un pēc tam "blink". Lepojos ar sevi  :: ... Bet radās absolūti idiotisks jautājums. Tam kverplim kāju ir maz, un man viņas vajag. Nu un tad es iešūšu tās pašas kājas, kuras, lai ierakstītu programmu tiek izmantotas citiem mērķiem, kā outputus un uzlikšu šim HIGH. Programma ierakstīsies un palaidīsies. Izrauju es to mazo kverpli un ielieku , kur man vajag. Bet programmā ir gļuks, un man vajag šo palabot. Vai pievienojoties atpakaļ pie Megas šis (kverplis) un šī(Mega) sapratīs, ka es tagad gribēšu rakstīt progmmu iekšā? OK, zinu, ka jālasa datašīti, un to es arī darīšu, bet pašlaik radās šis idiotiskais jautājums, uz kuru gribētos atbildi dabūt ātrāk nekā pēc 118 lappusēm  ::

----------


## M_J

Nekādu problēmu. Priekš tam ir "Reset" kāja, kuru, paraujot uz masu Atmelis tiek iedzīts programmēšanas režīmā, kad attiecīgās kājas ir nokonfigurētas tā, kā vajag programmēšanai.

----------


## next

Nu jaa, tikai ne ar buutlouderi tas notiekas.

----------


## M_J

Vot īsti nesapratu, kādā kontekstā šeit ir minēts bootloaderis. Ja ir bootloaderis, tad jau Atmelis vairs pie programmatora vispār nav jāsprauž un jautājums par programmēšanai izmantotajām kājām nav aktuāls. Es sapratu, ka runa iet par gadījumu, kad ir kāds gļuks, kura dēļ bootloaderis nav izmantojams.

----------


## Jurkins

OK, skaidrs, tā arī ir atbilde uz jautājumu. Tātad pati Mega, kura šajā gadījumā ir programmators uzmet RESET un viss notiekās. Paldies!
next, laikam man vēl par agru diskutēt par atmegām :: .
edit:
Bļāviens, bet, ja es to RESET, kurš pie reizes ir PB5 (un vēl viss kas)  sakonfigurēju kā digitālo ieeju? Kā šis zinās vai ir atnācis ieejas signāls no piem. induktīvā datčika vai RESET signāls... Vsjo, eju lasīt gudras grāmatas.

----------


## JDat

> edit:
> Bļāviens, bet, ja es to RESET, kurš pie reizes ir PB5 (un vēl viss kas)  sakonfigurēju kā digitālo ieeju? Kā šis zinās vai ir atnācis ieejas signāls no piem. induktīvā datčika vai RESET signāls... Vsjo, eju lasīt gudras grāmatas.


 Laikam pavirši lasīju, bet... mņeņie imeju (literally).
Tātad par arduino (tie, kuri uz atmega32 :: . Vai ir skaidrs kas ir bootloader, kam paredzēts un kā notiek tabas programmas iedzīšana čipā un palaišana, kas ir FUSEs?
Tiny... Pārfrāzējot: sīkās blusas. Tik sīkas ka nemaz negribu aistikt bez akūtas nepieciešamības, jo:
1) salīdzinoši maz atmiņas priekš programmas. Ja klāt pieliek bootloaderi, tad palie vēl mazāk vietas.
2) par cik 1. punkts ir spēkā, tad programmas iedabūšana blusā ir piņķerīga, jo vajag AVR-ISP programmatoru.
3) Bieži vien pietrūkst kāju. Savukārt bingrojumi ar RESET pinu nav vēlami.

Par ko es te tik negatīvi? Ir arī savas priekrocības tām blusām.

Tātad...
Tiny13 (un vēl dažiem), reset kājai ir dubulta nozīme:
1) Reset kāja, lai resetotu kontrolieri.
2) Reset kāja lai iešutu jauno programmu iekšā.
3)Reset kājai var piešķit citu funkciju ar FUSE palīdzību. Rezultātā varēsi raustīt savu induktivitāti, bet vairs nebūs tik vienkārši ierakstīt jaunu programmu tajā blusā.

Tātad pētam datasheet par FUSEs. Ja kaut ko nezinam, tad vajadzētu konretizēt kas nesanāk. Jautā, labprāt paskaidrošu, bet tad būs 118.lpp (vai nedaudz mazāk).

----------


## Jurkins

Īstenībā pašlaik meklēju kādu grāmatu pa neta plašumiem. Latviski laikam nebūs, tāpēc meklēju krieviski. Varu lasīt angliski, bet tad laika vajadzēs x3, lai iebrauktu. 
To jau sapratu, ka mazajam kverplim PB5, kura ir arī RESET citiem mērķiem izmantot nevajag.
Ja pareizi saprotu, tad FUSEs ir reģistri, pie kuriem pieeja ir programmēšanas režīmā un kuri uzstāda globālas lietas piem. takts frekvenci. Programmā šos izmainīt nevar.
Vot par to bootloaderi gan īsti skaidrības nav. Darīju pēc instrukcijas:
1. pārvērtu Megu par programmatoru
2. pieslēdzu pie Tiny13 kājām
3. izvēlējos Arduino softā attiny13 ar attiecīgi 1.2MHz, EEPROM preserve un BOD 2,7V. Ja pareizi saprotu, tad šito nosaka tās FUSEs.
4. pamācībā rakstīts, ka tad jānospiež "iešut sāknēšanās lādētāju".Nospiedu. Ja pareizi saprotu, tad tika iešūtas tās Fuses.
5. Augšupielādēju "blinku" un tipa viss iet. 
Bet par to bootloader jālasa gudras grāmatiņas. Velns bišķi par daudz infas vienai dienai  :: 

Kāpēc man to vajag? Sākumā biju sadomājis Gisberta (laikam) diskrēto skaļuma regulatoru. Ar to MEGU uz maketa jau notestēju. It kā jau var dabūt gatavus risinājumus netā, bet galvenais jau ir process  :: . Uz mazā Tiny gan tas neizdosies, kāju pietrūkst, bet šie bija tumbočkā un laikam jau iepatikās tā lieta. Iespējams konkrēto regulatoru, lai ātrāk būtu rezultāts, vnk piemaukšu kādu Arduino Nano klāt un viss. Citādi ātri nesanāk, jo gan c gan asm pēdējoreizi bija ap 1989. gadu un arī tikai tā starp citu.

----------


## next

> Bļāviens, bet, ja es to RESET, kurš pie reizes ir PB5 (un vēl viss kas)  sakonfigurēju kā digitālo ieeju? Kā šis zinās vai ir atnācis ieejas signāls no piem. induktīvā datčika vai RESET signāls... Vsjo, eju lasīt gudras grāmatas.


 103. lappusee tas skaidrots.

PS. FUSE ir bits ko uzstaada ar programmatoru (tuvaakaa analogjija iz dziives - dzhamperis datora maatesplatee).
Bootloaderis ir programma kas nodroshina citas programmas sanjemshanu un ierakstiishanu atminjaa.
Kontrolieris taa kljuust liidziigs Neimana arhitektuurai.

----------


## M_J

Ja krieviski, man patīk materiāli, kas ir saitā gaw.ru  TINY gan tur nav, bet AVR arhitektūra jau pa lielam visiem ir identiska. Atmegās visa kā ir vairāk, ko nevajag var nelasīt.

----------


## Jurkins

> Bootloaderis ir programma kas nodroshina citas programmas sanjemshanu un ierakstiishanu atminjaa.


 Šim to jēgu jau es saprotu. Tikai nesaprotu, nafig tam Tiny to vajag, ja šim jau ir instukcijas, kā saņemt programmas kodu no attiecīga programmatora. Iespraudu vietā citu (nelietotu) attiny13 mikreni, nespiedu nekādu sāknēšanas ielādētāju, uzreiz ielādēju "blinku", un LEDs midžinās. Tikai, ja pareizi saprotu, tagad FUSEs ir by default. Varbūt prātīgākais variants ir atstāt Arduino pie Arduino, bet plikiem atmeļiem ņemt priekšā kaut kādu avr studio?

----------


## JDat

Mēginājums kļūt par žurnaļugu-pedagogu, jeb vajš šiepstiens publicistikā:

Sākam ar vienkāršo.
Arduino Uno ar AtMega328.
Mirrenē ir vairākas atmiņas:
Flash memory
EEPROM for data
RAM
FUSES

Ieslēdzot elektrību kontrolieris izpilda programmu. Programma glabājas FLASH atmiņā. Drīkst ierakstīt, dzest utt ~ 100 000 reizes. Bet... pagaidām pieņemsim ka programma pati sevi nevar pārrakstīt. Tikai pagaidām tā pieņemsim. Tātad te ir mūs ūberprogramma. Veseli 32 kilobaidi, bet windows tur neieinstalēsi.

RAM. RAM kā jau RAM. Tā pat kā kompim. Glabājam datus. Piemēram skaļumu. Skaļuma poča uzgriesto skaļumu kaut kur jāglabā... Te tad arī glabājam kamēr kontrolieris ieslēgts, bet... Izslēdzam elektrību un viss pazūd. Bet tomēr gribās kad nākošreiz ieslēdz savu DIY audiorastisko ellesmašīnu, skaļums saglabājas tāds pat kā tad, kad vakar vakarā malkojām vīnu sveču gaismā. Komerciāli aparāti māk atcerēties pēc elektrības izslēgšanas. Mūsu pipelizatoram arī jāiemāca... Kā? Starp citu RAM ir ~ 2 Kilobaiti.

Ir arī tāds zvērs EEPROM. Daudzi nesaprot un jauc ar FLAS programmu atmiņu. Kam tas vajadzīgs? Tur mēdz ierakstīt "kaut kādus" datus. Nafig vajag? Taisam digitālo poci. Viss forši. Programma strādā skaļumu regulē, silda audiorastiskos kabeļus utt. Ši atmiņa māk saglabāt datus arī bez elektrības. Un tur var rakstīt 1 000 000 reizes. Bet... Apjoms tikai ~128 baiti. Tomēr ar to pietiek. Nospiežam podziņu, skaļums pieaug. Uzreiz ierakstam skaļumu no RAMa EEPROMā. Kad kontrolieris bootojas, tad nlasam no EEPROM vakardienas skaļumu. Aparāts atcerās uzstādījumus. Glīti? Bailes ka pārsniegsim ieraksta ciklu skaitu? Sīkums. Čāli uztaisīja eksperimentu. Nav tik traki. Tev nokalos gadus 20 pie normālas grozīšans+saglabāšanas.

FUSES. Drošinātāji, ibio. Vismistiskākā daļa. Patiesībā nevis ibio, bet gan mikrokontroliera BIOS. Tur galbājas settingi kā kontrolierim strādāt. Piemēram: Kādu generatoru uzmantot? Iekšējo RC, ārējo kvarcu, tainsūri utt. Aizliekgt nolasīt programmu no FLASH, lai dzeltenie nekopē Tavu ūberproduktu. Lai arī, tik un tā nokopēs. Maitas, ne? Tad arī stāsts par Jurkina RESET kājas epopeju. Ko darīt ar RESET kāju? Resetot/programmēt kontrolieri vai arī izmantot kā PB5. Citas fīčas, kuras rakstītas datu lapā. Svarīgi: Programma no FLASH pilnīgi neko nezin par FUSES esamību. Tāpat: klasiskā iesācēja kļūda: līst pie FUSES, rezultātā mikrene paliek mēma un izmetama ārā. Taisnām rokām var atdzīvināt, bet tas nav iesācēja stāsts.

Kā notiek programmas dabūšana kontrolierī? Pieslēdzam ISP programmatoru un iepūšam programmu FLASH atmiņā, Uzstādam FUSES utt.

Viss jau būtu forši, bet muzikantiem, māksliniekiem un indigo no tā nesaceļās. viņiem vajag plug-and-play. Te nu arī parādās arduino un mistiskais bootloaderis.
Izrādās ka programma, kura izpildās no FLASH patiesībā var pati sevi pārrakstīt. Wow? Kāpēc tā vajag? Kā būtu ja mēs uzrakstam mazu programmiņu, kura lasa datus no seriālā porta un ieraksta pati "sevī", tobiš FLASH atmiņā. It speciāls FUSE, kurš to var atļaut. Tieši tā strādā arduino parastais un arī paštaisītais.
1) nopērkam Atmega328 mikreni, kurai FLASH atmiņa ir tukša.
2) paņemam programmatoru un ierakstam FLASH atmiņā bootloaderi (pašrakstītu vai aizņemamies no Arduino web lapas)
3) Viss. Esam laimīgi, jo ir bootloaderis.

Tālāk notiek interesantākais:
1) Ieslēdzam Mikrenei barošanu.
2) Mikrenē palaižas bootloaderis.
3) Bootloaderis apmēra vienu sekundi gaida datus no seriālā porta. Ja dati ir, tad 4. punts; Ja datu nav, tad 5. punts
4) Saņemtos datus (mūsu arduino programmu) ieraksta FLASH atmiņā.
5) Bootloaderis palaīz mūsu ierakstīto programmu.
6) Programma blinkina LEDus, groza skaļumu utt.

Tātad...
1) Nopērkam gatavu arduino. Tur mikrenē jau ir ierakstīts bootloaderis.
2) pieslēdzam pie datora caur USB
3) Dators arduino atpazīst kā Seriālo (COM, UART, sauciet kā gribat) iekārtu.
4) Uzrakstam savu programmu un arduino vide, sadarbībā ar bootloaderi, ieraksta mūsu programmu kontrolierī.
5) Kaifojam.

Ērti un savietojami ar jebkuru datoru utt. Nevajag nekādus programmatorus. Vienkārši raksti programmu un testē.

Ja gribās padziļināti iebraukt, tad jāmeklē papildus literatūra.

Tādi, lūk, pīrāgi.

----------


## JDat

Tagad par tēmu:
TINY13

Tiny ir tik maza FLASH, ka bootloaderis izņem ~ 1/4. Var jau, bet...
... īsti vīri tiny lieto bez bootloadera. Piekāšam ērtību un izmantojam programmatoru.
Tātad uzrakstam programmu un .hex failu iecepinam kontrolierī. Neaizmirstam pareizi salikt FUSES.
Tas arī viss.

Ceru ka Jurkinam tapa skaidrs, kā apsaukāt problēmu un kur meklēt konrētu trūkstošo info par robiem zināšanās.


Kas attiecas uz programmatoriem.
Vienmēr var nopirkt gatavu kastīti pie ražotāja, bet besīgi dārga, bet var izārstēt nepareizi saliktas FUSES.
Te palīdz ķinieši ar letākiem produktiem no ēbrjea (eBay), bet jāgaida klasiskais mēnesis.
Sen senos laikos tika lodēti programmatori uz LPT porta. Nostaļģiskā pagātne...
Tagad arī pašu Arduino UNO (utml) var pārvērst par programmatoru, kurš nav sliktāks par ķinā ražotu. Tiek izmantot āvarijas kontracepcijas (ja vajag ļoti ātri no plauktiņa paņemt) gadījumos. Kāreiz priekš Jurkina.

Tālāk softs. Atsevišķa tēma, kurā esmu atpalicis no dzīves.
Vienkārši paņemu arduino platīti un izmantoju arduino softu. Bez liekas vajadzības neiedziļinos niansēs.

USB to serial. Izmantoju FT232RL platītes. Arduino komūna ir gājusi tālāk. Uzliek "speciālu" atmegu (Atmega32U???) un pārvērš kotrolieri par seriālo portu. Moderās arduino platītēs ir veselas divas artmegas. Viena ir klasiska Atmega328, otra armega pārvēšas par USB to serial. Ir arī īpaši zvēri, piemēram Arduino Leonardo (AtMega32U). Tas ir divi vienā. Gan USB to serial, gan klasika vienā mirkenē, ja neiedziļinās niansēs. Tur specifisks bootloaderis, kurš mirenei liek strādāt ar USB. Leonardo mēdz būt savi "ņuansi" attiecībā uz bibliotēkām.

----------


## JDat

Kas attiecas uz FUSE niansēm, tad var izmantot online kalkulatoru.

----------


## Jurkins

Nu cik sapratu, tad, ja Arduino izmanto kā "Arduino as ISP", tad tiem Tiny vai citam atmelim bootloaderi šūt iekšā nav obligāti. Vienīgi sanāk, ka FUSEs ar šo citādi iešūt nevar kā nospiežot "iešut bootloaderi", un arī tikai tās dažas. Varbūt, ka var arī citas, bet tad laikam jārediģē boards.txt fails, kuru ar čupiņu citu vajadzēja novilkt no neta, jo Arduino by default neatpazīst mazos Attiny. Tā kā laikam jau tā ir tāda mandeļu operēšana caur irsu.

O! Tas online kalkulators ir labs. Paldies.

Laikam jau ir tā, ka Arduino jāizmanto kā Arduino kur vien var un kā vien var, jo cena ir pasmieklīga, un nav ko "čakarēt Bobi", savukārt dziļāk, ja iepatiksies, tad Arduino jānoliek uz to brīdi malā.

----------


## JDat

Arduino softs priekš iešūsanas izmanto AVRDUDE. Komandrindas softs priekš .hex failu iešūšanas. Var pats mēģināt ar avrdude salikt gan FUSES gan iešūt programmu, bet... Jātrod kāds GUI softiņs, kurš palīdz iešūsanas procesā. Rezultātā nebūs jāvingro ar FUSES un arduino softu.
Bez tam FUSES parasti iešuj vienu reizi. Tad šuj tikai programmu kamēr viss pabeigts. Fināla softa versiju iešuj kopā ar LOCK bits, lai aizsargātu kodu pret ķiniešu kopētājiem. Ja tomēr ļooooti gribās čakarēt RESET kāju, tad labāk iegādāties ražotāja progrmmatoru, jo tāds verķis māk tikt galā ar sabojātām FUSēm.

----------


## marizo

Es ar savu ~mēnesi Arduino Nano klona pieredzi baigās gudrības nemētāšu..
 Bet- laikam vajag pieminēt, ka sačakarētas fuses var salabot ar programmatoru, kurš padod 12 (vai cik nu tur) V spriegumu uz Reset (ko nemāk darīt Mega). Tur arī atšķirība - ka tas nebūs parastais ieejas signāls no sensora, bet programmēšanas rest.

----------


## M_J

Izmēģināju ar AVRDUDE visādus GUI, iepatikās Burn-O-Mat, pārējiem katram ar laiku izlīda kāds gļuks. Bet pēdējā laikā, tā kā strādāju iekš Linux ar Geany, tur pietiek vienreiz saglabāt vajadzīgo AVRDUDE komandrindu un turpmāk programmas iešūšana kontrolierī prasa akurāt vienu klikšķi un kādu sekundi programmēšanai. Tas - mazajiem atmeļiem, lielajiem lietoju bootloaderi.

----------


## JDat

Tiny13 redzu tikai specifiskā santīmčakarēšanas gadījumā kad taisa kaut ko lielos apjomos. 10-15 EUR par arduino pret 0.7 EUR par tiny13 (argusa cenās), reizēm ir no svara. Ikdienā iesaku Arduino Pro mini, bet vajadzēs iegādāties Sparkfun USB to serial adapteri. Par cik man ir aktuāli 3.3V (nākotnes MCU spožums vai posts???) tad tādi adapterīši sainiecīvā ir gaužām noderīgi. Lietotāju izstādājumos čali uztaisījuši savas platītes. Neliela shēmas modifikācija un var štancēt seriālās platītes priekš arduino pro mini.

Kā jau tiko kungi pieminēja: tālākais ir mazās, bet svarīgās nianses.

----------


## Jurkins

> Arduino softs priekš iešūsanas izmanto AVRDUDE.


 Aha, šito jau es nokonstatēju, ka viņš tā dara. Bija jāsaliek pareizie ceļi uz avrdude arduino Tiny konfigurāciju failos.  
Nečakarēšos ar Reset kāju, gribēju tikai saprast, čo pa čom. Tāpat TINY13 nepietiek kāju, vajag 6 bitus un analogo ieeju.

----------


## M_J

Tiny13 ir akurāt tas, ko var iebāzt dajebkur, kaut vai klozetpoda vākā, kā mēdz ironizēt Didzis. Piemēram, katrā ABS devējā (nezinu gan vai tajos, kuros kas tāds ir, stāv tieši Tiny13 bet varētu būt), auto ģeneratora sprieguma regulatorā (tur gan esmu redzējis funkcionāli identiskus PICus). Manam Huskvarnas elektriskajam ķēdes zāģim "soft start" un aizsardzība no rūpnīcas ir realizēta ar vienu simistoru un Attiny, neatceros kādu. Gandrīz jebkur, kur lieto 555, to varētu aizstāt ar tiny13 un nesalīdzināmi plašākām iespējām. Siliņš varētu vienā mierā uztaisīt taimeri ar nedēļas aizturi, ko viņš mēģināja dabūt gatavu uz 555.

----------


## Powerons

> Jātrod kāds GUI softiņs, kurš palīdz iešūsanas procesā.


 Redzkur gan programatori prieks AVRDUDE un programātoru softsi dažādi arī sarakstā

http://www.fischl.de/usbasp/ 
Programators saucas USBASP nevis ISP

----------


## JDat

Poweron, speciāli Jūsu nezināšanai: ISP - In System Programming.

Kuru programmatoru Jūs lietojat, tas lai paliek uz Jūsu sirdsapziņas.

Man pilnīgi pietiek ar šo programmatoru "Arduino as ISP".

----------


## Jurkins

Atradu "tumbočkā" LC Technology USBASP V2.0 programmatoru. Dabūju netā draiveri, rāda, ka viss ir OK, bet vai šim nebūtu kā COM portam jāuzrādās? Parasti šitādiem verķiem kaut kas nomidžinās  ::  pieslēdzot pie USB, bet šim deg sarkanais LEDs un viss.

----------


## marizo

Izskatās, ka gribas sajaukt kopā sērijveida ražošanu un hobijista dažus eksemplārus. Tur arī iespringums par izmēru/cenu. Hobijistam, manuprāt, ērti, ka var samest maketu uz breadbord - tur lieti noder Arduino Nano vai Pro Mini (pirmajam- USB; otrajam - gan 5V, gan 3,3V versijas - ebay par 3-4US$), nu par tādu naudu nav jēgas prototipam PCB taisīt. Un lieti noder arī būtloaderis. I/O skaits jau ir OK, lai pietiekami paspēlētos, atmiņas arī gana, vismaz sākumā nebūs jāiespringst uz koda optimizēšanu.
Atsevišķs programmators man nav, nav bijusi arī vajadzība. Saprotu tā - ja ir 1 gab Arduino, tad no tā var otru ieprogrammēt. Šeku arī uztaisījuši, ka ar Arduino var Fuses salabot, ja nu kas.
Tāpat ebay pilns ar USBasp AVR Programmer USB 3.3/5V par smiekla naudu, ja nu gribas atsevišķu programmatoru.

----------


## Jurkins

Tak diemžēl man elektronika nav maizes darbs, tāpēc neko negribu jaukt kopā  :: .

Un tieši tāds programmeris man arī ir atradies. Tikai tagad nevaru saprast, kāpēc šis nepalaižas. Neatceros, vai šim nāca draiveris līdzi. Droši vien jau, ka ne. Bet kā COM šo neredz.
Jeb viņš nav jāredz kā COM?

Redz man gribas (gribēt ir labi  :: ) paprogrammēt. Arduino ir labi un smuki, bet ērti ir tikai ar paša Arduino komandām nevis C. Un tādam mazam TINY trīs Arduino komandas un pilns līdz acīm  ::  A bet tie mazie interesē tieši dēļ tā, ko M_J augstāk minēja.

Un WinAVR arī redz tikai COM1.

----------


## M_J

Palaidu windows un paskatījos. Kā COM viņš naparādās. Man viņš zem libusb-win32 parādās kā USBasp. Draiveri viņam ir autora mājaslapā fischl.de. Iekš Linux tur, protams drusku cita opera, nav gluži plug&play.

----------


## JDat

Mario. Manā specifikā parasti pietrūkst tieši I/O skaits. Vajag I2C,vairākus IO, kādu poci,UART. Kaut vai tas pats grbl priekš CNC vai Pogu+LED matricas. Likt klāt 595 utml arī negribas. Galu galā priekš hobija izmantoju Parallax Propeller.

USBASP neaptazīstas kā COM ports. Tur bija kaut kas savādāks. Nelietoju un negribu lietot USBASP slinkuma dēļ.

----------


## Jurkins

Nu, šķiet, ka jautājums atrisinājās. Tas usbasps ļoti labi iet kopā ar eXtreme Rurner -AVR. Kodu var cmuki rakstīt (pa biezo) Atmel Studio, CodeVision vai vienalga kur (notepadā, kā īsti vīri  :: ), nokompilēt un hex failu cmuki iešūt.
Velns, šajās dienās par daudz informācijas galvā sabāzts  ::

----------


## JDat

Kad būs galvā būs IDLE, tad pārstrādāsies arī šī informācija.

Neiemācās tikai tas, kurš neko nedara.

----------


## M_J

Tad jau Priecīgas Lieldienas! Bet ar eXtreme Burner jāuzmanās, ja jāiešuj garāks kods lielākā atmelī. Aplauzos, mēģinot iešūt Atmega128. Kaut ko viņš neizdara ar adresācijas vecākajiem bitiem. Adresu apgabala otrajā pusē nekas neierakstās, klājas virsū pirmajā pusē ierakstītajam kodam.

----------


## Jurkins

Bļin, es arī tikko aplauzos. Negrib šis iešūt manu Attiny. Met ārā "mismatch at location 0x00000". Čipu nolasa, FUSEs nolasa, Erase arī izpildās, bet ierakstīt nevar.

edit: Atradu iesācējam draudzīgāku progu - khazama. Šī baigi labi FUSEs parāda. Nav jārokās pa manuāļiem. Un raksta arī kodu iekšā. 
Tikko biju nolēmis, ka šodienai pietiek. Bet nu nav miera.

edit: Un LEDs mirgo! ::

----------


## Powerons

Es kādreiz ar USBASP programmēju Attiny45 un Attiny85 bez problēmām.

 Problēmas kādreiz ir bijušas ar programmatora draivera versijām, kad neatrod draiveri

----------


## Jurkins

Ar kādu softu?

----------


## Powerons

Kā brīžiem, Parasti lietoju "programmers notepad" un no tā arī caur avr dude programmēju.
Nokompilē softu notepadā un no notepada pa tieršo ieprogrammē,
Arduino programmēšanas vidi nelietoju, lai arī no tās var ieprogrammēt, bet no arduino softa programmators iet lēnajā ātrunā.

Ņem vērā ka jaunam kontrolierim fuse biti jāraksta lēnajā atrumā, pēc tam var ar ātro ātrumu

Ja vajag fuse bitus salikt, tad lietoju: Khazama AVR Programmer
Retāk lietoju: eXtreme Burner - AVR

----------


## Jurkins

> Ņem vērā ka jaunam kontrolierim fuse biti jāraksta lēnajā atrumā, pēc tam var ar ātro ātrumu


 Par šo var nedaudz izvērstāk? Man tie ātrumi jau bišķi sajukuši.

----------


## Powerons

Jauns atmelis darbojās ar iekšējo oscilatoru, kurš ir lēns, kāda frekvence tur bija neatceros, bet lēna.

Tāpēc uz USBASP ir jumperis, kur var pārslēgt programmatoru lēnajā ātrumā un ierakstīr fuse bitus.
Ar fuse bitiem uzliek kādu ātrāku oscilatora tipu, kādu megahercu diapazonā un tad var programmkēt ar lielo ātrumu.

Ja aparātu ir nepieciešams kaut kādu iemeslu pēc darbināt uz zemām frekvencēm, tad var ievajadzēties lēns, bet ne pats lēnākais rakstīšanas ātrums,
To var uzstelēt Khazama programatorā.

Bet parasti vienreiz ar lēno ātrunmu fuse bitus saliek uz ātru oscilatoru, un pēc tam visu dara ar lielo ātrumu

----------


## Jurkins

Skaidrs, paldies. Tagad sapratu, par kuru ātrumu ir runa. 
Lasīju vienā krievu saitā, ka specifiskam procesam TINY palaists uz laikam 16kHz.

----------


## Jurkins

Sveiciens visiem šodien šajā tēmā!
Atkal radās lamerisks jautājums. Šoreiz pa C. 
Kāpēc paraugos raksta :  PORTB |= (1<<PORTB5) ?
 Es saprotu, ko nozīmē katrs simbols, bet kāpēc tik sarežģīti? Jeb vnk  tāpēc, lai cilvēks iemācītos, kā ierakstīt porta B 6. bitā "1" nezinot  un neinteresējoties neko par pārējiem bitiem.

----------


## Powerons

Nu mana dzimtā valoda ir Pascal, bet nākās ņemties ar C

 Esrakstu tā: (pie mainīgo apraksta)
#define REL1_OUTPUT_MODE() DDRA|=(1<<PA7)
#define REL1_OFF() PORTA&=~(1<<PA7)
#define REL1_ON()  PORTA|=(1<<PA7)


Pēc tam izsauc kā apakšprogrammu:
REL1_OUTPUT_MODE();
Vienreiz pārslēdz portu kā izeju,

Pēc tam slēgā izeju kā vajag, izsaucot kā apakšprogrammu

    REL1_OFF();
vai
     REL1_ON();

Kaut kur interneta atradu šādu metodi un sintaksi un iepatikās

----------


## Jurkins

Ufff... pirmajā momentā raibs gar acīm, bet tad sapratu. Doma smuka. C ļoti maz un pēdējo reizi bija ap 1990-to gadu.

Nezin kāpēc tas Arduino patika pirmajā dienā, bet tomēr velk uz C. Laikam vecuma marazms  :: .

----------


## JDat

> Ufff... pirmajā momentā raibs gar acīm, bet tad sapratu. Doma smuka. C ļoti maz un pēdējo reizi bija ap 1990-to gadu.
> 
> Nezin kāpēc tas Arduino patika pirmajā dienā, bet tomēr velk uz C. Laikam vecuma marazms .


 Ja velk no asm uz C, tad tā ir brieduma pakāpe. Ja vilktu uz BASIC, tad gan būtu vecuma marazms...

----------


## Jurkins

Tak nē, man gan asm gan c bija pēdējo reizi tajos 1990-tajos (vēl līdz augusta pučam  :: )

Varētu mierīgi cepties iekš Arduino komandām, bet mani  "žaba dušij", kad nolasot analogo poci iekš c .hex sanāk divas reizes mazāks nekā ar Arduino AnalogRead.

WoW! Pat BASIC šiem jau ir! NezDelphi/Paskāls nav?

Kaut kur gan manīju, ka ir kaut kāda IDE (vai kas viņu zin), kurā var rakstīt programmu kā "ladder diagram". HVZ, cik tas efektīvi, bet interesanti.

----------


## Powerons

> WoW! Pat BASIC šiem jau ir! NezDelphi/Paskāls nav?


 Es kādreiz biju atradis Pascal kompilatoru priekš mikrokontroliera, tik neatceros tas bija prieks PIC vai Atmel
Bet tā kā iekš C pilns nets ar piemēriem, tad negribīgi pārgāju uz C
ASM gan vairs lietot negribās un par laimi nav nepieciešamība.

----------


## marizo

> Kaut kur gan manīju, ka ir kaut kāda IDE (vai kas viņu zin), kurā var rakstīt programmu kā "ladder diagram". HVZ, cik tas efektīvi, bet interesanti.


 Šo domāji? Tā pat nav programmas rakstīšana.

Nedaudz offt., bet no tuvajiem kaimiņiem visādi hibrīdi radušies. Pēdējais, par ko brīnos - Arduino IDE priekš ESP8266 Wi-Fi moduļiem.

----------


## Jurkins

> Šo domāji? Tā pat nav programmas rakstīšana.


 Īsti laikam nē. Šķiet, ka tas nebija uz Arduino un vizuāli bija precīzi kā ladder diagrammas.

Nja, nu man pašlaik ir pirmie soļi, līdz tādām lietām kā ESP8266 vēl jāpagaida. Neapšaubāmi, ka ar Arduino var izdarīt daudz un labi, un varbūt pat tas ir pareizais ceļš, lai pie rezultāta nonāktu ātrāk, bet "žaba dušij"  :: .

----------


## Jurkins

Tad nu ņemos lēnām ar to mazo kverpli ATTINY13. Mēģinu apgūt taimeri. Gribu dabūt 1ms impulsus.
FUSEs ir saliktas uz F=9.6MHz un dalītāju uz 8. Tātad sanāk F_CPU=1.2MHz.
Taimerim TCCR0B reģistrā ierakstu PRESCALER CSE0...2 bitos, lai dala F_CPU uz 8. Tad sanāk 150kHz, un T=6.666...67us.
Ierakstu OCR0A reģistā 150 un uzlieku pārtraukumu, kad skaitītājs saskaita līdz šim OCR0A. 150*T=1ms.
Kods


```
#include <avr/io.h>
#include <avr/interrupt.h>

volatile unsigned long timer_overflow_count = 0;

ISR(TIM0_COMPA_vect){
    timer_overflow_count ++;
}

int main(void){
    unsigned long time_value_1 = 0;
    unsigned long time_value_2 = 0;
    unsigned long time_value_3 = 0;
    unsigned long time_value_4 = 0;
 
    DDRB |= ((1<<PORTB1)|(1<<PORTB2)|(1<<PORTB3)|(1<<PORTB4));
    PORTB = 0x00;
    
    OCR0A = 0x96;                                                       //OCR0A ieraksta 0x96 = 150, 150*t=150*6.666...67us=1ms
    TCCR0B |= ((1<<CS00)|(0<<CS01)||(1<<CS02));        //CS01=1, Fclk/8, 1200000/8=150000, t=6.666...67us
    TIMSK0 |= (1<<OCIE0A);                                        //Pārtraukums kad TCNT0 == OCR0A
                                    
    sei();
 
     while(1) {
        if(!(time_value_1 + 250 > timer_overflow_count)) {
            PORTB ^= (1<<PORTB1);
            time_value_1 = timer_overflow_count;
            }
        if(!(time_value_2 + 500 > timer_overflow_count)) {
            PORTB ^= (1<<PORTB2);
            time_value_2 = timer_overflow_count;
            }
        if(!(time_value_3 + 1000 > timer_overflow_count)) {
            PORTB ^= (1<<PORTB3);
            time_value_3 = timer_overflow_count;
            }
        if(!(time_value_4 + 2000 > timer_overflow_count)) {
            PORTB ^= (1<<PORTB4);
            time_value_4 = timer_overflow_count;
            }
     }
 }
```

 LEDi mirgo, bet figņa tāda, ka nav 1ms, un galvenā šaize, ka mainot CSE0...2 bitus līdz ar to mainot PRESCALER uz 64, 256, 1024 vai 1 nekas nemainās. Ja nonullē visus trīs, tad gan skaitītājs neskaita kā grāmatā. Vot i lasu to grāmatu un nevaru saprast, kur es nodzenu luni.

----------


## JDat

Un cik ms ir uz LEDiem?

----------


## Jurkins

uz PORTB4, tas ir tru, kur, manuprāt, vajadzētu būt 2s (2000) ir apmēram pussekunde.

----------


## Jurkins

Vo velnos, pamainīju rindiņu:

TCCR0B |= ((0<<CS00)|(1<<CS01)||(0<<CS02))

uz vnk

TCCR0B |= (1<<CS01)

un viss aizgāja. Čo za herņa? Vai tad tas neasnāk tas pats? Vienkārši bija ierakstīti visi trīs biti caur "VAI", lai varētu pamainot 1 un 0 pamainīt preskeileru pa ātro.

Bļin, atzīstu, esmu losis!!! :: 
Tagad tikai pamanīju, ka | vietā esmu ierakstījis ||...

edit: Velns, viss ir aizmirsies pa 20+ gadiem. Kā ir ar tiem pārtraukumiem?
Man tagad pārtraukums izpildās ik pēc 1 ms? Tas nozīmē, ka ja bezgalīgajā ciklā būtu briesmīgi aprēķini, kuru izpildei vajag vairāk laika par 1 ms, bet te pienāk nākamais pārtraukums. Kas notiek?

----------


## JDat

Uzraksti lai IRQ maina pina vērtību uz pretējo. ja pin==0, tad pin=1; ja pin==1 tad pin0 un pamēri vai paklausies. Uz ausi var labi atšķirt vai tur plānotie 500 Hz vai kaut kas cits.

----------


## Jurkins

> Uzraksti lai IRQ maina pina vērtību uz pretējo. ja pin==0, tad pin=1; ja pin==1 tad pin0 un pamēri vai paklausies. Uz ausi var labi atšķirt vai tur plānotie 500 Hz vai kaut kas cits.


 Par šo viss kārtībā. Nolohojos konkrēti. Uzstādot CS.. vienā vietā biju ierakstījis | vietā ||. Jocīgi, ka kompilators kļūdu neuzrādīja un LEDi arī mirgoja lai arī kaut kā ne tā.

edit: uzrakstīju (beidzot) iekš c kodu skaļuma regulatoram tieši tādu, kā pirms tam uz Arduino. Nu tikai tas, ka attiny13 trūkst divu vai vienas (ja reset aiztiek, es gan nemēģināju) kājas. Bet, ja uz Arduino programma aizņem ap diviem kilobaitiem, tad uz c 310 baitus, ja četri biti izejā un 300 baiti, ja trīs. Gan jau pierakstot vēl divus izejas bitus klāt, sanāks kādi 330 baiti. It kā jau mūsdienās kāda tur starpība, bet tomēr patīkami. Tagad jāpaņem kāds attiny2313, kuram kāju vairāk.
p.s. nu un vēl jau ir assemblers  :: .

----------


## next

> Jocīgi, ka kompilators kļūdu neuzrādīja un LEDi arī mirgoja lai arī kaut kā ne tā.


 C ir kaudze saiisinaatajiem pierakstiem, gan jau tas || arii ko noziimee.
Nav jau Paskaals kas programmerus rakstiit maaca - pats rakstiiji, pats briinies kas iznaaca.

A taa vispaar, gribi aatri - njem arduinu.
Gribi efektiivi - C prieksh Tevis.
Skaisti ( tikai neviens iznjemot Tevi to neredzees) - asm.

----------


## abergs

> Jocīgi, ka kompilators kļūdu neuzrādīja


 Nu CCS c abi tiek izmantoti:

----------


## Jurkins

Nu ja, tas, ka ir arī || neienāca prātā.

----------


## JDat

Vot... Tiešī tāpēc man arī patīk arduono. Uzrakstam kodu ar līkām rokām 2 minūšu laikā, tad vingrojam veselu stundu ar Serial.println(); un skatamies kā dažādos apstākļos mainās interesējošie mainīgie. Vingrojam, kamēr ir pārliecība ka kods strādā tā kā parecēts. Svaigākais vingrojums: Vajag 20 bit mainīgo (ulong) pašiftot. Nes ūda nestrādā ar klasiskajām << un >>. Nekas, jāraksta pašam. Notestē, kamēr ir pārliecība ka viss kārtība un tad ejām tālāk. Laiks, laiks, laiks. Sevišķi ja ir tiny bez uart un vajag kaut ko atkļūdot. Bet varbūt pie visa vainīgas līkās rokas un smadzenes, kurās sajaucas BASIC, gambas, C, C++, SPIN, python, bash, PHP, dažādi ASM un vēl sazin kas...

Vārdu sakot, pēc uzrakstīšanas visu jāparbauda dzelzī 10 reizes. Savādāk k poļotu ņe dopuskaetsja. Vot Tev i rapid development. Beigās viss, diemžēl, ir dirty.

----------


## Powerons

> Sevišķi ja ir tiny bez uart un vajag kaut ko atkļūdot.


 Es tādā gadījumā ņemu Atmega8 vai ko tamlīdzīgu, izstrādāju progu, uz UART visu skatās, kad viss pabeigts tad pārnes kodu uz TINY,
labojumi parasti minimāli.

Es tā dariju kad vajadzēja gulēšanas režīmu, watchdog super lēnai par oscilatoru,
tas vis lai iegūtu īpaši mazu strāvas patēriņu lai akumulators vismaz gadam pietiek,
Pārcelt no atmega8 uz tini48 vai tini85 nesagādāja nekādas problēmas

----------


## Jurkins

Nja, nu tas serial logs arduīnam ir laba lieta.
Šodien dabūju  atmegu328, kurai ir pietiekoši daudz kāju, un mana skaļuma regulatoru  releju vadība uz breadborda principā strādā. Tagad gaidu no ebreja 5V  relejus. Nezin kāpēc biju pasūtījis 12V. Vēl tikai padomā vadīt katru  releju no divām kājām, jo šie relejiņi pievelkas ar 4.5V un atlaižas pie  0.3V. 

Jā, 20 bitu mainīgo pašiftot... gan jau es tā sašiftotu  :: 
Bet  vispār man šķiet, ka baigi labi ar #define sarakstīt derīgas lietiņas,  tā kā Powerons pāris postus atpakaļ rakstīja. Un tad kļūdīšanās ir  krietni retāka.

edit: bet vispār safanoja mani tie kontrolieri. Velns, kur es biju agrāk!

----------


## JDat

Releji? Pa taisno pie kontroliera? Nē nu var jau, bet cenšos tā nedarīt. PretEDS saproties... Tādos gadījumos uzmetu ULN2003 vai tml mikreni un pilnīgi pie kājs vai ir 5V,12V24V releji.

Kādreiz izmantoju #define, bet vienreiz kaut kas sāka niķoties. Nezinu kas bija par vainu, bet tagad (diemžēl, vai par laimi) izmantoju const byte manakāja=A0; utml.

Fragmentiņs no 20 pogas+20ledi skanējošās matricas:


```

const byte colcount=5; //Column count in matrix
const byte rowcount=4; //Row count in matrix

//Assign colums to arduino pins
const byte col0=10;
const byte col1=11;
const byte col2=12;
const byte col3=A0;
const byte col4=13;
//Assign Button rows to arduino pins
const byte Brow0=9;
const byte Brow1=8;
const byte Brow2=7;
const byte Brow3=6;
//Assign Led rows to arduino pins
const byte Lrow0=5;
const byte Lrow1=4;
const byte Lrow2=3;
const byte Lrow3=2;

const byte ColParray[]={col0,col1,col2,col3,col4};
const byte LedParray[]={Lrow0,Lrow1,Lrow2,Lrow3};
const byte ButtonParray[]={Brow0,Brow1,Brow2,Brow3};


for (byte row=0;row<rowcount;row++){digitalWrite(LedParray[row],LOW);} //Izslēdzam visas LED kājas

if (col==0){digitalWrite(ColParray[colcount-1],LOW);} //cilpojam starp stabiņiem un izslēdzam iepriekšējo.
else {digitalWrite(ColParray[col-1],LOW);} //Ja esošais stabiņs 0, tad izslēdzam 4 stabiņu, pretējā gadījumā izslēdzam iepriekšējo stabiņu

digitalWrite(ColParray[col],HIGH); //Esošais stabiņš aktīvs
```

 Līdzīgi ar ciklu un masīva lasīšanu ieslēdzam vajadzīgo LEDu rindiņā un no nolasam pogu. Tas arī ir viss.

Tagad katru stabiņu un rindiņu var uzlikt uz jebkuras kājas. Visu izšķir konektors un PCB trasēšanas vieglums.

----------


## Jurkins

Nē, nē, ne jau pa taisno. Vienkārši, ja relejs jāieslēdz, tad ieslēdzas 2 izejas. Viena (tranzistors) uz kādu pussekundi (minējums) nodrošina, ka relejs pievelkas, otra (tranzistors + rezistors) nodrošina, ka neatlaiž.
Bet vispār varētu arī pa taisno pamēģināt, pina strāvas tam relejam atliektiem galiem.

Vot nezinu, kā ar to const ir (arduino pašlaik ir pamests novārtā  :: ), bet aiz #define var sarakstīt garum garo romānu.

----------


## JDat

Pa taisno? Varbūt nevajag? Nav smuki! Tā mēdz darīt tikai tie, kuri mācās no jūtrubas.

----------


## Jurkins

Piekrītu, smuki nav. Visticamāk, jau tā arī nebūs.

----------


## Jurkins

Kaut gan, ja tā padomā. Kaut kāds attiny2313 maksā...neko. Šim ir izejās kaut kādi buferi, kuriem nekas nav pretī pret 40 mA. Protams, ir ierobežojums uz kopējo barošanas strāvu. Bet, ja šie parametri netiek pārsniegti pat ne tuvu. Kāpēc gan ne?

----------


## Kodolskiltava

Nu nav, nav tā smuki neatsaistīt nosacītas jaudas ķēdes no vadības daļas. Pirmkārt jau dēļ releja spolītes kā slodzes aktīvā rakstura, brīdī, kad atslēgsi spolīti, kādu brīdi spolītē uzkrādā enerģija kā strāva turpinās plūst caur MCU, vai, piemēram, kas notiks, ja izeju pārlēgsi no ieslēgtas uz tri-state? Kur tad plūdīs strāva? Caur MCU ieejas aizsardzības diodi. Cik mA ir atļauts šai diodei? Lai no tā izvairītos liksi paralēli Šotki diodi? Tā var darīt, bet vienkārši nevajag. Mūsdienās taču ir pieejami miniatūri virsmas montāžas npn tranzistori ar jau iebūvētiem rezistoriem, ir pieejami miniatūri lauktranzistori, uzliec pirms releja principā jebko tādu un relejam paralēli diodi vai ja gribi pavisam korekti - arī RC ķēdi, kas nospiedīs zemē liekus augstfrekvences izstarojumus.
Piemēram, reāls gadījums no dzīves - trauku mazgājamā mašīna, kuras relejam no kontaktiem uz spoli izšāva 220V. Ja starp proci un releju nebūtu tranzistors, kuram uzsprāgt, uzsprādzis būtu procis un traukmašīnu varētu izmest. Bet tā, nomainīju tranzistoru un releju un viss OK.

----------


## Jurkins

Tās tādas pārdomas muļķīgas. Bet šotki paralēli spolītei un varbūt RC būs šā kā tā.

By default tādām lietām tumbočkā ir čupa ar lētajien 4N25.

----------


## M_J

Par šo tematu arī esmu domājis un vienmēr lieku šādus atdalošos elementus. Gana bieži, remontējot auto elektroniku ir gadījušās līdzīgas sitācijas kā Kodolšķiltavai. Un tad ir labi, ka ražotājs ir ielicis kaut kādas ķēdes, ka uzreiz nenodeg procesors. Bet tajā pat laikā nodomāju - bet kāda mārrutka dēļ ražotājs to dara. Paskatoties jebkuru auto ražotāja remonta dokumentāciju - elektronikas bloku remonts NAV PAREDZĒTS. Tikai nomaiņa. Un tādā gadījumā ir taču pilnīgi vienalga vai nodedzis gala tranzistors vai procis. Beigts ir beigts. Bloks jāmaina šā kā tā. Un dīleri to arī dara. Tranzistorus jau maina tikai tādi lauku feģas kā es un man līdzīgie, un dara to klientiem santīmmīlētājiem.

----------


## Jurkins

Ja skatās no rūpnieciska (ražot gan netaisos) viedokļa tad tieši mana situācija ir tāda, ka nodegt kaut kam būtu grūti un, ja arī kaut kas tāds reizi 10 gados notiktu, tad pat ātrāk būtu pārspraust 2313 (nu jā, rūpnieciski gan neliek DIP) nekā kaut ko lodēt. 
Bet vispārīgi, protams, ka vajag likt atdalošos.

----------


## JDat

Paņem argusā vai vēl kaut kur ULN2003 (7 izejas) vai ULN2803 (8 izejas) mikreni un nečakarējies. Paskaties datasheet. Vari arī paņemt ko citu no ULN sērijas, bet vai ir vērts, ja maikrene maksā 0.5-1EUR/gab. Nevajadzēs pretEDS diodes lietot. Viss jau integrēts mikrenē. Gatavs darlinkgrota tranzistors ar ieejas pretestībām un pretEDS diodi. Viens korpuss var pavilkt 800 mA. Tātad tiksi pie 8x80 mA tranzistoriem. Vai arī... Viens tranzistors, kurš kustina līdz 500 mA. Viena no patīkamajām lietām: pieslēdzam pie arduino (kurš strādā 3.3V vai 5V) mikrenes ieejas un pieslēdzam 12V relejus mikrenes izejā. Pilnīgi ne par ko nav jādomā. Pat nevajag "liekās detaļas" 0.1 uF kodensatoru izskatā. Kas var būt vienkāršāks? Lielākā problēma: laika patēriņs kamēr brauc uz bodi pēc detaļas.

Godīgi sakot, ja arduino izeja jāslogo ar kaut ko vairāk par 20-25 mA, tā uzreiz lieku buferi. Vienkārši tāpat, smukumam. Patīkami, ja smadzenēs ir apziņa ka shēma tā vienkārši nesabojāsies un nenodegs... Rezultātā atliks raizēties tikai par kodu, nevis bakstīties ar voltmetru lai konstatētu ka kaut kas ir khem! sapisies dzelžos.

----------


## Kodolskiltava

Akjā, pareizi, šiem čipiem taču pat diodes bija iekšējās. Tomēr man ir bijuši gadījumi, kad lielākiem relejiem atslēdzoties sākas problēmas ar traucējumiem no releja spoles, tad mani glāba RC ķēdes un kopš tās reizes vienmēr releju spolei paralēli ielieku kaut kādus 100Om virknē ar 0,1uF.

----------


## Jurkins

Jau pasūtītas ULN no ebreja veselu čupu, lai ir tumbočkā.
Vienīgi grauž tāda doma, ka varbūt laiks sākt uztvert mikrokontrolieri kā prastu detaļu  :: 

Es arī kādreiz, kad diezgan daudz visu ko zīmēju un kodināju, uz plates gandrīz vienmēr bija RC ķēde pie relejiem. Bet reizēm palika neielodēti.

----------


## next

Te jau piemineeja trauceejumnoturiibu.
Rekur domas no pagaajushaa gadsimta:
http://faqs.org.ru/electron/embconst.htm

----------


## Jurkins

Labas domas sakopotas vienā vietā. 
Katrai iekārtai savā vietā jau ir citādākas prasības. Protams, ka nepieņemama lieta, ja no barošanas kaut kas lien un nojauc algoritmu. Bet tajā pašā laikā vienā vietā būs pieļaujamas pulsācijas 500 mV, citā 5uV. Un nav vajadzības pirmajā gadījumā iespringt uz barokli ar 3uV pulsācijām. Cita lieta ir labais tonis  :: . Un, loģiski, ka audiorastam labāk skanēs tāds skaļuma regulators, kuram relejus vadīs tranzistori ar pielasītām betām  :: 
p.s. atteicos no domas pat mēģināt vadīt pa taisno, jo 6*30mA (gan ļoti retos gadījumos) tomēr ir tuvu atļautajiem 200mA. Bet ar attiny tomēr pamēģināšu, lai pārliecinātos.

----------


## Jurkins

Padalīšos ar savu bēdu/prieku  :: . Tad nu vecuma marasms liek man līst asmā. Tā kā derētu gāzes katlam pielkt bimetāliskā kontakta vietā ko modernāku, tad izdomāju apvienot patīkamo ar lietderīgo. Pasūtīju e-līcī DS18B20, atnāca feiki, un atveda man tepat no Argusa šos. Sarakstīju kodu visām procedūrām, arī meklēšanām (lai gan konkrētajā gadījumā to nevajag), un par brīnumu proteus simulatorā viss strādāja. Spraudu attiny un termometru maizesdēlī... un nestrādā nu ne nosit. Īsti nav sajēgas, kā šādas iekārtas (pat tik vienkāršas) mēdz dabūt pie dzīvības, logera nav, mēģināju izlīdzēties ar oscilogrāfu. Liku kodā papildu komandas, kas tādā vai citādā gadījumā spīdināja LEDus kamēr beidzot... BĻĀĀĀĀĀCCCC! Atveduši man nevis DS18B20, bet DS1820. Starpība tāda, ka vienam aiz komata četri biti, otram tikai viens. MORĀLE - vienmēr vajag izlasīt, kas rakstīts uz elementa (ja var salasīt  :: ) un , galvenais, izlasīt līdz galam, nevis tikai DS18...

p.s. zinu, ka pilna Ķīna ar gataviem blociņiem, un zinu, ka pilns internets ar gataviem koda gabaliem, bet interesanti pašam izburties.

----------


## JDat

Jautājums; Kur Tu parasti pēct komponenus (Tiny,DS18 utt) un kāpēc.
Man kaut ka grūti pieņemt ka detaļas no
1) Argus/Ormix/Salvats
2) elfa/Distrelec/Farnell/RS-Electronic/TME/Mouser/Digikey
pērk ebay/aliexpress/China.

Vai tiešām cenas starpība ir tik liela ka ir vērts gaidīt tās nedēļas un skaidīt uz pastu?

Pie ta Farnell/Mouser/Digikey parasti garantē autentiskumu.

----------


## Jurkins

Zini, jo vecāks palieku  :: , jo mazāk gribas braukt uz Rīgu (rīdzinieki, neapvainojieties  :: ), no Argusa vai Lemonas atved viens vietējais elektronikas veikaliņš piektdienās. Bet sūtu jau no Farnell/Mouser caur Baltelektronu diezgan, kad salasās nedaudz vairāk vajadzību, un tad ar pastu līdz manīm. Par staigāšanu uz pastu ir tā, ka gandrīz vieglāk aiziet uz pastu ~250 metrus, tad kad ir brītiņš vai pa ceļam, nevis darba laikā skaidroties ar kurjeru, kur nu tagad būs strelka. 
A bet tās DS18 atnāca no e-līča vnk kopā ar visādiem citiem loriņiem. Maketiem! rezistorus, kondensatorus, stabilitronus, diodes no viennozīmīgi e-līča cenas dēļ. Tāopat attiny un atmegas paņēmu no līča čupiņu un iemetu atvilktnē.
p.s. maketiem - tādiem, kur nav kritiki svarīgu mezglu, piem impulsu baroklim e-līča rezistorus, tranzistorus un kondiķus u.t.t. noteikti nē.

----------


## JDat

Ak neRīga. Tas nedaudz maina lietas būtību. Tomēr... Viltotās detaļas ir izaudzinājušas no santīmčakarēšanas.

----------


## Jurkins

Nav jau tajā e-līcī tik traki. Skaidrs, ka laterālos mosfetus pa 3 USD pāri nevajag pirkt, vai tāpat ir elementi, kurus sen vairs neražo (vismaz to sākotnējais ražotājs) , bet e-līcī ir biezā slānī. 
Arduino 2560 farnelī gandrīz 40 eiro, es savu pa padsmit USD atstiepu, virsū rakstīts made in italy. HVZ.

----------


## JDat

Izklausās pēc jaunatklājuma no Salvata, kur Uno maksā 13 eur. Pcbone duino Argusā nervozi pīpē savā plauktiņā.

----------


## Jurkins

Gribēšanas ir vairāk nekā varēšanas  :: . Vienam projektiņam pa ~3 USD atvilktie 2 gab. (par abiem) UNO pagaidām mētājas tumbočkā. Pirms noliku saglabāšanai, piešķīlu. Nekādu problēmu.

----------

