Warning: Illegal string offset 'name' in [path]/includes/functions.php on line 6439
Iesācēja blēņas ar 4x4 plēves klavieri -
+
1 2 3

thread: Iesācēja blēņas ar 4x4 plēves klavieri

  1. #11
    Senior Member
    Nov 2009
    Jēkabpils
    2,046

    Nu tad principā es varu kaut vai šajā PCINT pārtraukumā ierakstīt pazīmi un, savukārt, to kodu pārvietot uz apakšprogrammu. OK, paldies par padomiem, paburšos izglītošanās nolūkos.
    Tā īsti vēl neesmu iebraucis ar tiem skaitītājiem. Ja man vajadzēs vairākus PWM, vai man nepietrūks skaitītāju, ja viena pārtraukumu izmantošu šādam mērķim. Tas nav jautājums, pagaidām vienkārši pārdomas (citādi mans CPU neatbalsta multithreading ). Pie šiem lietām ķeršos vēlāk

  2. #12
    Senior Member
    Jun 2006
    Cēsu novads
    986

    Tas ir atkarīgs no tā, kā organizē PWM. Vienkāršākais ir vienkārši iedarbināt attiecīgā skaitītāja attiecīgo PWM kanālu. Tad ir jāskatās, cik PWM kanālu attiecīgajam atmelim ir. Vecākiem to bija pamaz, jaunākiem ir vairāk. Piemēram Atmega128 bija divi 8 bitu taimeri, katram viens PWM kanāls, un divi 16 bitu taimeri, tagad nepateikšu, cik katram no tiem ir PWM kanālu, jo tos es nevarēju izmantot tāpēc, ka ja izmanto taimeri priekš PWM, tad no kaut kā ir arī jāatsakās, un to nevarēju. Katrā ziņā PWM kanālu man pietrūka. Bet, man tos PWM kanālus vajadzēja ar zemu frekvenci, kaut kur ap 1kHz. Un tad, izmantojot vienu no 16 bitu OUTPUT COMPARE pārtraukumiem, programmistiski noorganizēju 8 PWM kanālus. Bet vispār, pašreiz ar kāru aci skatos un taisos pamēģināt STM32 procesorus. Izskatās, ka tie pa visiem parametriem bez maz pa kārtu iekabina atmeļiem. Pie tās pašas cenas. Arī PWM kanālu tiem vesela jūra.

  3. #13
    Senior Member
    Nov 2009
    Jēkabpils
    2,046

    Nu ja, man tas viss vēl priekšā apgūstams.
    Ievēroju, ka arduino līnijas LCD displejs modulītim pogas uzsēdinātas uz analogās ieejas caur rezistoru dalītājiem. Netā ir piemēri, kur 3x4 taustiņu klavieres tā tiek realizētas. No vienas puses ļoti ieekonomējas in/out līnijas, bet kaut kā ...

  4. #14
    Senior Member
    Feb 2007
    Rīga, LV
    564

    Man arī patīk ASM, vismaz var skaidri saprast, kas notiks, un kā uzrakstīsi tā arī būs. es arī parasti pogas aptaujāju cilpā, laiku pa laikam, kad poga nospiesta, tad citas nav aktīvas, bet feināk ir caur rezistoru dalītāju un ar ADC pamērīt.
    Lētāk ir mācīties no citu kļūdām, nevis no savējām...

  5. #15
    Moderator
    Jan 2009
    Rīga
    4,413

    Uhh... Kur tie laiki... AVR ASM. Kas attiecas uz pretenzijām pret interrupt lietošanu skenēšanā. Piemēram: Procesors guļ ziemas (PCINT gadījumā: vasaras) miegā un gandrīz neko netērē. Visi stabiņi ir LOW. Visas rindiņas High ar pullup palīdzību. Tiklīdz notiek izmaiņa no High uz low, tā noskenējam matricu un atceramies stāvokli. Pagaidam debounce laiku. debounce laikā interrupt nočeko taimeri, ja laiks pagājis skenē vēlreiz, ja laiks nav pagājis iet gulēt. Ja poga nospiesta, izdaram ko vajag un guļam tālāk līdz ar to nekāda vajadzība regulāri skenēt. Viss! Katram uzdevumam savs risinājums.

    Hifilītiķis stāstīja stāstu: ir košerīgā dithering mikrene, bet jākontrolē ar MCU. Kas notiek? MCU guļ ziemas miegā un gaida vienīgās pogas nospiešanu. Kad poga nospiežas, tad uzliek jaunu uzstādījumus mikrenei un guļ tālāk. Kāpēc? Lai neradītu tokšņus barošanas ķedēs. Pārslēgšanas brīdī sīkums, bet kad bauda mūziku (vīns, kamīns utt), tad visam jābūt tip-top. Hipotētiski. Morāle: cik garš, tik resns.


    Kas attiecas uz konrētu problēmu. Jāizlasa datašits. Manā gadījumā (esmu bremze) pat vairākas reizes, kamēr atceras, pamana un saprot mazāko niansi ko ražotājs ir ierakstījis datu lapā. Piemēram. Savulaik biju pārliecināts ka AVRam ir tikai viens PCIN, bet, pateicoties Jurkina tēmai, izlasīju vēlreiz un... Bāc! Ir veseli 3 PCIN, katrs savam portam... Tad vēl nianse par to ka INT0 un INT1 var uzlikt kā vajag (High, low, rise, fall) bet... Kas ir ar PCINT (visiem)? Uz ko šamie reaģēs? Retoriski...

  6. #16
    Senior Member
    Nov 2009
    Jēkabpils
    2,046

    PCINT reaģē uz abām frontēm, un tur neko nevar pamainīt.
    Jā, ja jāceļ no gulēšanas, tad bez pārtraukuma neiztikt.
    Jāpamēģina būs ar to ADC arī. Redzesloka paplašināšanai

    edit:
    M_J bija taisnība. Pārtraukuma beigās ierakstot iekš PCIF0 "1", noskanē vienreiz un notinas no pārtraukuma.

  7. #17
    Senior Member
    Nov 2009
    Jēkabpils
    2,046

    Radās tāds (muļķīgs) jautājums - piem. siemens s7-200 ir 256 taimeri un 256 skaitītāji. Nez vai tie ir dzelziskie taimeri vai softiskie?

  8. #18
    Senior Member
    Jun 2006
    Cēsu novads
    986

    Manuprāt būtu pilnīgs idiotisms taisīt 256 dzelziskus taimerus, kad to pašu var dabūt gatavu ar dažiem klikšķiem pa klaviatūru. Cik rāda mana nelielā pieredze ar rūpnieciskajiem kontrolieriem, nekāda dižā ātrdabība tiem viņu PLC taimeriem nav, piemēram Comap es būtu varējis norealizēt vienu lietu, ja taimera izšķiršanas spēja būtu kaut vai 0.01 sekunde. Bet kas to deva, tādas lietas jātaisa pašam uz Atmel. Nezinu, kā ir ar Siemens, bet tā ir firma, kas joprojām nebeidz mani pārsteigt. Sliktā nozīmē.

  9. #19
    Senior Member
    Nov 2009
    Jēkabpils
    2,046

    s7, ja pareizi atceros, bija trīs veidu taimeri - ar takti 1ms, 10ms un 100ms. It kā veselais saprāts saka, ka softiskie, bet pagaidām nevaru izgudrot, kā uzrakstīt 10 neatkarīgus skaitītājus. Laikam par ātri gribu visu saprast

  10. #20
    Moderator
    Jan 2009
    Rīga
    4,413

    viena softiskā timer tikšķis ir vien dzelziskā timer overflow vai irq kad sasniegts noteikts skaits. Tādā veidā ar ātru MCu var uztaisīt kaut tūkstoti softisko timeru. Pie tam, ja visu pareizi noslēpj C bibliotēkās...

+