Attiny85 Problem mit digital Input B0 u. B4

Gast #5376318
Lesenswert?

ich versuche mich gerade am attiny85.

merkwürdiges Problem: B0 bis B4 funktionieren ganz normal als output.

B2 und B3 funktionieren als Input

B0 und B4 funktionieren nicht als input. Warum?
(B1 ist die LED)
1
#define xpin 3
2

3
void main(void){
4
u8 x=0;
5

6

7
init_timer_smh();
8
DDRB &=~(1<<xpin);//in
9
PORTB|=(1<<xpin);//pullup
10

11

12

13

14
DDRB|=(1<<1);//out
15

16

17
while(1){
18

19

20
while((PINB & (1<<xpin))==0 /*|| (PINB & (1<<4))==0*/){
21
  PORTB|=(1<<1);
22
  x=1;
23
  }
24

25
  if(x==1){
26
    PORTB&=~(1<<1);
27
/*    PORTB&=~(1<<0);
28
    PORTB&=~(1<<2);
29
    PORTB&=~(1<<4);
30

31
*/    x=0;
32
  }
33
/**/
34

35
  
36
  if (timer_smh>99){
37
      
38
    sec=sec+timer_smh/100;
39
    timer_smh=timer_smh%100;
40
      if(sec>59){sec=sec-60;  min=min+1;
41
        if(min==60){min=0; hou++;
42
          if(hou==24){hou=0;}
43
        }
44
      }
45
      
46
//+++++++++++ sec ++++++++++++
47
if(sec%5==0){
48
  (PORTB|=(1<<1));
49
}
50

51
if(sec%5==1){
52
  (PORTB&=~(1<<1));
53
}
54

55
//----------- sec ------------      
56
  }  
57
  
58
}
59

60
}
Gast #5376406
Lesenswert?

Die Tiny 25/45/85 sind eher gutmütig und haben bisher alles
gemacht, was ich ihnen im Rahmen ihrer Möglichkeiten
aufgetragen habe.

Aber ich habe sie bisher auch noch nicht mit solch verquastem
Code angesprochen...

Wenn man jeden Quark um 3 Bit verschiebt, ist man aber auch
schnell jenseits von B0...B5. (Und B5 ist RESET...)
Gast #5376467
Lesenswert?

grundschüler schrieb:

> Das Problem erinnert an den Jtag-Port bei manchen Atmegas, der PortC
> Blockiert. Muss beim Attiny85 irgendwas freigeschaltet werden?

Nein.

Allerdings kann man durchaus auf mehrere Arten dafür sorgen, dass sie 
nicht korrekt als Input funktionieren. Das hängt dann allerdings auch 
noch etwas von der Außenbeschaltung ab.

Meine Glaskugel sagt: Außenbeschaltung ist irgendwas mit Pullups/-downs 
und es liegt eine Fehlkonfiguration von Timer 1 vor, was die eigentliche 
Ursache ist.

Benutzt du Timer 1?
Moderator (Firma: Titel) Persönliche Seite #5376471
Lesenswert?

grundschüler schrieb:
> B0 und B4 funktionieren nicht als input. Warum?
Wie stellst du das fest? Was erwartest du denn, was dieser Code machen 
sollte? Und was macht er stattdessen? Wie sind die fraglichen 
Eingangspins beschaltet? Welche Pegel misst du da mit einem Messgerät 
an diesen Pins in der fraglichen Situation? Denn diese Pegel sind die 
Grundlage, mit denen der µC arbeitet...
Gast #5376490
Lesenswert?

Lothar M. schrieb:
> Wie stellst du das fest?

Die Led blinkt alle 5 secunden auf => timer und B1 funktionieren.


#define xpin 3
 wird variiert, geht nicht bei 0,4 aber bei 2,3 jeweils Taster an 
ground.



Dieses modul:
https://www.ebay.de/itm/3x-Digispark-Kickstarter-General-Micro-USB-Entwicklungsboard-f%C3%BCr-ATTINY85-TE531/152381643512?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Außenbeschaltung gibt es nicht, nur die Taster an ground.
Gast #5376804
Lesenswert?

Lothar M. schrieb:
> Es ist so unglaublich simpel: Messen!


Das wirds sein der interne Pullup bringt bei B4 nur 1,7V, an B3 5V, an 
B0 und B2 ca. 2Volt.

2Volt wird dann die Schwelle sein, bei der 0/1 geschaltet wird. Also 
externe Beschaltung ablöten oder externe pullups.

Danke für die Unterstützung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren