PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Das erste ATtiny Projekt mit dem Atmel Studio 7



eedroid
12.01.2021, 14:28
Hallo,

ich habe gerade für den ATtiny3216 mein erstes Projekt (GCC C Executable Project) im Atmel Studio angelegt, wollte zuerst nur in Software einen Eingang lesen. Leider bekomme ich schon in der ersten Zeile einen Fehler: DDRB und DDB0 sind nicht bekannt.



#include <avr/io.h>

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

while (1)
{
}
}


Vielen Dank

- - - Aktualisiert - - -

Mir fällt gerade ein das ich heute morgen mal einen Update gemacht habe. Jetzt "funktioniert" folgendes:



PORTB.DIR = ..


Kann ich das wieder rückgängig machen? Und wie funktioniert PORTB.DIR?

Vielen Dank.

Holomino
12.01.2021, 17:22
Das DIR-Register konfiguriert für PORTB die Pins auf Ein- oder Ausgang. Dabei entspricht der Wert 1 eines Bits die Ausgangsfunktion für einen Pin (also z.B. PORTB.DIR = 0x03 setzt PB0 und PB1 auf Ausgang, alle anderen Pins von PORTB sind Eingänge)
Entsprechend gibt es noch die Register PORTB.OUT/.OUTSET/.OUTCLEAR/.OUTTGL zum Setzen/Löschen/Ändern des Pegels an den Ausgangspins. Für Eingänge gibt's noch das PORTB.IN-Register und das alles auch noch für PORTA und PORTC.

Aber all diese Funktionen kannst Du im Datenblatt des Controllers nachlesen. Das gibts bei Microchip umsonst. Ohne DB klappt's in der Regel nicht so gut. Fang mal bei Kapitel 4 (Pinout) und 16 (PORT) an.

eedroid
13.01.2021, 06:42
Hallo und vielen Dank für deine super Antwort! Kannst du mir eventuell ein Buch empfehlen wo dieses ebenfalls beschrieben ist?

Holomino
13.01.2021, 10:40
Kannst du mir eventuell ein Buch empfehlen wo dieses ebenfalls beschrieben ist?

Leider nein. Vielleicht gibt's mittlerweile Literatur, ich hab sie aber nicht gelesen - direkt empfehlen kann ich also nix.

Über die älteren Vorgänger (ATMega&Co) gab's Bücher. Systematisch aus Anwendersicht hat sich eigentlich nur geändert, dass die Register einer Peripherie für den Programmierer mittlerweile zu Strukturen (z.B. das o.g. PORTB.DIR) zusammengefasst worden sind. Im Speziellen steht natürlich bei den Registern auch kein Stein mehr auf dem anderen. Die Tiny1 Familie hat praktisch noch den gleichen Rechenkern, aber die Peripherie ist komplett überholt, bei jedem Baustein anders, daher gibt es auch zu jedem Chip ein eigenes DB.