Forum: Mikrocontroller und Digitale Elektronik Projekt mit Tiny 13


von Silver69 (Gast)


Lesenswert?

Hallo!

Ich heiße Matthias, bin 40 jahre alt, Informationselektroniker jedoch, 
da ich in der Produktion arbeite, bereits seit 22 Jahren, mehr oder 
weniger, raus aus dem Fach.

Nun hat mich der Modellflug (Ich schreibe bewusst nicht Modellbau :-) ) 
gepackt und ich hätte da ein kleines Projekt.

Da ich sowieso noch ein paar TINY 13 rumliegen habe, dachte ich an 
folgendes:

Ich bräuchte eine Blinkschaltung mit 3 LEDs, sollte ja kein Problem 
sein.

Dann noch eine Spannungsüberwachung, fällt die Spannung unter einem 
gewissen Level, sollen die 3 LEDs mit veränderter Frequenz blinken... 
oder dauerleuchten.

Vielleicht könnte man sogar den Spannungsverlauf des Akkus aufzeichnen? 
Und dann mit den PC auslesen und die Werte graphisch darstellen? (PC 
Programmierung ist kein Problem für mich...)

Was meint ihr? Ist das realisierbar?
Besitzt der Tiny 13 überhaupt einen A/D Wandler?
Ist Assembler die richtige Programmiersprache?
Kann ich Werte aufzeichnen und später auslesen?

von Adrian Taylor (Lestophant) (Gast)


Lesenswert?

Datasheet ?

von YS-500 (Gast)


Lesenswert?

Ja
>Besitzt der Tiny 13 überhaupt einen A/D Wandler?
Datenblatt
Ja je nach geschmack
Ja

von Frank L. (hermastersvoice)


Lesenswert?

Jo, der Tiny13 hat AD Wandler. Ich find Assembler für die Kleinen 
optimal, das werden die sturen C-Verfechter natürlich gaaaaanz anders 
sehen. Werte aufzeichnen geht auch, nur eben nicht Allzuviele. So dicke 
hats der Tiny ja nicht mit Ressourcen.

bye

Frank

von YS-500 (Gast)


Lesenswert?

>das werden die sturen C-Verfechter natürlich gaaaaanz anders sehen.

Nein, ich fahre aber lieber mit dem Lift als außen am  Haus 
hochzukraxlen.

von Silver69 (Gast)


Lesenswert?

WOW, seit ihr schnell.
Danke schonmal für die Antworten.

Gibt es ein Datenblatt vom Tiny auf deutsch? Habe schon gesucht aber 
keines gefunden. Wenn ich das englische lesen und verstehen will, sitze 
ich vermutlich in 10 Jahren noch da. Mein (Fach) Englisch ist nicht das 
beste, um es milde auszudrücken....

von YS-500 (Gast)


Lesenswert?

Ein Datenblatt auf deutsch kenne ich jetzt nicht.
Aber das Englisch von Atmel ist so einfach daß sogar ich das lesen kann.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Mein (Fach) Englisch ist nicht das beste, um es milde auszudrücken....

Versuch´s mit einem Übersetzerprogramm.

Tiny13 und ASM ist ein unschlagbares Paar. Wenn Du Daten aufzeichnen 
möchtest, bietet sich vielleicht ein DataFlash oder ein serielles EEPROM 
an. Um genügend Pins dann auch noch für eine Datenausgabe am PC zu 
haben, solltest Du vielleicht über ein Upgrade auf den Mega88 
nachdenken. Der ist im TQFP32 Gehäuse nur unwesentlich größer, als ein 
Tiny13 DIP. Der Mega88 ist sehr günstig bei CDS-electronics zu beziehen.

von Re T. (toobatch)


Lesenswert?

ja in deutsch wirds da nix geben .. aber  so groß ist es doch nicht und 
aus erfahrung sind die datasheets von atmel relativ gut zu lesen  im 
vgl. zu so vielen anderen herstellern.

lies einfach mal los -  vielleicht hilft dir ja eins von denen hier :

http://www.heise.de/software/download/o0g0s0l2k29

von Bana (Gast)


Lesenswert?

Hallo,

vielleicht kannst Du hiermit schon was anfangen.

http://www.hanneslux.de/avr/mobau/uiwa/uiwa.html

mfg bana

von Hmm... (Gast)


Lesenswert?

> ...bereits seit 22 Jahren, mehr oder weniger, raus aus dem Fach...

> Da ich sowieso noch ein paar TINY 13 rumliegen habe, dachte ich an
> folgendes:

Die gab es vor 20 Jahren schon? ;)

> Ich bräuchte eine Blinkschaltung mit 3 LEDs, sollte ja kein Problem
> sein.

Der Tiny13 hat 6 mehr oder wenige freie I/Os, das passt schon...

> Dann noch eine Spannungsüberwachung, fällt die Spannung unter einem
> gewissen Level, sollen die 3 LEDs mit veränderter Frequenz blinken...
> oder dauerleuchten.

Jap, ein ADC ist auch drin.

> Vielleicht könnte man sogar den Spannungsverlauf des Akkus aufzeichnen?
> Und dann mit den PC auslesen und die Werte graphisch darstellen? (PC
> Programmierung ist kein Problem für mich...)

Naja, bei 64 Byte EEPROM und 64 Byte SRAM eher begrenzt. Aber man kann
eventuell ein externes EEPROM dranhängen. (3x LED, 1x ADC, bleiben 2 zur 
Ansteuerung des EEPROMs _ODER_ Kommunikation mit dem PC)

> Was meint ihr? Ist das realisierbar?

Jo, wenn du mit dem internen Speicher klar kommst oder auf die 
PC-Kommunikation verzichtest.

> Besitzt der Tiny 13 überhaupt einen A/D Wandler?

Jap, einen 4-Kanaligen sogar.

> Ist Assembler die richtige Programmiersprache?

Bei 1kb Flash und 64 Byte SRAM ist Assembler auch die einzig sinnvolle.

> Kann ich Werte aufzeichnen und später auslesen?

Ja, mit den oben genannten Einschränkungen

von Fabian B. (fabs)


Lesenswert?

Man kann doch Pins durchaus zu mehreren Zwecken verwenden. Im 
Zweifelsfall via Jumper umsteckbar. Also ist auch externes EEPROM + 
PC-Com möglich. Man muss dem uC nur irgendwie mitteilen, welchen Modus 
er fahren soll.

Zum Thema Assembler: den Tiny13 kann man auch bestens mit C volltexten. 
Nur beim Tiny15 würd ich das nicht wirklich probieren wollen.

Gruß
Fabian

von Hmm... (Gast)


Lesenswert?

> Man kann doch Pins durchaus zu mehreren Zwecken verwenden.

Ist klar.

> Im Zweifelsfall via Jumper umsteckbar. Also ist auch externes EEPROM +
> PC-Com möglich. Man muss dem uC nur irgendwie mitteilen, welchen Modus
> er fahren soll.

Naja, für RS322 wär dann wieder ein Quarz ratsam. Und dann fehlen schon 
wieder ganze 2 Pins...

> Zum Thema Assembler: den Tiny13 kann man auch bestens mit C volltexten.
> Nur beim Tiny15 würd ich das nicht wirklich probieren wollen.

Also internes+externes EEPROM ansteuern, Werte speichern und laden und 
eine Software-UART implementieren in C und das alles in 1kB Flash 
questchen?

Ich bin gespannt. ;)

von Silver69 (Gast)


Lesenswert?

Nochmal vielen Dank für die vielen Antworten :-)

Also ich habe mir jetzt überlegt, erstmal mit dem Blinklicht klein 
anzufangen. Wenn dies funktioniert wird die Schaltung/Programm mit der 
Spannungsüberwachung ergänzt.

Danach kann ich ja immer noch auf diesen Mega8 umsteigen. Zum testen 
erstmal die bedrahtete Version, danach dann die SMD... dabei stellt sich 
die Frage: Wo komm ich eine geätzte Platine her..hmmmm. Da ist dann wohl 
auch selber machen angesagt.

Ach übrigens: Die Tiny13, die ich hier rumliegen habe, sind erst 2 
Monate alt :-) Vor 22 Jahren hießen die anders: Commodore VC20 ;-) Hatte 
ich, voller Stolz, auch einen!

von Hmm... (Gast)


Lesenswert?

> Ach übrigens: Die Tiny13, die ich hier rumliegen habe, sind erst 2
> Monate alt :-) Vor 22 Jahren hießen die anders: Commodore VC20 ;-) Hatte
> ich, voller Stolz, auch einen!

Tja, bei mir hieß das Teil damals Robotron KC87 ;)

Je nach möglichem Lötaufwand würde ich aber dann doch zu größerem 
tendieren. Der Atmega32 oder Atmega644 ist mit das größte in punkto 
Flash und Ram möglich ist. Kostet bei Angelika <5€ und bietet etliche 
Reserven für spätere Basteleien.

Wenn es beim 8-Pinner für das Blinklicht bleiben soll schau mal nach 
ATtiny45 oder ATtiny85, die sind dann auch bequem in C programmierbar.

von Frank L. (hermastersvoice)


Lesenswert?

Denk dran dass bei nem neuen Tiny13 die /8-Fuse gesetzt ist. Also nicht 
wundern wenns alles ziemlich langsam ist.

bye

Frank

von Uhu U. (uhu)


Lesenswert?

Ich finde die kleinen Dinger richtig nett, alles so schön 
übersichtlichlich und man kommt nicht auf die Idee, überall noch eine 
eierlegende Wollmilchsau dranzisilieren zu wollen...

Im AVR-Studio kann man sich auch den Maschinencode ansehen und mit etwas 
Überlegung einen deutlich kompakteeren C-Code hinbekommen.

von Sinusgeek (Gast)


Lesenswert?

Warum wird eigentlich immer empfohlen, mit Kanonen auf Spatzen zu 
schießen???

~

von Hmm... (Gast)


Lesenswert?

> Warum wird eigentlich immer empfohlen, mit Kanonen auf Spatzen zu
> schießen???

Weil dein 'C'-Code von deinem Nachfolger deutlich schneller verstanden 
wird ;)

von Sinusgeek (Gast)


Lesenswert?

> Weil dein 'C'-Code von deinem Nachfolger deutlich schneller verstanden
> wird ;)

Muss ich das jetzt verstehen??

Wer versteht C-Code schneller?
Wer ist mit Nachfolger gemeint?

~

von Hmm... (Gast)


Lesenswert?

Im Grunde geht es in der Industrie darum, Code zu fabrizieren der auch 
nach Jahren noch verstanden wird oder von jemand anders weiter 
entwickelt wird. Und da ist C wesentlich einfacher als Assembler.

Wenn man mal nach 3 Jahren versucht ein eigenes Assembler-Programm 
weiter zu entwickeln merkt man es schon deutlich wie langwierig die 
einarbeitung ist.

Ist sicher bei typischen Assembler-Projekten noch handhabbar, aber dein 
Chef wird das sicher anders sehen. Auch wenn ein 1kB Controller 10x 
besser in Assembler entwickelt wird, musst du dann Überzeugungsarbeit 
leisten um Assembler entwickeln zu 'dürfen'.


PS: Ich persönlich finde, dass alle Controller mit <2kB Flash fast(!) 
immer besser in Assembler programmiert werden.

von Sinusgeek (Gast)


Lesenswert?

> PS: Ich persönlich finde, dass alle Controller mit <2kB Flash fast(!)
> immer besser in Assembler programmiert werden.

Na dann sind wir uns doch einig.

Auf die Spezies "Chef" brauche ich betreffs Programmiersprache und -Stil 
gottseidank keine Rücksicht nehmen, auf Portablität der Programme auch 
nicht. Ich schreibe keine AVR-Programme, die hinterher auf '8051ern, 
PICs, MSP430 oder dem Rest der Welt laufen müssen.

Und für den Einstieg in die AVR-Mikrocontrollertechnik halte ich einen 
kleinen AVR wie Tiny13 oder Tiny2313 (natürlich in ASM) aufgrund seiner 
begrenzten (und damit übersichtlichen) Ressorcen für ideal, man 
verzettelt sich nicht so schnell mit den vielen Möglichkeiten der 
Features der Megas und lernt auch die Architektur besser und schneller 
kennen. Und etwas ASM-Wissen schadet auch einem zukünftigen 
C-Programmierer nicht.

~

von Hmm... (Gast)


Lesenswert?

> > PS: Ich persönlich finde, dass alle Controller mit <2kB Flash fast(!)
> > immer besser in Assembler programmiert werden.
>
> Na dann sind wir uns doch einig.

Da klammer ich aber alles was mit Lern-/Ausbildungsprojekten 
zusammenhängt mal aus, da is Assembler (wieder fast ;) ) immer besser 
als C, da man den Controller und die Architektur vernünftig kennen 
lernt.

Und ja, dafür ist im Job keine Zeit. Wenn man nicht mindestens einen 8-, 
einen 16- und einen 32 Bit Controller und mindestens noch einen mit 
Harvard-Architektur im Hobby oder Ausbildungsbereich kennen gelernt hat, 
dann wird man es nie.

von Silver69 (Gast)


Lesenswert?

Hallo!

Ich habe mal eine Frage. Ich benutze nun das AVR Studio um in Assembler 
zu programmieren. Das klappt bisher eigentlich ganz gut.

Als Debug platform benutze ich den "AVR Simulator 2" und als Device den 
"ATtiny13"

Nun möchte ich den internen EEprom Speicher des (simulierten) Tiny13 
auslesen. Auch das klappt ganz gut. Nun weiß ich aber nicht ob die Werte 
überhaupt stimmen, die ich auslesen. Gibt es im AVR Studio nicht so 
etwas wie eine Hex-Editor Funktion, mit den man Inhalt des EEproms 
betrachten bzw editieren kann?

von ajax (Gast)


Lesenswert?

Man kann im Speicherdump-Fenster einfach die Werte ändern.

von NexX (Gast)


Lesenswert?

Bin noch Einsteiger, deswegen die Frage:

> Denk dran dass bei nem neuen Tiny13 die /8-Fuse gesetzt ist. Also nicht
> wundern wenns alles ziemlich langsam ist.

Was meinst du damit?

von YS-500 (Gast)


Lesenswert?

Der int. Takt wird durch 8 geteilt.

von Silver69 (Gast)


Lesenswert?

Bestimmt kommt gleich der Ahaaa-Effekt, aber ich kann dieses 
"Speicherdump-Fenster" nicht finden...

von Silver69 (Gast)


Lesenswert?

Ahaaaa.... ich habs!!!
Bei View/Memory
Mensch bin ich blind

von Kachel - Heinz (Gast)


Lesenswert?

> Der int. Takt wird durch 8 geteilt.

Der externe glaube auch...

KH

von YS-500 (Gast)


Lesenswert?

Jawolldochja

von Rudi D. (rulixa)


Lesenswert?

Silver69 wrote:
> Hallo!
>

>
> Da ich sowieso noch ein paar TINY 13 rumliegen habe, dachte ich an
> folgendes:
>
> Ich bräuchte eine Blinkschaltung mit 3 LEDs, sollte ja kein Problem
> sein.
>
> Dann noch eine Spannungsüberwachung, fällt die Spannung unter einem
> gewissen Level, sollen die 3 LEDs mit veränderter Frequenz blinken...
> oder dauerleuchten.
>
> Vielleicht könnte man sogar den Spannungsverlauf des Akkus aufzeichnen?
> Und dann mit den PC auslesen und die Werte graphisch darstellen? (PC
> Programmierung ist kein Problem für mich...)
>

> Besitzt der Tiny 13 überhaupt einen A/D Wandler?
> Ist Assembler die richtige Programmiersprache?
> Kann ich Werte aufzeichnen und später auslesen?

In Deutsch gibt es vom Franzis Verlag ein "Lernpaket Mikrocontroller"
Ist sehr zu empfehlen. Da ist ein Bausatz dabei und ein Buch.
Man kann sofort loslegen. google man danach!

von Silver69 (Gast)


Lesenswert?

Hallo!

Ich hätte noch 1000 Fragen, 999 stelle ich zurück aber eine Frage ich 
jetzt:

Ich habe als Programmiergerät ein selber gebautes, und zwar für den 
Parallelport, von hier: http://www.mikes-elektronikseite.de/.
Also Software benutze ich AVR-Studio und habe mir hierfür das "AVR ISP" 
von Kanda runtergeladen.

Gibt es auch die Möglichkeit, mit den oben genannten Gerätschaften, 
ONLINE zu debuggen? Also dass der Code im Tiny13 ausgeführt wird, nicht 
im Simulator von AVR STudio? Wenn ja, wie?

von (prx) A. K. (prx)


Lesenswert?

Nein. Erst ab Tiny25 gibt es DebugWire via Reset-Pin, und dafür ist 
mindestens der AVR Dragon notwendig.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Tinys debuggt man mit ´ner LED. Oder mit der Luxusvariante: LCD an 
separatem Controller, angebunden an den Tiny über einen einzigen Pin und 
gemeinsame Masse. Über ein eigenes Protokoll sendet det Tiny seine Daten 
an das intelligente LCD.

von Sinusgeek (Gast)


Lesenswert?

Tiny13 unterstützt auch Debug-Wire, allerdings braucht man dazu einen 
AVR-Dragon. Ich habe und benutze zwar den Dragon, debugge aber auch 
meist mittels LED. Ist halt Gewohnheit von Tiny12 und Tiny15.

~

von Silver69 (Gast)


Lesenswert?

So, nach reichlich Überlegung habe ich mich jetzt so entschieden:

ATMega88
Quarz (für Serielle Schnittstellensteuerung und auch wegen der 
zeitlichen Aufzeichnung der  Messdaten)
Schnittstellenbaustein MAX232
Serielles EEprom ST 24C256
Programmiersprache bleibt Assembler (macht Spaß bisher).

Das einzige was mir jetzt noch nicht in klaren ist. Wie beschreibt und 
ließt man das Externe serielle EEprom? Gibt es hierfür Codebeispiele?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Schnittstellenbaustein MAX232

Nimm den Max202CSE, braucht nur 5x 100nF und ist platzmäßig kleiner.

>Das einzige was mir jetzt noch nicht in klaren ist. Wie beschreibt und
>ließt man das Externe serielle EEprom?

I2C, siehe Datenblatt Mega88 und ST24C256. Alternativ kannst Du auch ein 
DataFlash 45DBxxxD nehmen, paßt mehr ´rein, ist unkompliziert 
anzusteuern (SPI), ist preiswert und als SO8 ehältlich.

von Silver69 (Gast)


Lesenswert?

Hallo!

Habe immer noch keine Ahnung wie ich das externe EEprom ansprechen soll.

Also ich habe mir noch einmal die Datenblätter des Mega88 und ST24C256 
angeschaut.

Im Datenblatt ST24C256 steht beschrieben wie man schreibt und liest. 
Aber eben nur von der Theorie her. Bitweise. Wenn ich über RS232 mit dem 
PC kommuniziere, schreibe ich ja auch im Assembler jedes Byte, und nicht 
Bit für Bit.

Ich kann auch dazu im Internet gar nichts finden. Weder einen 
Schaltplan, noch einen Assembler Code.

Für Hilfe hierzu wäre ich dankbar....

von Falk B. (falk)


Lesenswert?

@  Silver69 (Gast)

>Habe immer noch keine Ahnung wie ich das externe EEprom ansprechen soll.

Das steht im Datenblatt, Surprise, Surprise.

>Im Datenblatt ST24C256 steht beschrieben wie man schreibt und liest.
>Aber eben nur von der Theorie her.#

Das funtkioniert auch praktisch so.

> Bitweise.

Nö, Byteweise.

von Silver69 (Gast)


Lesenswert?

SO, ich hab im Datenblatt vielleicht etwas gefunden dass mir eventuell 
helfen könnte. Ab Seite 211.

Gleich mal testen, die ersten 2 Zeilen abgetippt:
1
.include "m88def.inc"
2
3
ldi r16,(1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
4
out TWCR, r16 ;Send START condition

Build and Run ==> Error: Operand 1 out of range: 0xbc

Surprise, Surprise! It dosnt work!
What did I falsch? Still need help...

von Hmm... (Gast)


Lesenswert?

> Projekt mit Tiny 13

> .include "m88def.inc"

Ähm...jap, der Thread ist gut gewählt ;)

> SO, ich hab im Datenblatt vielleicht etwas gefunden dass mir eventuell
> helfen könnte. Ab Seite 211.

Dort steht bei mir die Beschreibung des TWI-Moduls.

> Surprise, Surprise! It dosnt work!
> What did I falsch? Still need help...

Abgesehen von der Art wie du deine Fragen formulierst gar nix. 
Anscheinend hat Atmel hier einen Fehler im Datenblatt. Im Include wo die 
I/O-Register definiert ist, steht folgendes:
1
; ***** I/O REGISTER DEFINITIONS *****************************************
2
3
; NOTE:
4
5
; Definitions marked "MEMORY MAPPED"are extended I/O ports
6
7
; and cannot be used with IN/OUT instructions

Versuch es mal mit einem normalen RAM-Schreibzugriff.

von Silver69 (Gast)


Angehängte Dateien:

Lesenswert?

Moment mal!

Als ich den Thread gestartet habe war es noch ein Tiny13 Projekt. Mir 
wurde dann aber schnell zum Mega88 geraten.

Atmel hat anscheinend ein Fehler im Datenblatt und du sagst, das wäre 
meine Schuld, weil ich meine Fragen hier falsch formuliere? Tut mir 
leid, das verstehe ich nicht!

Ich versuche mal meine Frage umzuformulieren:

Ich versuche, per Assembler, mit einen Mega88 ein externes EEprom 
(ST24C256) zu beschreiben. Da ich aber ein Einsteiger bin, weiß ich 
überhaupt nicht wie dies funktioniert. Ich habe schon 50 Stunden 
Gegoogeld und Datenblätter gelesen. Bisher ohne Erfolg, wie auch, wenn 
ich nicht einmal sicher bin nach was ich suchen soll.

Einen Schaltplan glaube ich gefunden zu haben (siehe Anhang), sicher ob 
der Schaltplan aber funktioniert bin ich nicht.

Sicher hat doch so etwas schon einmal jemand gemacht, oder? Stündlich 
vermutlich. Könnte mir bitte jemand ein Assembler Beispiel posten, der 
mir zeigt wie sowas funktioniert. Oder eben einen Lik zu einem 
Turitorial?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>out TWCR, r16

sts TWCR, r16

von Hmm... (Gast)


Lesenswert?

> Als ich den Thread gestartet habe war es noch ein Tiny13 Projekt. Mir
> wurde dann aber schnell zum Mega88 geraten.

Ja, ich erinner mich.

> Atmel hat anscheinend ein Fehler im Datenblatt und du sagst, das wäre
> meine Schuld, weil ich meine Fragen hier falsch formuliere? Tut mir
> leid, das verstehe ich nicht!

Sorry, falls das so rüber kam. Ich meinte lediglich das der Threadname 
irreführend ist, wenn man nur Muse hat die letzten paar Postings zu 
lesen.

In der Codesammlung gibt es dass hier:

Beitrag "Hardware TWI,I²C, I²C EEPROM"

Ausserdem gibt es bei Atmel noch eine AppNote (AVR310) zum TWI:

http://atmel.com/dyn/resources/prod_documents/doc2561.pdf
http://atmel.com/dyn/resources/prod_documents/AVR310.zip

Hab mir jetzt allerdings den Code nicht angeschaut, sollte aber an dein 
EEPROM anpassbar sein. Auf jedenfall sieht man wie I2C initialisiert und 
verwendet wird.

Viel Erfolg! :)

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.