C Gelöst: ATtiny45-20PU Problem mit PB4

Status
Für weitere Antworten geschlossen.

hamster

Neues Mitglied
12. Okt. 2013
18
0
0
Sprachen
Hallo Leute,

ich bin am verzweifeln. Ich habe mehrere ATtiny45-20PU zum testen hier rumliegen.

Bei allen ist der PB4 immer high auch wenn ich gar nichts setze. Wenn ich ihn dann als Ausgang definiere sprich DDRB |= (1<<4); und dann PORTB &= ~(1<<4); bleibt die LED sogar an.

Alle anderen Ports machen was sie sollen. Hat jemand eine Idee?

Fuse sind alle Standard.


C Code (Projekt hat auch ATtiny45 als CPU)

Code:
#define F_CPU 800000UL // ATtiny45

#include <avr/io.h>
#include <util/delay.h>


#define HLoben 3 // PB.3
#define HLunten 2 // PB.2
#define HRoben 1 // PB.1
#define HRunten 0 // PB.0

#define bootled 4 //PB.4



void init_io(void) {
	
	DDRB |= (1<<HLoben);
	DDRB |= (1<<HLunten);
	DDRB |= (1<<HRoben);
	DDRB |= (1<<HRunten);	
	DDRB |= (1<<bootled);


}


int main(void)
{
	init_io();
	
	// H Brücke in weiss richtung schalten
   	PORTB &= ~(1<<HRoben);
   	PORTB &= ~(1<<HLunten);
   	PORTB |= (1<<HLoben);
   	PORTB |= (1<<HRunten);
			   
			   
    // test ob reset schleife
	
	PORTB &= ~(1<<bootled);
	_delay_ms(500);
	PORTB |= (1<<bootled);
	_delay_ms(500);
	PORTB &= ~(1<<bootled);
	_delay_ms(500);
	PORTB |= (1<<bootled);
	_delay_ms(500);
	PORTB &= ~(1<<bootled);
	
	//
	
	int zahl = 55;
	while(1)
	{
		
		_delay_ms(300);
		
		if( zahl < 50 )
		{
			// aktivieren weiss richtung
			PORTB &= ~(1<<HRoben);
			PORTB &= ~(1<<HLunten);
			PORTB |= (1<<HLoben);
			PORTB |= (1<<HRunten);
			
			
			
			zahl = 55;
		}
		else
		{
			// aktivieren rot richtung
			PORTB |= (1<<HRoben);
			PORTB |= (1<<HLunten);
			PORTB &= ~(1<<HLoben);
			PORTB &= ~(1<<HRunten);
			
			

			zahl = 40;
		}
	}
}

Auch wenn ich jetzt nicht vor der While schleife PB4 blinken lasse sondern genau wie die anderen 4 Ausgänge mit wechseln möchte bleibt sie dauerhaft an, man sieht aber an der LED Helligkeit das der ATtiny was tut.

Jemand eine Idee?

Grüße
 
Hallo Hamster,

eine Idee habe ich im Moment leider nicht. PB4 sollte normalerweise sofort funktionieren, es ist auch keine der alternativen Portfunktionen gewählt.

Was mir aufgefallen ist, was aber direkt nichts mit dem Problem zu tun hat: Du hast geschrieben, dass die Fuses auf Werkseinstellung stehen. Also Systemclock ist interner RC-Oszillator 8MHz mit Prescaler 8 (CKDIV8), also 1MHz. Du hast für <util/delay.h> 800kHz als Systemclock angegeben. Wie gesagt, das wird hier nichts ausmachen, ist aber eventuell ein möglicher Fehler in deinem Projekt, wenn du 8MHz meintest und CKDIV8 nicht berücksichtigt hast.

Siehe auch hier die Definition von F_CPU in deinem Code.

Dirk :ciao:
 
Moing,

es sollte "bedanken" im Board geben :) schon gewundert warum die ms so sehr lange waren ;)

hmm vielleicht hat ja jemand eine idee, es ist echt komisch!!

grüße
 
Hallo Hamster,

also wenn es nicht am Tiny liegt und auch nicht am Programm (zu C kann ich allerdings nichts sagen), dann gibt es vielleicht in der Schaltung einen Fehler - z.B. eine niederohmige Verbindung von PB4 nach VCC. Das würde erklären, warum sich zwar etwas tut, die LED aber nicht ausgeht.

Gruß
Pirx
 
Moing,

thema kann zu :) ich hab neue tiny`s bekommen die funzen! hab alle zerlegt mit meiner h brücke die ich hatte :D

im ausgebauten zustand war der widerstand schon 1/6 so groß wie bei den anderen zu Vcc an den beinchen (mit dem multimeter gemessen)

grüße!
 
Status
Für weitere Antworten geschlossen.

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)