• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

LCD Display am ATtiny 24

Hab mal eine kleine Frage. Ich habe mir einen Programmieradapter für den Attiny24 gebaut und mit Bascom verbunden. Beim Versuch den chip zu identifiezieren findet er Ihn nicht.

Die Belegung des Kabels ist wie folgt:

PC -------->>>> Adapter Chip
2 - 9 SCK
3 - 4 Reset
9 - 7 Mosi
11 - 8 Miso
24 - 14 GND
25 - 14 GND

Der Resetpin wurde auch schon Probewesie auf Pin 4 am Parallelstecker gelötet. (Wie im Forum unter "Reaktivlicht mit- 7-Segmentanzeige" beschrieben)

Unter Programmer ist "Universal MCS Interface eingetragen (WinAVR and SP12)

Mit den gebauten Programmieradapter für den Attiny13, hab ich gerade mal probiert und da läuft der Attiny13 einwandfrei.
 

upigors

Geowizard
hab gleiches problem. geht nicht... wurde aber irgendo schon mal gepostet und keine lösung gefunden
uwe
 
Fehler gefunden....

Zum ersten waren es 2 vertauschte Pins am Zwischenverbinder von PC und Programmierplatine.

Und dann der Fehler mit Bascom. Nun läuft es und bascom zeigt den Prozzesor an.

Anscheinend war es vor ein paar Tagen beim verlöten doch schon sehr spät :kopfwand:
 

Anhänge

  • Sdc10253.jpg
    Sdc10253.jpg
    381,3 KB · Aufrufe: 1.300
Hab schon selber versucht verschiedene Texte mit jeweils 10 Sekunden anzuzeigen.

Das einzigste was auf den Display stand:

Für ca 1 Sekunde Text 1 und Text 2 danach nur noch irgendwelches Symbol Chaos.

Bin ja lernfähig, aber so oft habe ich leider noch nicht selber programmiert. Ich hoffe das mir jemand helfen kann. :hilfe:


$regfile = "ATtiny24.DAT"
$crystal = 128000

$hwstack = 32
$swstack = 8
$framesize = 24
Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcdbus = 4


Dim I As Byte
Initlcd
Cursor Off Noblink
Cls
Waitms 100
Locate 1 , 1
Lcd "Text 1"
Locate 2 , 1
Lcd "Text 2"

Hier soll der Text 10 Sekunden angezeigt werden.

Locate 1 , 1
Lcd "Text 3"
Locate 2 , 1
Lcd "Text 4"

Hier soll der Text 10 Sekunden angezeigt werden.

Locate 1 , 1
Lcd "Text 5"
Locate 2 , 1
Lcd "Text 6"

Hier soll der Text 10 Sekunden angezeigt werden.
Locate 1 , 1
Lcd "Text 7"
Locate 2 , 1
Lcd "Text 8"

Der Text 7 und 8 soll auch 10 Sekunden angezeigt werden.
Hier soll eine Schleife rein damit der Text endlos wiederholt wird.
 
OP
K

ksbender

Geocacher
Gartenzwerge Berlin schrieb:
Das einzigste was auf den Display stand:
Für ca 1 Sekunde Text 1 und Text 2 danach nur noch irgendwelches Symbol Chaos.

Ohne Gewähr auf Richtigkeit. Mir fällt folgendes ein:
- eine Endlosschleife sollte über die Befehlte DO ..... LOOP zu programmieren sein.
- um Chaos im Display zu vermeiden solltest du vor jedem Neubeschreiben des Display ein CLS einfügen. Damit wird das Display gelöscht.
- um 10 s zu warten kommt ein WAIT 10 Befehlt nach die Texte 2, 4, 6, 8, 10

Hoffe geholfen zu haben.
Gruß
ksbender
 

_joker_

Geocacher
Bin ich blind oder bin ich blind????

Ich find keinen Schaltplan? Gibt es den wo anders oder gar nicht mehr? Oder hat das einen Grund? Mein Urlaub ist noch lang und warm und ich hätt gern was zu tun! ;-)

Gruß _joker_
 

thomas_st

Geowizard
_joker_ schrieb:
Ich find keinen Schaltplan? Gibt es den wo anders oder gar nicht mehr?
Ich kann Dir jetzt zwar nicht direkt helfen, aber auf der vorletzten Seite wurden auch schon zwei Posts verfasst, wo nach dem Schaltplan gefragt wurde. Aber vielleicht hilft Dir diese Seite weiter. Dort wird der Anschluss eines LCDs am AVR detailliert beschrieben. Welche Zuordnung der Ports am LCD (E, RS, eventuell RW, eventuell D0 bis D3, D4 bis D7) zu den Ports am AVR Du nutzt, ist weitgehend frei und muss dann einfach im Programm entsprechend festgelegt werden.

HTH,
Thomas(_st)
 

_joker_

Geocacher
Danke Thomas,

nur hilft mir das nicht viel. Da ich elekronisch und programmiertechnisch eine absolute Null bin, kann ich nur die Programme von hier nutzen und sie eventuell auf meine Belange anpassen. Das aber nur, wie "*" oder "-" beim Morsen ändern. Schaltung nachstecken und löten geht ja noch und einen Attiny13 damit füttern. Aber dann hört es auf, von wegen Ports und Bytes. (hab drei Wochen gebraucht um die Zeit zu ändern bei den Watchdogs, weil ich nicht wusste wo es steht).... mühsam ernährt sich das Eichhörnchen! Und im Urlaub :) hat man nur begrenzte Möglichkeiten zwecks Infos.

Aber vielleicht hat der ein oder andere noch den Schaltplan auf seiner Platten und kann ihn mir zukommen lassen, wenn ksbender nichts dagegen hat!

Gruß _joker_
 

_joker_

Geocacher
nochmal ich....

Muss der Pin AVCC mit Spannung versorgt werden um z.B. über Port PortC.2 den LDR einlesen zu können. (ATmeg8) oder PortA.2 beim Atmeg32. Ich probiere hier schon eine Weile das Programm vom Tiny13 auf ein von den beiden zu übertragen. Was auch geht nur reagiert nichts! Noch nicht einmal die LED leuchtet, wenn Spannung angelegt wird. (PortC.3 bzw PortA.3 sind als Ausgang geschalten).
Beim Tiny13 klappt das alles wunderbar.

Könnte mal ein wenig INPUT gebrauchen. Bitte wenn möglich, verständlich für einen Nichtprogrammierer! Ich liege in den ersten Anfängen!

Gruß _joker_

PS: kann man vielleicht VCC mit AVCC irgendwie intern schalten/Befehl?
 

thomas_st

Geowizard
_joker_ schrieb:
Muss der Pin AVCC mit Spannung versorgt werden um z.B. über Port PortC.2 den LDR einlesen zu können.
AVcc steht für "analog Vcc" und soll den analogen Teil des Megas (also die ADCs) mit Strom versorgen. Der Grund für die Trennung ist folgender: man will vermeiden, dass Störungen auf der digitalen Vcc Leitung (z.B. durch Schaltvorgänge) auf den analogen Teil durchschlagen. Da ich AVcc bisher immer beschaltet habe (allerdings beim Mega 48, 88 und 168), kann ich nur vermuten, dass es ohne diese Stromversorgung nicht klappt - einfach mit Vcc zusammenschalten: dann hast du den Zustand wie bei den Tinys mit gekoppelter analoger und digitaler Spannungsversorgung. IIRC ist im Datenblatt auch ein Bild auf welche Pins sich AVcc bezieht.

HTH,
Thomas(_st)
 

_joker_

Geocacher
Danke Thomas für deinen Hinweis. Also alles nochmal ausgepackt, aufgesteckt, Programm kontrolliert, Chip gebrannt und aufgesteckt. Seite mit VCC und GND mit + und - verbunden, ebenso AVCC und GND mit + und -. Und? Nichts!
Nochmals die Pins kontrolliert, LED kontrolliert, alle Steckbrettverbindungen. NICHTS!
Probiere hier im Urlaub mit einem ATmeg32A.
Probiere ich ein einfaches Blinken an PortA.3 funktioniert es. Läuft alles über 3V (was anderes hab ich hier nicht).
Hmm, jetzt hört bei mir erstmal die Logik auf! Gibts einen Denkanstoß für mich?

Das Programm verwende ich zum Testen um später das LCD-Display mit einzubinden. Aber da muss ja zummindest der LDR funktionieren!
Code:
'============================================================
'
' ********************************************************
' ***                                                  ***
' ***    Tiny-Reaktivlicht mit LDR und A/D-Wandler     ***
' *** mit Watchdog-Energiesparmodus und Tagabschaltung ***
' *** Ausgabe von Morsesignalen beim Anleuchten        ***
' ***                                                  ***
' ***      erstellt von Windi für http://www.geoclub.de       ***
' ***                   04.01.2008                     ***
' ***                                                  ***
' ********************************************************
'
' µC: ATtiny13V
' +Ub: 3,00 V
' I: 17 µA im Leerlauf (Nachtbetrieb)
' I: 5 µA bei Tagabschaltung
' Reichweite: 650 m mit Maglite 5D
'
'============================================================

$hwstack = 20                                               'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
$regfile = "m32def.dat"
$crystal = 1280000                                          'Frequenz des internen Oszillators



Config Adc = Single , Prescaler = Auto
Config Porta = &B00001000                                   'Pinb.3 auf 'Ausgang', Rest auf 'Eingang' schalten
Porta = 0                                                   'Ausgänge auf Low setzen
Stop Ac                                                     'Analog-Komparator abschalten, um Strom zu sparen

Wdtcr = &B11010011                                          'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
Enable Interrupts                                           'Interrupts freigeben

Const Schwelle = 50                                         'je größer der Schwellwert, desto unempfindlicher
Const Tagschwelle = 800                                     'Schwellwert für Schlafmodus
Const Zwangsimpuls = 8                                      'LED-Impuls tagsüber alle X Schlafyklen (á ca. 8 Sekunden)

Dim A As Byte                                               'Variablen definieren
Dim Tagzaehler As Byte
Dim Schlafzaehler As Byte
Dim Ldr As Integer                                          '0 = Dunkel, 1023 = Hell
Dim Alt As Integer
Dim Merker As Integer
Dim Zeichen As String * 1

Do
Reset Watchdog
Powerdown                                                   'prozessor bremsen da sonst lichtänderung nicht erkannt wird
Start Adc                                                   'A/D-Wandler starten
Ldr = Getadc(2)                                             'Helligkeitswert einlesen
Stop Adc                                                    'A/D-Wandler zum Stromsparen wieder stoppen
Merker = Ldr - Alt                                          'Unterschied zwischen letzter und aktueller Messung ermitteln
Alt = Ldr                                                   'letzten LDR-Wert sichern
If Merker > Schwelle Then Gosub Morsen                      'Bei großer Änderung Dunkel->Hell: Blinken
If Ldr > Tagschwelle Then                                   'prüfen ob helligkeit über tagschwelle liegt
   If Tagzaehler < 255 Then                                 'int-variable geht nur bis 255
      Tagzaehler = Tagzaehler + 1
   End If
Else
   Tagzaehler = 0                                           'wenn wieder dunkel tagzähler löschen
End If

If Tagzaehler > 200 Then Gosub Pause                        'wenn mehr als x zyklen hell dann schlafmodus

Loop


Pause:
Wdtcr = &B11110001                                          'Watchdog auf 8 Sekunden stellen
Reset Watchdog
Powerdown
Wdtcr = &B11010011                                          'Watchdog wieder auf 0,125 Sekunden zurückstellen
Return

Morsen:
Restore Daten                                               'Am Beginn der Daten anfangen
Alt = 1023                                                  'Doppelauslösung verhindern
Do
Read Zeichen
Wdtcr = &B11010100                                          'Watchdog auf 250ms stellen
If Zeichen = "*" Then Gosub Kurz
If Zeichen = "-" Then Gosub Lang
If Zeichen = " " Then Gosub Leer
Wdtcr = &B11010011                                          'Watchdog wieder auf 125ms stellen
If Zeichen = "X" Then Return
Loop

Kurz:
Porta.3 = 1
Reset Watchdog
Powerdown
Porta.3 = 0
Reset Watchdog
Powerdown
Return

Lang:
Porta.3 = 1
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Porta.3 = 0
Reset Watchdog
Powerdown
Return


Leer:
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Return

End

