Re: Chyba v C - velmi podivné chování

Miroslav Šinko sinkomiro na gmail.com
Pondělí Duben 20 18:14:34 CEST 2020


Je mozne sa inspirovat v starych avrlibdefs.h. Pozeram, ze stale ziju :)

po 20. 4. 2020 o 18:05 Pavel Hudecek <edizon na seznam.cz> napísal(a):
>
> Je.
>
>
>
> A jinak teda ten kód udělá to, že pokud je splněna podmínka v závorce, nastaví se bit 0 na výstupní (zda to bude bit 0 není zaručeno, ale jinak skoro jisté).
>
>
>
> V tomhle je super CodeVision, že se dá napsat třeba PORTB.3=1. Teda vlastně částečně byl, protože u nových AVR s UPDI to už neumí.
>
>
>
> PH
>
>
>
> Od: Ladislav Vaiz
>
> Není to tak, že při pinu nastaveném na vstup se zápisem na PORTB zapíná
>
> a vypíná pullup?
>
>
>
>
>
> Dne 20.04.2020 v 15:54 Petr Zapadlo napsal(a):
>
> > udělal jsem chybu v C zápise - zapomněl jsem jedno většítko:
>
> >
>
> >   DDRB |=(1<CLK_UP);
>
> >
>
> > takže se ze zápisu jedničky do patřičného bitu stalo cosi.
>
> >
>
> > Nastavení portu proběhne jen jednou na začátku programu, směr pinu už
>
> > pak nikde neměním.
>
> >
>
> > IO používám takto:
>
> >
>
> > void shift_out_up(uint8_t data){
>
> >   for (uint8_t i=0; i<8; i++){
>
> >     if ((0b10000000>>i)& data){ PORTB |=(1<<MOSI_UP);} else {PORTB
>
> > &=~(1<<MOSI_UP);}
>
> >     pause_us(1);
>
> >     PORTB |=(1<<CLK_UP);
>
> >     pause_us(1);
>
> >     PORTB &=~(1<<CLK_UP);
>
> >   }
>
> > }
>
> >
>
> > tj čistě jako výstupní.
>
> >
>
> > A teď záhada - čekal bych, že pokud nastavení v DDRB neproběhne dobře,
>
> > tak pin bude buď vstupní a nebo výstupní. A pokud bude výstupní, tak
>
> > to bude fungovat. (Po opravě výrazu to začalo fungovat).
>
> >
>
> > Pokud vstupní, tak na něm neuvidím nic - ale ve finále to vypadá takto:
>
> >
>
> >
>
> > Když je sousední pin na 0, tak hodiny na výstup jdou, když je vedlejší
>
> > pin na 1, tak to zmizí, ale ne vždy - v reálu se to chovalo tak, že se
>
> > občas "ztratil" nějaký tik hodin.
>
> >
>
> > Jak může pin takto "plavat"?
>
> >
>
> > Jen doplňuji, je to Attiny84.
>
> >
>
> > Pěkně zákeřná chyba.
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list