Und wie schaut es dann mit der Funktion beim 24er aus?ksbender schrieb:Ja Wolfgang, hast ja recht, es ist ein 2313 in der Schaltung.
Auf dem Steckbrett erkennt man unten rechts in der Ecke neben den beiden Poti´s und der 7-Segmentanzeige den "geparkten" 24er.
Stimmt, habe ich aber noch nicht ausprobiert.Windi schrieb:Und wie schaut es dann mit der Funktion beim 24er aus?
Hätte doch eigentlich mit Deinem alten Programm auch funktionieren müssen?
ksbender schrieb:Später werde ich dann mal einen Schaltplan und den Code einstellen.
upigors schrieb:jepp, wäre nett. hab das programm so wie es da oben steht auch nicht zum laufen bekommen mit nem 24'er
ksbender schrieb:Nu mal nicht so ungeduldig.
Nein. Stünden in der Klammer die Pin-Bezeichnungen MISO, MOSI, SCK, RESET und GND könnte ich Dir zustimmen, dann wären es nämlich dieselben Pinschr2k schrieb:geghe ich richtig in der annahme, dass der Tiny2313 mit denselben Pins (PB0, PB1, PB2, PB5, GND) an den ISP Programmer angeschlossen wird?
Zunächst hatte ich hier das Problem vermutet: es sind wohl einige HD44780-"kompatible" Controller auf dem Markt, die sich in der Initialisierungssequenz, insbesondere wohl im Zeitverhalten vom HD44780 unterscheiden. Aber nun scheint es ja zu gehen.ksbender schrieb:Auch wenn´s im Datenblatt nicht explizit angegeben ist, im Katalog von Reich*** steht, daß der Controller HD44780 kompatibel ist (der ist wohl standard).
Da scheint es Unterschiede zu geben. Ich habe ein Display verbaut (hat nichts mit GC zu tun, daher hier nicht vorgestellt) bei dem die unbenutzten Ports frei in der Luft hängen und welches problemlos funktioniert.gomerffm schrieb:wenn ich recht erinnere, muß man bei betrieb im 4-bit-modus die nicht benötigten datenleitungen des displays auf masse legen.
Merkwürdig. Könnte es sein, das da irgendwo Delays sind, die mit der falschen Frequenz bei der Initialisierung mist gebaut haben, also eine zu lange oder zu kurze Verzögerung hatten?ksbender schrieb:Das letzte was ich geändert habe war die Frequenz.
thomas_st schrieb:Merkwürdig. Könnte es sein, das da irgendwo Delays sind, die mit der falschen Frequenz bei der Initialisierung mist gebaut haben, also eine zu lange oder zu kurze Verzögerung hatten?
ksbender schrieb:Bei nächster Gelegenheit stelle ich mal den Code ein.
'============================================================
'
' ***********************************************************
' *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
' *** Tiny-Reaktiv-LCD mit LDR und A/D-Wandler ***
' *** mit Watchdog-Energiesparmodus und Tagabschaltung ***
' *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
' *** erstellt von ksbender für www.geoclub.de ***
' *** mit Verwendung von wichtigen Programmbestandteilen ***
' *** von Windi bzw. aus dem Kochbuch für das RL ***
' *** Parsau, 12.01.2009 ***
' *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
' ***********************************************************
'
' µC: ATtiny24V
' +Ub: 5,00 V
'============================================================
$regfile = "ATtiny24.DAT" 'Definition des verwendeten µC's
$crystal = 128000 'Frequenz des internen Oszillators
$hwstack = 20 'Hardwarestack herabsetzen damit genügend Variablen zur Verfügung stehen
Config Adc = Single , Prescaler = Auto
Config Porta = &B0011111 'PinA.0 bis PinA.5 auf 'Ausgang', Rest auf 'Eingang' schalten
'6 Ausgänge für den Anschluß ans Display
Config Portb = &B0000111 'PinB.0 bis PinB.2 auf 'Ausgang', Rest auf Eingang
'PinB.0 für Logik, PinB.1 für Hintergrundbeleuchtung
Config Lcd = 16 * 2 'für ein Display mit 16 Zeichen in 2 Zeilen
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcdbus = 4 'zur Beschreibung des Datenmodus
Portb = 0 'Ausgänge auf Low setzen
Porta = 0 'Ausgänge auf Low setzen
Stop Ac 'Analog-Komparator abschalten, um Strom zu sparen
Stop Adc
Wdtcr = &B11010011 'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
Enable Interrupts 'Interrupts freigeben
Const Schwelle = 100 '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 I As Integer
Do 'Start der Haupt-Schleife - Abfrage LDR
Reset Watchdog
Powerdown 'Prozessor bremsen da sonst Lichtänderung nicht erkannt wird
Start Adc 'A/D-Wandler starten
Waitms 1 'Warten, dass ADC Wandler sicher loslaufen kann
Ldr = Getadc(7) 'Helligkeitswert von Port PA7/Pin6 einlesen
Waitms 1 'Warten, dass Messung abgeschlossen ist
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 Blinken '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
Blinken: 'Unterroutine zur Ausgabe auf dem LCD Display
Portb.2 = 1 'LED zur Aufmerksamkeit einaml an
Wait 20
Portb.2 = 0 'LED wieder aus
Portb.0 = 1 'Logik für Display einschalten
Wait 2 'Warten, dass Logik richtig läuft
Portb.1 = 1 'Hintergrundbeleuchtung einschalten
Wait 1
Initlcd 'Display initialisieren
Cursor Off Noblink 'keinen Cursor im Display anzeigen
Cls 'Display löschen
For I = 0 To 1 'Schleife um Geocacher mit Koordinaten zu versorgen
Wait 2
Locate 1 , 1
Lcd " Welcome Cacher" 'Willkommen´s Nachricht kann verändert werden
Locate 2 , 1
Lcd " now go to ..." '2. Zeile Willkommen´s Nachricht
Wait 40 'Soll man lesen können
Cls 'Display wieder löschen, da es nicht komplett überschrieben wird
Wait 1 'Warten bis Display gelöscht
Locate 1 , 1
Lcd " N 52 32.129" 'Die nächsten Koordinaten von N
Locate 2 , 1
Lcd " E 010 53.025" 'und von E natürlich
Wait 60 'immer schön lesen lassen :-)
Cls 'Display wieder löschen
Next I
Cls
Portb.1 = 0 'Hintergrundbeleuchtung ausschalten um Strom zu sparen
Wait 2
Portb.0 = 0 'Logik Display ausschalten um Strom zu sparen
Wait 5
Portb.2 = 1 'LED zur Aufmerksamkeit einaml an
Wait 2
Portb.2 = 0 'LED wieder aus
Return
Pause: 'Unterroutine für Schlafstellung um Strom zu sparen
Wdtcr = &B11110001 'Watchdog auf 8 Sekunden stellen
Reset Watchdog
Powerdown
Wdtcr = &B11010011 'Watchdog wieder auf 0,125 Sekunden zurückstellen
Schlafzaehler = Schlafzaehler + 1 'merken wie oft Schlafmodus durchlaufen wurde
If Schlafzaehler = Zwangsimpuls Then 'als Funktionskontrolle tagsüber LED auslösen
Portb.2 = 1
Reset Watchdog
Powerdown
Portb.2 = 0
Schlafzaehler = 0
End If
Return
End
Laut Datenblatt des HD44780 werden DB0...DB3 im 4-Bit-Modus nicht benutzt ("These pins are not used during 4-bit operation").thomas_st schrieb:Da scheint es Unterschiede zu geben. Ich habe ein Display verbaut (hat nichts mit GC zu tun, daher hier nicht vorgestellt) bei dem die unbenutzten Ports frei in der Luft hängen und welches problemlos funktioniert.gomerffm schrieb:wenn ich recht erinnere, muß man bei betrieb im 4-bit-modus die nicht benötigten datenleitungen des displays auf masse legen.
chr2k schrieb:mir scheint so als wäre mein display defekt
$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 "N 50 12.345"
Locate 2 , 1
Lcd "E 008 12.345"
Do
nop
Loop
End