Daten:
'Data "*" , "-" , " "                                           'A
'Data "-" , "*" , "*" , "*" , " "                               'B
'Data "-" , "*" , "-" , "*" , " "                               'C
'Data "-" , "*" , "*" , " "                                     'D
'Data "*" , " "                                                 'E
'Data "*" , "*" , "-" , "*" , " "                               'F
'Data "-" , "-" , "*" , " "                                     'G
'Data "*" , "*" , "*" , "*" , " "                               'H
'Data "*" , "-" , "-" , "-" , "-" , " "                         'I
'Data "*" , "-" , "-" , "-" , " "                               'J
'Data "-" , "*" , "-" , " "                                     'K
'Data "*" , "-" , "*" , "*" , " "                               'L
'Data "-" , "-" , " "                                           'M
'Data "-" , "*" , " "                                           'N
'Data "-" , "-" , "-" , " "                                     'O
'Data "*" , "-" , "-" , "*" , " "                               'P
'Data "*" , "-" , "*" , " "                                     'R
'Data "*" , "*" , "*" , " "                                     'S
'Data "-" , " "                                                 'T
'Data "*" , "*" , "-" , " "                                     'U
'Data "*" , "*" , "*" , "-" , " "                               'V
'Data "*" , "-" , "-" , " "                                     'W
'Data "-" , "*" , "*" , "-" , " "                               'X
'Data "-" , "*" , "-" , "-" , " "                               'Y
'Data "-" , "-" , "*" , "*" , " "                               'Z

'Data "-" , "-" , "-" , "-" , "-" , " "                         '0
'Data "*" , "-" , "-" , "-" , "-" , " "                         '1
'Data "*" , "*" , "-" , "-" , "-" , " "                         '2
'Data "*" , "*" , "*" , "-" , "-" , " "                         '3
'Data "*" , "*" , "*" , "*" , "-" , " "                         '4
'Data "*" , "*" , "*" , "*" , "*" , " "                         '5
'Data "-" , "*" , "*" , "*" , "*" , " "                         '6
'Data "-" , "-" , "*" , "*" , "*" , " "                         '7
Data "-" , "-" , "-" , "*" , "*" , " "                      '8
'Data "-" , "-" , "-" , "-" , "*" , " "                         '9

'Data "*" , " "                                                            '1
'Data "*" , "*" , " "                                                      '2
'Data "*" , "*" , "*" , " "                                                '3
'Data "*" , "*" , "*" , "*" , " "                                          '4
'Data "*" , "*" , "*" , "*" , "*" , " "                      '5
'Data "*" , "*" , "*" , "*" , "*" , "*" , " "                              '6
'Data "*" , "*" , "*" , "*" , "*" , "*" , "*" , " "                        '7
'Data "*" , "*" , "*" , "*" , "*" , "*" , "*" , "*" , " "                  '8
'Data "*" , "*" , "*" , "*" , "*" , "*" , "*" , "*" , "*" , " "            '9
'Data "*" , "*" , "*" , "*" , "*" , "*" , "*" , "*" , "*" , "*" , " "      '10 /0

Data "X"
 

thomas_st

Geowizard
_joker_ schrieb:
:( Da bin ich jetzt auch etwas überfragt. Folgende Punkte kannst Du ja mal überprüfen:

- Muss irgendwo noch die Referenzspannung für den ADC eingestellt werden? Im Programm habe ich nichts in dieser Richtung erkannt. Wenn dort standardmäßig "ext. Referenz" eingestellt ist, ist der Pin ARef mit AVcc zu verbinden. Wenn hingegen die interne 2,56V Referenz genutzt wird, dann den Pin ARef nicht mit AVcc zusammenschalten, da Du sonst einen Kurzen baust. In diesem Fall sollte am ARef Pin die 2,56V gegen Masse zu messen sein. In diesem Fall kann das Ganze übrigens nicht funktionieren, da die per ADC zu messende Spannung viel zu hoch ist (der ADC misst immer nur 1023) - unbedingt auf externe Ref. oder AVcc als Referenz umstellen. Hast Du eigentlich entspr. des Thread-Titels ein LCD angeschlossen? Wenn ja, versuche doch mal den aktuellen ADC-Wert auf diesem auszugeben.

- Nutzt Du irgend etwas vom Port C des Mega 32? Wenn ja: der Port C des Mega 32 wird standardmäßig für das JTAG-Interface benutzt. Um diesen für "normale" IOs zu nutzen ist das entsprechende Fuse zu löschen (laut Datenblatt heißt es JTAGEN / wie Bascom es bezeichnet ist mir unbekannt) ... BTW: gibt es da nicht eine Beschränkung des freien Bascom :???:

Viele Grüße und HTH,
Thomas(_st)
 

_joker_

Geocacher
Hi Thomas,

das steht zur Referenzspannung im Datenblatt. Wenn ich das richtig interpretiere, kann ich AVCC so nutzen ohne was einzustellen...

...Internal reference voltages of nominally 2.56V or AVCC are provided On-chip. The voltage reference
may be externally decoupled at the AREF pin by a capacitor for better noise performance....

Am myAVR Bastelboard mit einem ATmeg8 drauf hab ich es auch nicht hinbekommen, dafür die LCD-initialisierung und Textausgabe. Da ich aber an der LDR-Blinkerei schon scheitere, hab ich das LCD Teil erstmal weggelassen. Sollte ja auch wie ein ATtiny13 funktionieren können....

Ich pack jetzt meinen Krempel zusammen, beende meinen Urlaub und fahr nach Hause. Melde mich Anfang nächster Woche wieder. Vielleicht fällt mit auf der Heimfahrt was gescheites ein!?

Sonnige Grüß aus GR

_joker_
 

thomas_st

Geowizard
_joker_ schrieb:
das steht zur Referenzspannung im Datenblatt. Wenn ich das richtig interpretiere, kann ich AVCC so nutzen ohne was einzustellen...

...Internal reference voltages of nominally 2.56V or AVCC are provided On-chip.
Jep. Es gibt 3 Möglichkeiten die Referenzspannung vorzugeben: AVcc, intern 2,56V oder extern am ARef Pin. Diese Referenzspannung ist übrigens die Spannung, bei dem der ADC den Wert 1023 zurück gibt - es ist also schon interessant, ob "1023" nun 2,56V bedeutet oder eben die Spannung ist gleich AVcc. Daher muss im Programm eigentlich eingestellt werden, welche der Referenzen genutzt wird. Was ich jetzt nicht weiß, ist ob und wenn ja, was Bascom da intern einstellt.

_joker_ schrieb:
Am myAVR Bastelboard mit einem ATmeg8 drauf hab ich es auch nicht hinbekommen,
:???: Hast Du jetzt einen Mega 8 oder einen Mega 32?

_joker_ schrieb:
Ich pack jetzt meinen Krempel zusammen, beende meinen Urlaub und fahr nach Hause. Melde mich Anfang nächster Woche wieder. Vielleicht fällt mit auf der Heimfahrt was gescheites ein!?
Nicht aufgeben und noch viel Spaß im Urlaub. Ich bin übrigens die nächsten 1 1/2 Wochen auch nicht oder kaum zu sprechen ;)

_joker_ schrieb:
Sonnige Grüß aus GR
Viele Grüße zurück, aus dem ebenfalls sonnigen Frankfurt,
Thomas(_st)
 

_joker_

Geocacher
Jep. Es gibt 3 Möglichkeiten die Referenzspannung vorzugeben: AVcc, intern 2,56V oder extern am ARef Pin. Diese Referenzspannung ist übrigens die Spannung, bei dem der ADC den Wert 1023 zurück gibt - es ist also schon interessant, ob "1023" nun 2,56V bedeutet oder eben die Spannung ist gleich AVcc. Daher muss im Programm eigentlich eingestellt werden, welche der Referenzen genutzt wird. Was ich jetzt nicht weiß, ist ob und wenn ja, was Bascom da intern einstellt.

Und das fragst du mich als absoluten Tiefflieger in Sachen Bascom? Mit meinen fünfzig Jährchen auf dem Buckel weiss ich erst seit zwei Wochen das es sowas gibt! Aber ich bleib dran!

Hast Du jetzt einen Mega 8 oder einen Mega 32?

Ich hab beides. Mega8 auf dem myAVR-Board und den Meg32 als Käfer auf dem Steckbrett oder wie das halt neudeutsch heisst....

Nicht aufgeben und noch viel Spaß im Urlaub. Ich bin übrigens die nächsten 1 1/2 Wochen auch nicht oder kaum zu sprechen

Mach ich nicht, hab mich ja richtig festgebissen und lass nicht los. Für was gibt es denn das Forum hier und jeder hat mir bis jetzt ein wenig weiter geholfen. Danke dafür!

Dann eine schöne Zeit! und bis demnächst. In sechs Stunden gehts heimwärts! Aber das Hirn fährt mit! :D

Gruß _joker_
 

_joker_

Geocacher
So, Stand der Dinge mit meinen Experimenten..... Es klappt! Zumindest mit dem ATtiny24. Warum es mit den anderen beiden nicht geht, habe ich noch nicht herausgefunden. Habs auch nicht weiter probiert. Hauptsache das geht erst mal. Das AVCC wird wohl eine Winterarbeit.

Danke nochmal an thomas_st und ksbender.

Gruß _joker_
 
Oben