Forum: Mikrocontroller und Digitale Elektronik ATtiny13A schaltet die Ausgänge nicht


von Moritz (Gast)


Lesenswert?

Hallo zusammen,

ich habe auf einer Platine den ATtiny13A verbaut, welchen ich mit dem 
AVR-Studio programmieren möchte. Die Verbingung klappt problemlos, der 
PC kann sowohl Spannung als auch Adresse auslesen und das Flashen 
funktioniert angeblich auch.
Ich möchte erstmal nur einen Pin einschalten, doch egal, was ich 
programmiere, er will einfach nicht an gehen. Auch ein zweiter 
baugleicher Controller funktioniert nicht wie gewünscht.
Mein Code für das Anschalten von PINB4 ist

DDRB = (1<<PINB4);
PORTD |= (1<<PINB4);

Ist der Code falsch? Ich bin ratlos...


Danke im Voraus und viele Grüße!
Moritz

von TinyAVR (Gast)


Lesenswert?

DDRB und PORTD passen nicht zusammen.

von Thomas E. (thomase)


Lesenswert?

Moritz schrieb:
> DDRB = (1<<PINB4);
> PORTD |= (1<<PINB4);
>
> Ist der Code falsch?

Ja.

> Ich bin ratlos...

Ich auch.

mfg.

von TinyAVR (Gast)


Lesenswert?

DDRB = (1 << PINB4);
PORTB |= (1 << PINB4);

von Thomas H. (Firma: CIA) (apostel13)


Lesenswert?

Ein ATiny13A hat gar keinen PORT D!

von Moritz (Gast)


Lesenswert?

Sorry sorry sorry! Ich habe natürlich DDRB geschrieben! Weiß der Geier, 
warum ich mich eben vertippt habe im Forum...

von Moritz (Gast)


Lesenswert?

Mit

DDRB = (1 << PINB4);
PORTB |= (1 << PINB4);

funktioniert es auf jeden Fall nicht, warum auch immer...

von Moritz (Gast)


Lesenswert?

Moritz schrieb:
> Sorry sorry sorry! Ich habe natürlich DDRB geschrieben! Weiß der Geier,
> warum ich mich eben vertippt habe im Forum...

...und natürlich auch PORTB!

von TinyAVR (Gast)


Lesenswert?

Zeige dein Programm und nicht fehlerhafte Schnippsel.

von Dennis S. (dspo)


Lesenswert?

Schaltung?
Fuses?
Gesamter Code ?

von Thomas E. (thomase)


Lesenswert?

Moritz schrieb:
> Weiß der Geier,
> warum ich mich eben vertippt habe im Forum...

Aber ich weiss das: Weil du nicht deinen gesamten Code kopiert oder als 
Datei angehängt hast.

Moritz schrieb:
> Mit
>
> DDRB = (1 << PINB4);
> PORTB |= (1 << PINB4);
>
> funktioniert es auf jeden Fall nicht, warum auch immer...

Damit schaltet man PB4 auf eins. Immer.

Wenn es bei dir nicht funktioniert, liegt es nicht daran.

mfg.

von Moritz (Gast)


Lesenswert?

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


int main(void)
{
    DDRB = (1 << PINB4);
    PORTB |= (1 << PINB4);

    while(1)
    {
  _delay_ms(1);

    }
}

von Thomas E. (thomase)


Lesenswert?

Da kann man dir auch nur bestätigen, dass mit diesem Programm PB4 
geschaltet wird. Dass du auch F_CPU definiert hast, davon gehe ich jetzt 
mal aus.

Also:

Schaltplan
Bild vom Aufbau

Moritz schrieb:
> und das Flashen
> funktioniert angeblich auch.

Du bist sicher, dass das auch das richtige Programm ist?
Das wird beim Anlegen des Projektes nicht automatisch übernommen. Das 
musst du selbst einstellen.

mfg.

von Moritz (Gast)


Lesenswert?

Vielen Dank, es war tatsächlich Einstellungssache!

MfG!

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.