nejde vstupny port

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

jedi
Okoloidúci
Okoloidúci
Príspevky: 16
Dátum registrácie: 06 Sep 2013, 20:45

nejde vstupny port

Príspevok od používateľa jedi » 08 Sep 2013, 01:05

mam na výstupe PD6 zapojenu LEDku, na PD7 mam zapojeny vypínač ,ked ho zopnem PD7 bude napojena na zem a tym pádom pul-up rezistor bude tiez na zem (to jest na PD7 bude logicka 0), PD7 ak je 0 tak blika LED ,opacnom pripade nebliká.... otázka znie prečo keď stlačím tlačítko nezačne blikať LEDka? niečom mi ušlo ? spinač som testoval je ok,ledka je dobre zapojena,,,


zdrojový kod:

#include <avr/io.h>
#include <util/delay.h>
int main(){
// PD7 ako vstupný pin ostatné ako výstupne
DDRD = 0b01111111;
PORTD |= (1 << PD7); // zapnutie pull-up rezistora na PD7
// nekoneèná sluèka
while(1){
if ((PIND & (1<<PD7)) == 0 ){ // ak je PD7 nulový
PORTD |= (1 << PD6); // rozsvie LED
_delay_ms(200); // poèkaj 200ms
PORTD &= ~(1 << PD6); // zhasni LED
_delay_ms(200); // poèkaj 200ms
}
}
return 0;
}
0

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12418
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa boraicho » 08 Sep 2013, 01:22

škoda že tym blbym AVRkovim zapisom nerozumiem ale napisal by som to takto
take jednoduche

main()
{
...

while
{

while(PD7==0)
{
PD6=1;
_delay_ms(200);
PD6=0;
_delay_ms(200);
}
PD6=0;

}

}
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa peterple » 08 Sep 2013, 09:10

boraicho: Takéto niečo na AVR nefunguje. AVR nevie bitovo adresovať. PD7 je konstanta 7 (rovnako aj PB7 = 7). Je to len hodnota poradového čísla bitu v registri. Preto sa to maskuje pomocou tej narotovanej jednotky. Navyše port má dva registre jeden pre výstup PORTD a druhý pre vstup PIND. Nemohol by si preto použiť PD7 ako podmienku toho while.

jedi: Na tom kóde nie je žiadna chyba. Skúsil som to iba v simulátore a beží to. Takže jediné čo ma napadá že to bliká moc rýchle a nevidíš blikanie. Skús iba toto:

Kód: Vybrať všetko

while(1){ 
if ((PIND & (1<<PD7)) == 0 ){ // ak je PD7 nulový 
PORTD |= (1 << PD6); // rozsvie LED 
} else {
PORTD &= ~(1 << PD6); // zhasni LED 
} 
} 
Bez stlačenia je LED zhasnutá. Pri stlačení sa rozsvieti.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12418
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa boraicho » 08 Sep 2013, 09:42

ja viem, ved pišem že tym blbym AVRkovim zapisom nerozuiem :) , ale predsa nevyzera ten kod pre PIC krajšie a jednoduchšie? :) lebo čo som si všimol tak začiatočnici s AVR sa učia s nim pracovať , niekoľko nasobne dlhšie ako s PIC a tu je nadherny priklad že je problem spraviť obyčajny blikač s led :finga:
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

Marekodzapadu
Stály člen
Stály člen
Príspevky: 175
Dátum registrácie: 25 Apr 2010, 00:00
Vek: 12

Re: nejde vstupny port

Príspevok od používateľa Marekodzapadu » 08 Sep 2013, 10:05

Ach jaj boraicho.... Google nas vsemohuci ti mozose s hocicim, staci dat spravne frazy
..dufam ze na hodine matematiky si nenadaval pani ucitelke, ked Vas ucila malu nasobilku pocitat v zosite,a nepovedal si jej, ze ty mas kalkulacku s ktorou to vyp...citas rychlejsie a lahsie ako zbytok triedy

...existuju aj makra, ktore sa na toto daju vcelku jednoducho pouzit. Ci si ich napise, alebo si natuka http://www.avrfreaks.net kde najde vsetko. Alebo si zozenie tonu literatury aj v CZ/SK.

