Hallo zusammen,
mein Bascom-Einstieg
Da meine GLCD-Versuche ja kläglich gescheitert sind versuch ich
mal das von Grund auf zu machen. Eins nach dem anderen ...
Ich hab mir ja ein Pollin-Board nachgebaut und weil das so einfach ist und
dieses Board auch bei anderen wohl anscheinend zur Genüge vorhanden ist
werde ich meine Versuche auf dieses Board abstimmen.
Ich werde PortD mit den Tastern, den LEDs und der RS232 beschaltet lassen
damit man da nix umstecken muß. Das EEPROM ist bei mir nicht gesteckt und
die Brücken für den I2C sind draußen (erstmal). Ich habe also PortA und PortC
vollständig zur Verfügung. PortB ist bis auf die Einschränkungen des ISP auch
komplett verwendbar. Die Programme schreibe ich auf nem ATmega8535. Der
ist soweit kompatibel mit dem ATmega16 oder ATmega32. Er hat allerdings
recht wenig Speicher. Was auf dem läuft, das läuft also auch auf dem
16 oder dem 32.
Zuerst hab ich mal nen Programm geschrieben um die gesamten Ports zu
testen. Ich hab mir nen kleinen Adapter gebastelt auf dem sich 8 LEDs
befinden die mir die Bits anzeigen können. Den steck ich dann von Port zu
Port um zu sehen ob denn alles läuft.
Hier nun das Testprogramm ...
CodeBox BASCOM
Es ist nicht schön aber es funktioniert Man könnte es natürlich auch über
Variablen auf einen Bruchteil zusammenkürzen ... aber egal.
Hier mein Testprogramm zum Download ...
Anhang anzeigen Port-Test.bas
So sieht der Testaufbau aus ...
Ein AVRISPmk2, nen kleiner Adapter für die Anpassung von 6pin-ISP auf
10pin-ISP, das nachgebaute Pollin-Eval-Board und ein Port-Tester
und das ist mein Adapter mit den 8 LEDs. Nen Schaltplan kann ich ja noch
als Anhang dransetzen (später mal ...)
damit kann man Hardwaredefekte der IO-Ports erkennen oder auch einfach
nur nen paar Bits anzeigen.
EDIT: ... so, hier ist der Schaltplan ...
Wenn ich mal Lust habe wird der gemeinsame Anschluß der LEDs nochmal von
einem OPAmp auf 2,5V gehalten. Dann ist über den Jumper dieser gemeinsame
Pol umschaltbar ...
* 4V
* 2,5V
* 1V
damit kann man dann entweder nur die grünen, nur die roten oder alle LEDs
einschalten und die Ports auf saubere Durchschaltung von GND und Vcc oder
hochohmig testen.
EDIT: hier ist der fertige Port-Tester
Gruß
Dino
mein Bascom-Einstieg
Da meine GLCD-Versuche ja kläglich gescheitert sind versuch ich
mal das von Grund auf zu machen. Eins nach dem anderen ...
Ich hab mir ja ein Pollin-Board nachgebaut und weil das so einfach ist und
dieses Board auch bei anderen wohl anscheinend zur Genüge vorhanden ist
werde ich meine Versuche auf dieses Board abstimmen.
Ich werde PortD mit den Tastern, den LEDs und der RS232 beschaltet lassen
damit man da nix umstecken muß. Das EEPROM ist bei mir nicht gesteckt und
die Brücken für den I2C sind draußen (erstmal). Ich habe also PortA und PortC
vollständig zur Verfügung. PortB ist bis auf die Einschränkungen des ISP auch
komplett verwendbar. Die Programme schreibe ich auf nem ATmega8535. Der
ist soweit kompatibel mit dem ATmega16 oder ATmega32. Er hat allerdings
recht wenig Speicher. Was auf dem läuft, das läuft also auch auf dem
16 oder dem 32.
Zuerst hab ich mal nen Programm geschrieben um die gesamten Ports zu
testen. Ich hab mir nen kleinen Adapter gebastelt auf dem sich 8 LEDs
befinden die mir die Bits anzeigen können. Den steck ich dann von Port zu
Port um zu sehen ob denn alles läuft.
Hier nun das Testprogramm ...
CodeBox BASCOM
' Testprogramm für mein Pollin-Nachbau-Board
' Es werden nacheinander alle Portbits auf 1 gesetzt
' Sieht also wie ein Lauflicht aus.
' #############################################################################
' ##### Definitionen ##########################################################
' #############################################################################
' Prozessor ATmega8535 (lag grade so rum)
$regfile = "m8535.dat"
' Prozessor ATmega16 (wers braucht)
' $regfile = "m16def.dat"
' Prozessor ATmega32 (wers braucht)
' $regfile = "m32def.dat"
' 16MHz Quarztakt
$crystal = 16000000
' Hab ich abgekupfert ;-)
$hwstack = 128
$swstack = 128
$framesize = 128
' #############################################################################
' ##### Initialisierung #######################################################
' #############################################################################
' ==============================================
' Die Ports auf dem Eval-Board und ihre Belegung
' ==============================================
' DDRx => Datenrichtung des Portpins
' 0=Eingang , 1=Ausgang
' PORTx => Ausgang oder PullUp
' 0=GND/PullUp aus , 1=Vcc/PullUp an
' PINx => Eingang (Pin abfragen)
' === PortA ============================
' PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0
' - - - - - - - -
' Alle Portbits können verwendet werden
Ddra = &B1111_1111
Porta = &B0000_0000
' ======================================
' === PortB ============================
' PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
' SCK MOSI MISO - - - - -
' Alle Portbits können verwendet werden
' Bei PB5..7 aber Einschränlung wegen ISP
Ddrb = &B1111_1111
Portb = &B0000_0000
' ======================================
' === PortC ============================
' PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0
' - - - - - - SDA SCL
' Alle Portbits können verwendet werden
' Bei I2C-Bus (TWI) sind PC0+1 aber belegt
Ddrc = &B1111_1111
Portc = &B0000_0000
' ======================================
' === PortD ============================
' PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0
' Buz LD2 LD1 T3 T2 T1 TxD RxD
' Hier sind beim Eval-Board Taster, LEDs
' Buzzer und RS232 dran
Ddrd = &B1110_0000
Portd = &B0000_0000
' ======================================
' #############################################################################
' ##### Hauptschleife #########################################################
' #############################################################################
Do
' 500ms warten
Waitms 500
' Alle Bit0 der Ports auf 1
Porta = &B0000_0001
Portb = &B0000_0001
Portc = &B0000_0001
Portd = &B0000_0001
Waitms 500
' Alle Bit1 der Ports auf 1
Porta = &B0000_0010
Portb = &B0000_0010
Portc = &B0000_0010
Portd = &B0000_0010
Waitms 500
' Alle Bit2 der Ports auf 1
Porta = &B0000_0100
Portb = &B0000_0100
Portc = &B0000_0100
Portd = &B0000_0100
Waitms 500
Porta = &B0000_1000
Portb = &B0000_1000
Portc = &B0000_1000
Portd = &B0000_1000
Waitms 500
Porta = &B0001_0000
Portb = &B0001_0000
Portc = &B0001_0000
Portd = &B0001_0000
Waitms 500
Porta = &B0010_0000
Portb = &B0010_0000
Portc = &B0010_0000
Portd = &B0010_0000
Waitms 500
Porta = &B0100_0000
Portb = &B0100_0000
Portc = &B0100_0000
Portd = &B0100_0000
Waitms 500
Porta = &B1000_0000
Portb = &B1000_0000
Portc = &B1000_0000
Portd = &B1000_0000
Loop
End
' #############################################################################
' ##### Programmende ##########################################################
' #############################################################################
Es ist nicht schön aber es funktioniert Man könnte es natürlich auch über
Variablen auf einen Bruchteil zusammenkürzen ... aber egal.
Hier mein Testprogramm zum Download ...
Anhang anzeigen Port-Test.bas
So sieht der Testaufbau aus ...
Ein AVRISPmk2, nen kleiner Adapter für die Anpassung von 6pin-ISP auf
10pin-ISP, das nachgebaute Pollin-Eval-Board und ein Port-Tester
und das ist mein Adapter mit den 8 LEDs. Nen Schaltplan kann ich ja noch
als Anhang dransetzen (später mal ...)
damit kann man Hardwaredefekte der IO-Ports erkennen oder auch einfach
nur nen paar Bits anzeigen.
EDIT: ... so, hier ist der Schaltplan ...
Wenn ich mal Lust habe wird der gemeinsame Anschluß der LEDs nochmal von
einem OPAmp auf 2,5V gehalten. Dann ist über den Jumper dieser gemeinsame
Pol umschaltbar ...
* 4V
* 2,5V
* 1V
damit kann man dann entweder nur die grünen, nur die roten oder alle LEDs
einschalten und die Ports auf saubere Durchschaltung von GND und Vcc oder
hochohmig testen.
EDIT: hier ist der fertige Port-Tester
Gruß
Dino