www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ARM9 digitalni izhodi

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Sob Okt 15, 2011 3:20 pm    Naslov sporočila:  ARM9 digitalni izhodi Odgovori s citatom

Lep pozdrav.

Uspelo mi je napisati program za LPC3141 (ARM9), kjer GPIO20 definiram kot izhod na katerem je LED, katero znam prižgati in ugasniti preko programiranja registrov GPIO_MODE1_SET, GPIO_MODE1_RESET, GPIO_MODE0_SET IN GPIO_MODE0_RESET.

Zalomi se mi, ko želim na GPIO19, ki je prednastavljen kot visokoimpedančni vhod, opazovati digitalni signal (0V ali +5V), katerega pripeljem na vhod preko tipke. Vhodni signal +5V na GPIO19 naj bi mi prižgal LED na GPIO20 a se to ne zgodi in ne vem zakaj.

Osrednji del programa je if else stavek, kjer opazujem celotni GPIO port preko registra GPIO_PINS (definiran v headerju), v katerem preko BITWISE AND operacije (&) izoliram 13. bit, ki je namenjen GPIO19.

PROGRAM:
Koda:
#include "lpc3141-ziga.h"

void delay(void);

GPIO_MODE1_SET = 0x4000;

   while(1){

   if(GPIO_PINS & 0x2000){
   GPIO_MODE0_RESET = 0x4000;
   }
   else{
   GPIO_MODE0_SET = 0x4000;
   }
   }
}

HEADER DATOTEKA:
Koda:
#ifndef LPC3141_ZIGA_H_
#define LPC3141_ZIGA_H_
#endif /* LPC3141_ZIGA_H_ */

#define GPIO_MODE0 (*((volatile unsigned int *) 0x130031D0))
#define GPIO_MODE1 (*((volatile unsigned int *) 0x130031E0))
#define GPIO_MODE0_SET (*((volatile unsigned int *) 0x130031D4))
#define GPIO_MODE1_SET (*((volatile unsigned int *) 0x130031E4))
#define GPIO_MODE0_RESET (*((volatile unsigned int *) 0x130031D8))
#define GPIO_MODE1_RESET (*((volatile unsigned int *) 0x130031E8))
#define GPIO_PINS  (*((volatile unsigned int *) 0x130031C0))
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Ned Okt 16, 2011 2:35 pm    Naslov sporočila:   Odgovori s citatom

Sem rešil problem, ki ni bil povezan s programom. Težava je bila v moji izvedbi analognega stikala, ki je imel ob sklenitvi na izhodu +5V, ob razklenitvi pa anteno namesto 0V hehe.

Sem se lepo naučil, kako težavni so lahko prosti pini, ko se ukvarjamo z tako občutljivimi napravicami kot npr. mikrokrmilniki Smile

LP Žiga
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group