Kód: Vybrať všetko

#define bit_get(p,m) ((p) & (m))
#define bit_set(p,m) ((p) |= (m))
#define bit_clear(p,m) ((p) &= ~(m))
#define bit_flip(p,m) ((p) ^= (m))
#define bit_write(c,p,m) (c ? bit_set(p,m) : bit_clear(p,m))
#define BIT(x) (0x01 << (x)) 
0

Používateľov profilový obrázok
vama
Ultimate člen
Ultimate člen
Príspevky: 1545
Dátum registrácie: 26 Aug 2008, 00:00
Bydlisko: BA
Vek: 31

Re: nejde vstupny port

Príspevok od používateľa vama » 08 Sep 2013, 10:16

to boraicho:
pises, ze blbe AVRka .. No ja tiez tieto MCU neprogramujem, ale nie je to take blbe ako keby sa zdalo. Pretoze PIC pouziva svoje vlastne C kompilery, ktore su nestandardne Cko (napr. tie konstanty , alebo podpora zapisu binarneho cisla). Ja ked som tiez zacinal s Cko s PIC, tak som bol nadseny, ze ako sa da v tom jednoducho programovat, lenze teraz zistujem, vdaka tejto jednoduchosti, su moje stare programy vobec nekompatibilne s inymi kompilermi (napr. pre STM8/32 MCU)...
Takze "preportovavanie" uz je trosku zlozitejsie ako len prepisat nejake periferia a pod., ale na druhej strane, keby som tieto nestandardne veci nepouzival (uz je neskoro), tak by boli kompatibilne programi.
0
Naposledy upravil/-a vama v 08 Sep 2013, 10:21, upravené celkom 1 krát.
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12418
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa boraicho » 08 Sep 2013, 10:20

marek... je pravda že som mal jediny v triede kalkulačku v hodinkach ale s matematiky som inak tupý.

vama super, STM su ine procesory hejže, a pisať program tak aby bol kompatibilný pre hocjake procesory, kde ho nahram, tam to pojde, no neviem, nepači sa mi tato myšlienka.
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

Používateľov profilový obrázok
vama
Ultimate člen
Ultimate člen
Príspevky: 1545
Dátum registrácie: 26 Aug 2008, 00:00
Bydlisko: BA
Vek: 31

Re: nejde vstupny port

Príspevok od používateľa vama » 08 Sep 2013, 10:23

ono ja myslim trosku inu kompatibilitu,
Samozrejme, ze ked napises program pre jeden MCU a pre ten druhy typ ti nepojde.
Ibaze je rozdiel, ked v tomto programe prepises, len obsluhu periferii (nizsiu vrstvu) a potom ti uz pojde program aj na inom type MCU. Lenze ked napises v nestandardnom Cku ten program, tak uz musis aj vyssiu vrstu prepisovat (napr. prevod cisla, dekodovanie, ...).
0
"Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa peterple » 08 Sep 2013, 10:29

Pozrel som si blikanie s led pre PIC. Čo bolo v asm mi nepripadalo o nič jednoduchšie ako pre AVR čo bolo v C tak tam bola takáto konštrukcia.

Kód: Vybrať všetko

// Define LED @ RC0
sbit LED at RC0_bit;
Čo je teda dosť neštandartné. Tiež som zistil že PIC nevie bitovo adresovať. Má úplne rovnakú filozofiu ako AVR. Takže celé to tvoje pohodlie ti robí kompilátor tak, že o tom ani nevieš čo sa vo vnútri deje. Niekomu to tak vyhovuje, niekomu nie.
Môj tvrdenie je že či AVR alebo PIC je úplne jedno. Tu išlo o radu na konkrétny problém a nie začať flame.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

jedi
Okoloidúci
Okoloidúci
Príspevky: 16
Dátum registrácie: 06 Sep 2013, 20:45

Re: nejde vstupny port

Príspevok od používateľa jedi » 08 Sep 2013, 11:22

PETERPLE: nefungieren :/ ,niekde musim robiť chybu,keď tebe to ide to znamena že by bolo niečo zle zapojene??
Keď na to pozeram vypada to byť ok, obrazok ako som to zapojil je dole ,ps. keď som mal ledku na PD7 a bol pin nastaveny ako výstup a dal som blikať tak ledka blikala,len ten vstup mi niakosi nejde,,,
Prílohy
zapojenie.jpg
0

Používateľov profilový obrázok
Peťus
Ultimate člen
Ultimate člen
Príspevky: 3940
Dátum registrácie: 07 Mar 2009, 00:00
Bydlisko: Praha
Vek: 34
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa Peťus » 08 Sep 2013, 11:33

Boraicho: spíš bude chyba na jiné straně ;-)
pokud použiješ kompilátor z CodeVision, tak tam tyhle vychytávky jsou (makra)
To že většina používá avr-gcc a ten toto v základu nemá, neznamená, že AVRka jsou blbý... ;-)
0
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, STM32, ESP8266, ESP32,...)

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa peterple » 08 Sep 2013, 11:34

v zapojení tiež chybu nevidím. Skús tam ten kód čo som poslal.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
Peťus
Ultimate člen
Ultimate člen
Príspevky: 3940
Dátum registrácie: 07 Mar 2009, 00:00
Bydlisko: Praha
Vek: 34
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa Peťus » 08 Sep 2013, 11:41

zkus tohle:
if(!(PIND&(1<<PD7))) <- test tlačítka
0
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, STM32, ESP8266, ESP32,...)

jedi
Okoloidúci
Okoloidúci
Príspevky: 16
Dátum registrácie: 06 Sep 2013, 20:45

Re: nejde vstupny port

Príspevok od používateľa jedi » 08 Sep 2013, 11:42

PETERPLE: skušal a nejde to , nvm si to vysvetliť prečo,chybu nevypiše ,zapojenie vyzera ok, tak nvm ...
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa peterple » 08 Sep 2013, 11:45

daj sem ten hex čo tam páliš
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

jedi
Okoloidúci
Okoloidúci
Príspevky: 16
Dátum registrácie: 06 Sep 2013, 20:45

Re: nejde vstupny port

Príspevok od používateľa jedi » 08 Sep 2013, 11:46

peťus: ani to nefunguje,,,
0

Používateľov profilový obrázok
boraicho
Ultimate člen
Ultimate člen
Príspevky: 12418
Dátum registrácie: 03 Feb 2007, 00:00
Bydlisko: Prešov
Vek: 35
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa boraicho » 08 Sep 2013, 11:47

Peťus napísal:neznamená, že AVRka jsou blbý... ;-)
pisal som niekde že AVRka su blbe? :wink:

viem že sa programovanim procesorov nikdy živiť nebudem, a tak si to nepotrebujem zbytočne sťažovať.
0
"Aj nevinne vyzerajúca súčiastka, môže byť príčinou nefunkčnosti zariadenia a tou kondenzator 100% je"
3D REBEL II + PLA + PETG
CNC 1810 na DPS

Používateľov profilový obrázok
Peťus
Ultimate člen
Ultimate člen
Príspevky: 3940
Dátum registrácie: 07 Mar 2009, 00:00
Bydlisko: Praha
Vek: 34
Kontaktovať používateľa:

Re: nejde vstupny port

Príspevok od používateľa Peťus » 08 Sep 2013, 11:48

máš správně zapojený mikroprocesor? reset, napájení a tak?
0
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, STM32, ESP8266, ESP32,...)

jedi
Okoloidúci
Okoloidúci
Príspevky: 16
Dátum registrácie: 06 Sep 2013, 20:45

Re: nejde vstupny port

Príspevok od používateľa jedi » 08 Sep 2013, 11:49

peterple: pridávam ten hex subor .
Prílohy
bitoveOperacie.hex
(279 Bajtov) 24 stiahnutí
0

jedi
Okoloidúci
Okoloidúci
Príspevky: 16
Dátum registrácie: 06 Sep 2013, 20:45

Re: nejde vstupny port

Príspevok od používateľa jedi » 08 Sep 2013, 11:57

takto ako na obrazku dole, okrem AVCC AREF a AGND tie nemam zapojene.
Prílohy
at.jpg
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok