Forum: Mikrocontroller und Digitale Elektronik Attiny85 Problem mit digital Input B0 u. B4


von grundschüler (Gast)


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
}

von Blini (Gast)


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...)

von grundschüler (Gast)


Lesenswert?

Blini schrieb:
> jeden Quark um 3 Bit verschiebt

Der Quark wird nicht verschoben sondern C-üblich maskiert.

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

von c-hater (Gast)


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?

von 0x1234 (Gast)


Lesenswert?

grundschüler schrieb:
> Blini schrieb:
> Der Quark wird nicht verschoben sondern C-üblich maskiert.

Bitte nicht so was glauben. Diese BIT Shift Sch...  fuer Masken gibt s 
nur bei Atmel. Und die wurden ja übernommen. ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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...

: Bearbeitet durch Moderator
von Rolf M. (rmagnus)


Lesenswert?

Was macht:

grundschüler schrieb:
> init_timer_smh();

? Der Fehler liegt entweder in der elektrischen Beschaltung oder in 
dieser Funktion.

von grundschüler (Gast)


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.

von Karl M. (Gast)


Lesenswert?

Guten Morgen!

das ist ein DIGISPARK DIY: THE SMALLEST USB ARDUINO und natürlich ist es 
beschaltet !

http://www.instructables.com/id/Digispark-DIY-The-smallest-USB-Arduino/

Wie war das, man sollte als Fragender immer einen Schaltplan und das 
gesamte Programm beisteuern.
Damit ist doch alles klar - oder?

von Edi R. (edi_r)


Lesenswert?

Karl M. schrieb:
> Damit ist doch alles klar - oder?

Mir ist nicht klar, warum PB0 nicht geht.

grundschüler schrieb:
> Außenbeschaltung gibt es nicht, nur die Taster an ground.

Wie wird die Platine versorgt? Doch nicht aus einem USB-Port, oder?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

grundschüler schrieb:
> #define xpin 3
> wird variiert, geht nicht bei 0,4 aber bei 2,3 jeweils Taster an ground.
Und jetzt der eigentliche Knackpunkt: was sagt das Messgerät?

Edi R. schrieb:
> Wie wird die Platine versorgt? Doch nicht aus einem USB-Port, oder?
Kann ja nicht. Dafür ist die Diode D3 falsch rum drin...

von Edi R. (edi_r)


Lesenswert?

Lothar M. schrieb:
> Edi R. schrieb:
>> Wie wird die Platine versorgt? Doch nicht aus einem USB-Port, oder?
> Kann ja nicht. Dafür ist die Diode D3 falsch rum drin...

Aber nicht dass PB3 und PB4 durch D- und D+ belegt sind.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Edi R. schrieb:
> Aber nicht dass PB3 und PB4 durch D- und D+ belegt sind.
Es ist so unglaublich simpel: Messen!
Wenn dann am Pin 0V sind und das Progamm eine 1 einliest, dann können 
wir weiterdiskutieren...

von grundschüler (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.