Microcontroller-Tutorial für Anfänger - Teil I - Grundlagen

  • Guten Morgen liebe LEDSTYLES-Gemeinde.


    Ich hab entweder mit dem Pollin-Board oder mit den µC Probleme, das ihr vllt lösen könntet.
    Wenn ich den µC (attiny2313) mit einem Programm beschreibe, dass genau auf das Pollinboard zugeschnitten is ( z.b. linke LED soll blinken) dann passiert nichts.
    Wenn ich das Programm dann auf einen Atmega 8 draufschreib ( mit den entsprechenden PINänderungen) dann funktionierts auch net. Daraufhin hab ich mal die Pins auf dem Board ohne µC überbrückt un die LEDS leuchten.
    Also nehm ich mal an das es nicht am Board liegt.
    p.s. wenn ich das programm auslesen lasse, ist es angeblich auf dem µC drauf, d.h es müsste doch theoretisch funktionieren ?


    MfG
    Andoras

    Abgeschlossene Projekte: Indirekte Pinwandbeleuchtung
    ToDo: - Edelstahllampe für das Wohnzimmer meiner Eltern bauen (95% fertig)
    - Neue Deckenleuchte ( mit Spots und RGB-Ambientbeleuchtung)
    - Bissl was über Bascom lernen ( wird nie passieren xD )
    Weitere Folgen

  • also das is eigentlich ein ganz simpler code um nen funktionstest zu machen , denn wenn ich den µC auf ein normales Steckbrett draufsteck und dann eine Schaltung dazu bau , passiert genauso viel wie auf demPollinboard ^^.
    hier ist der code:


    $regfile = "m8def.dat"


    $crystal = 1000000


    Config Pind.5 = Output
    Config Pind.6 = Output


    Do


    Portd.5 = 1
    Waitms 250
    Portd.5 = 0 <- Der Pin "PD5" wird auf 0 bzw. Low gesetzt. Auf Deutsch 0 Volt.
    Waitms 250
    Portd.6 = 1 <- Diesmal "PD6" auf High
    Waitms=250
    Portd.6 = 0 <- "PD6" auf Low
    Waitms 250


    Loop



    MfG
    Andoras

    Abgeschlossene Projekte: Indirekte Pinwandbeleuchtung
    ToDo: - Edelstahllampe für das Wohnzimmer meiner Eltern bauen (95% fertig)
    - Neue Deckenleuchte ( mit Spots und RGB-Ambientbeleuchtung)
    - Bissl was über Bascom lernen ( wird nie passieren xD )
    Weitere Folgen

  • ja schon klar aber weiter oben hab ich auch geschrieben das ich das prog. auf nen atmega 8 draufgeschrieben habe. und dieses programm is hatl auch auf den atmega 8 zugeschnitten, aber warum funzt das net ^^ ( sowohl aufm pollin board als auch aufm steckboard )


    MfG


    Andoras

    Abgeschlossene Projekte: Indirekte Pinwandbeleuchtung
    ToDo: - Edelstahllampe für das Wohnzimmer meiner Eltern bauen (95% fertig)
    - Neue Deckenleuchte ( mit Spots und RGB-Ambientbeleuchtung)
    - Bissl was über Bascom lernen ( wird nie passieren xD )
    Weitere Folgen

  • Hehe.. beliebter Anfängerfehller:
    Config Pind.5 = Output
    muss sein:
    Config Portd.5 = Output


    In Bascom gilt immer:
    - Wenn man den Pin als OUTput nutzen will -> Config PortX.Y
    - Wenn man den Pin als INput nutzen will -> Config PintX.Y


    Das beim wilden Brücken die LEDs dann leuchten macht sinn - du stellst ja mit Portd.5 = 1 die Pullups an.

  • Also den Fehler den Stefan oben genannt hat hab ich ausgeschaltet. Komischerweise gehts halt immernoch net ( Power Led leuchtet, es kommen 5 Volt am µC an)
    , sowohl beim Attiny2313 und dem Atmega 8.
    Weiß vllt noch jemand irgendwas woran es liegen könnte oder was passiert ist?


    MfG


    Andoras

    Abgeschlossene Projekte: Indirekte Pinwandbeleuchtung
    ToDo: - Edelstahllampe für das Wohnzimmer meiner Eltern bauen (95% fertig)
    - Neue Deckenleuchte ( mit Spots und RGB-Ambientbeleuchtung)
    - Bissl was über Bascom lernen ( wird nie passieren xD )
    Weitere Folgen

  • Hallo Allerseits,


    hab ne kurze Frage zu dem Tiny2313: wie kann ich den A Port als Ausgang definieren? d und b hab ich mit
    Config Portd = Output
    Config Portb = Output


    gemacht. Bei Port A klappt das aber nicht...zumindest wird es nicht im BASCOM-AVR farblich hinterlegt...


    Kann mir bitte jemand weiterhelfen? Will nämlich alle Ports als Ausgang benutzen.


    Gruß

  • Welchen Port A? Beim tiny2312 gibts doch nur PA0-3 welche für Quarz und Reset sind. Die beiden Quarz-Pins kann man eventuell mit


    Code
    DDRA = &B00000011


    auf Ausgang setzen (noch nie getestet). Reset kann man nur mit passenden Fuse-Settings als Ausgang nutzen. Davon sollte man aber absehen, denn dann kann man den AVR nichtmehr über ISP programmieren. Mit deaktivierter Reset-Funktionalität geht nur noch HV-Programmieren.


    EDIT: Laut Datenblatt hat der tiny2313 18 nutzbare I/0:
    PB0-7, PD0-7, PA2 (Reset)... welches der 18. ist, müsste man dann mal testen, entweder PA0 (XTAL1) oder PA1 (XTAL2). Eine von beiden scheint man nicht verwenden zu können. Oder, was ich mir eigentlich nicht denken kann, Reset ist nicht mitgezählt. Probier einfach mal aus, ob du mit obigem Befehl PA0 und PA1 nutzen kannst. Habe leider keinen freien tiny2313 zum Testen hier.

  • pa0 und pa1 sind ganz normale Ports, die daneben eben auch noch die Funktion haben, für Quarz oder externen Takt genutzt werden zu können - so wie viele andere Pins am Tiny ja auch mehfach belegt sind (z.B. für ISP...)


    das mit den 18 I/O-Lines ist ja klar: der Tiny2313 hat 20 Pins, VCC und GND weg, wie viele bleiben da....? ;) - wobei man den Reset normal wirklich nicht als Port hernimmt, der kann auch nur weniger (im Datenblatt steht "weak") Strom sourcen/sinken


    Fehler in Deiner Rechnung: es gibt keinen PD7, PortD geht nur von 0-6... ;)

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Verdammt, Zählen sollte man als Informatiker schon können ?( Danke fürs richtig stellen.
    10mA pro Pin und max. 60mA in Summe ist soo wenig ja nun nicht. Wobei ich finde, dass das im Datenblatt missverständlich steht: Auf seite 182 steht unter Note 4 und 5 "...each I/O port...". Ist damit tatsächlich der Port oder der Pin gemeint? Ersteres macht irgendwie garkeinen Sinn, weil bei 3 Ports und max. 10mA/Port könnte man die max. erlaubten 60mA ja nie erreichen ;)


    EDIT: Auf Seite 181 steht 40mA pro Pin und 200mA Summe als max. ratings. Also nicht wirklich wenig, das ist beim mega16 das selbe (außer als TQFP, da ist die Summe auf 400mA hochgesetzt, der hat aber auch mehrere Versorgungspins).

  • Das mit dem wenig Strom bezog sich jetzt nur auf den Reset-Pin - wenn man den als Ausgang fused, kann eben nur genau dieser Pin weniger Strom als die anderen - genaue Angaben habe ich nicht gefunden, da steht nur "the Reset Pin can be configured as a (weak) I/O-Pin"... und in irgendnem Forum (mikrocontroller.net o.ä.) habe ich gelesen, dass man dem eben *deutlich* weniger Strom entnehmen kann als den anderen...


    wegen den anderen Strömen müsste ich noch mal nachgucken - ich habe 20 mA pro Pin im Kopf - das stammt auch aus irgendnem Tutorial... wohl weil's zwischen diesen 10 mA typisch und 40 mA *absolutem Maximum* liegt - hängt auch wieder etwas davon ab, ob da nur mal eingeschaltet oder ein Signal mit hoher Frequenz (mehr Erwärmung in den Ausgangs-Fets) ausgegeben wird...


    wenn ich mir das Datenblatt so ansehe: die 200 mA auf Seite 181 stehen für Vcc und GND, also was der µC *insgesamt* (inkl. dem, was er selber braucht) aufnehmen darf - für die *Ports* steht auf Seite 182 60 mA, ebenfalls *insgesamt*: "1] The sum of all IOL, for all ports, should not exceed 60 mA." - also 60 mA für Port A, B und D *zusammen*...


    ansonsten, in der Praxis sind die Teile recht robust - habe auch schon mal nen Tiny2313 versehentlich 2 Minuten lang auf 12 Volt betrieben - wurde verdammt heiss, das Ding, aber geht immer noch... ;) - und wenn ich mir ansehe wie viele Schaltungen es gibt mit 8-12 Leds á 10-20 mA direkt an so nem Tiny, kann das mit den 60 mA auch nicht soo wild sein... klar. professionell ist das nicht (Datenblatt missachten), aber hatte wohl noch nie jemand Probleme mit.. ;)

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • ansonsten, in der Praxis sind die Teile recht robust

    Stimmt, die machen 'ne Menge mit, hab auch schonmal einen auf 12V betrieben - Spannungsregler falsch eingelötet. Den 78L05 hats gegrillt, der tiny war "nur" unanfassbar heiß :D
    Wobei ich es auch schon ein paarmal geschafft hab, den magischen weißen Rauch entweichen zu lassen... und ohne den Funktionieren die Dinger nimmer...

  • Vielen Dank für die schnellen Antworten aber leider klappt es nicht mit


    DDRA = &B00000011


    Ich bekomm da ein Error.. und einfach den Pin ansprechen mit Porta.0 = 1 funktioniert auch nicht. Ich möchte gern zumindest Pin A0 und A1 als Ausgänge mitbenutzen. Wie kann ich das realisieren?


    Vielen Dank schonmal im Voraus.

  • Erstmal Danke für die schnelle Antwort. Ich erhalt leider die Fehlermeldung :


    Variable can not be used with SET [DDRA]


    Die Fuse-Settings habe ich mir noch nicht angschaut, bwz. noch nicht rausgefunden wie mans anzeigt. Aber ich verwend den internen Taktgeber und hab die Fuse-Bits im Lieferungszustand gelassen.

  • Ich war letztens im Laden und wollte in serielles Kabel für mein Atmel Board Und da meinte der Verkäufer es gäbe 2 verschiedene: ein "verdrehtes" und ein normales, nicht verdrehtes.

    Welches brauch ich den nun, für mein Board?

    Hab mich auch schon über 2 Stunden selbst bemüht - aber leider ohne Erfolg. :(

    MfG