ATMega16, ATMega32 PC6 PC7 probléma

Avatar
zox1
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2007. szeptember 8. szombat, 6:00

ATMega16, ATMega32 PC6 PC7 probléma

Hozzászólás Szerző: zox1 »

Sziasztok !!!

Hogyan kell az ATMega16 és ATMega32 chipen életre keltene a PC6 és PC7 kimenetelt?

FUSE HIGH-ben a JTAGEN disable (1-re programozva).

ASSR registerben AS2 0-ra programozva.

Ezek a dolgok nem segitetek.

Előre is kösz a segitséget...

zox1
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

PC6-PC7:

config portc.6=output
config portc.7=output
portc.6=1
portc.7=1


és a TIMER2 NE külső kvarc legyen!
És JTAG DISABLE legyen!
Avatar
zox1
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2007. szeptember 8. szombat, 6:00

Hozzászólás Szerző: zox1 »

Köszönöm,

"TIMER2 NE külső kvarc legyen" ez az amit nem tudok beállitani.
A chip 12-es és 13-as kivezetésein 4MHz kvarc van. PC7 és PC6 közt semi.

zox1
Avatar
zox1
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2007. szeptember 8. szombat, 6:00

Hozzászólás Szerző: zox1 »

Mivel avrgcc hasznalok azért irom ide ezt a fajta példát

TCCR2 = 0;
ASSR &= ~(1<<AS2);

DDRC = 0xFF; (0b11111111) output-nak confolva
PORTC = 0x80; (ob10000000) csak a PC7-es legyen PULL UP (high)

Semi se történik, a PC7-es kimenet se HIGH se LOW

Ha:
PC7 és PC6 egyidőben álitom HIGH-re (0b11000000) akkor mint két kimenet HIGH, de ha csak a programba ez egyik kimenetet értékét megváltoztattom (pl. a PC6 - 0b10000000) akkor eltünik a PC7-tn is a HIGH, mindkettő kimeneten se HIHG se LOW.

Az egész csak enyi lene, a kimeneteket tesztelném (pl ha egy LED futófényt csinalnak)
int main(void)
{
ASSR = 0;

TCCR2 = 0;
DDRC = 0xFF;
PORTC = 0xFF;


while(1)
{
PORTC = 0x80;
}

return 0;
}

Előre is köszönöm a további segitséget

zox1
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Próbáldd meg bascommal mit csinál. A C nekem bonyolult:)
Ezzel kizárod nem a chip van-e lehalva....
Avatar
zox1
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2007. szeptember 8. szombat, 6:00

Hozzászólás Szerző: zox1 »

Robert írta:Próbáldd meg bascommal mit csinál. A C nekem bonyolult:)
Ezzel kizárod nem a chip van-e lehalva....
Hát bascommal nem probaltám meg de codevisionavr-el igen.A chip nincs elhalva, de a teszt progi is jo. A panel ahol a chip aljzat van ott volt rovidzarlat a két kivezetés közt (forrasztó ón megfolyás, szemmel alig látható).

Köszi a helpeket és az ötletet.

zox1
Avatar
ifiszgy
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2009. november 27. péntek, 7:00

Kezdő

Hozzászólás Szerző: ifiszgy »

Én kezdő vagyok, és most nagyon tanulni akarom ;-)

Kérdésem az volna, hogy nekem miért dob hibát a következő:

$crystal = 1000000
$baud = 19200
$lib "mcsbyte.lbx"
$regfile = "m16def.dat"

Config Portc.6 = Output
Config Portc.7 = Output
Portc.6 = 1
Portc.7 = 1

Do
Portc = 250
Waitms 100
Portc = 0
Waitms 100
Loop


A hiba: Can't find HW-register DDR6
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

Használj inkább:
Config Pinc.6 = Output
Config Pinc.7 = Output
Utasításokat
:idea:
Biztos valamely régebbi Bascomot használod, mert az újban már javították ezt a hibát.
Szedki a : „$lib "mcsbyte.lbx"” sort!
Mert hibás az mcsbyte.lbx!
Nincsen olyan regiszter, amire hivatkozik (DDR6)
Nézd meg az adatlap 334.-oldalán levő regiszter összefoglaló táblázatot!
Valószínűleg (DDC6)-ot akartak írni?
:cry:
Ha ez nem seggit, akkor esetleg szövegszerkesztővel nézd át a : m16def.dat
; PORTC
PC7 =7
PC6 =6
PC5 =5
PC4 =4
PC3 =3
PC2 =2
PC1 =1
PC0 =0

; DDRC
DDC7 =7
DDC6 =6
DDC5 =5
DDC4 =4
DDC3 =3
DDC2 =2
DDC1 =1
DDC0 =0

; PINC
PINC7 =7
PINC6 =6
PINC5 =5
PINC4 =4
PINC3 =3
PINC2 =2
PINC1 =1
PINC0 =0

Részét hátha hibás?
:?:
Avatar
ifiszgy
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2009. november 27. péntek, 7:00

Hozzászólás Szerző: ifiszgy »

Bakker! Kezdőként ilyet lefejelni ( :lol: )!

Köszönöm a segítséget!
- A DAT-ban nem volt hiba.
- az mcsbyte.lbx kivettem, de így sem volt jó
- az általad adott kód javította csak meg!

El tudod magyarázni - hogy értsem is, hogy a két utasítás között mi volt a külömbség?

Illetve egy kezdő kérdés:

Hogyan tudom megoldani, hogy a LED villogásom ( :? ) ne az összes PortB-n jelenjen meg, hanem csak az egyik lábon pl. PB1-en (T1) jöjjön ki.
Ha jól értem az adatlapot tudom állítani egy bitsorozattal, hogy melyik hogyan...

Megyek olvasok, hátha megtudom mire megválaszolod és megerősíted vagy megcáfolod amit eddig megértettem :wink: .

Köszönöm az eddigieket!
Avatar
ifiszgy
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2009. november 27. péntek, 7:00

Hozzászólás Szerző: ifiszgy »

Tényleg régi BASCom-ot haszsnáltam.
Végül a régin jól ment.
Aztán LCD-t próbálgattam -simulátoron.
Az alábbi kódot lefuttattam, jól ment, de a kijelző a végén két hatost dobott.
Letöltöttem a legújabb demót.
Ott is le akarom futtatni, de státusbáron ugyan futást ír, de a szimulátor nem mutat semmit. Sőt futás alatt látszik, hogy I értéke nem változik!

Mit rontok el? (Vista alatt futtatom, de a régit is ott futtattam).


Dim I As Integer
Cursor Off

I = 0


Do
Cls

Set Portd.1
Waitms 50
Reset Portd.1
Waitms 50
'----
Set Portd.2
Waitms 50
Reset Portd.2
Waitms 50
'----
Set Portd.3
Waitms 50
Reset Portd.3
Waitms 50

I = I + 1
Cls
Locate 1 , 6
Lcd I

Loop Until I > 5

Locate 2 , 6
Cls
Lcd I


kapu48 írta:Használj inkább:
Config Pinc.6 = Output
Config Pinc.7 = Output
Utasításokat
:idea:
Biztos valamely régebbi Bascomot használod, mert az újban már javították ezt a hibát.
Szedki a : „$lib "mcsbyte.lbx"” sort!
Mert hibás az mcsbyte.lbx!
Nincsen olyan regiszter, amire hivatkozik (DDR6)
Nézd meg az adatlap 334.-oldalán levő regiszter összefoglaló táblázatot!
Valószínűleg (DDC6)-ot akartak írni?
:cry:
Ha ez nem seggit, akkor esetleg szövegszerkesztővel nézd át a : m16def.dat
; PORTC
PC7 =7
PC6 =6
PC5 =5
PC4 =4
PC3 =3
PC2 =2
PC1 =1
PC0 =0

; DDRC
DDC7 =7
DDC6 =6
DDC5 =5
DDC4 =4
DDC3 =3
DDC2 =2
DDC1 =1
DDC0 =0

; PINC
PINC7 =7
PINC6 =6
PINC5 =5
PINC4 =4
PINC3 =3
PINC2 =2
PINC1 =1
PINC0 =0

Részét hátha hibás?
:?:
:?: [/img]
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Hozzászólás Szerző: kapu48 »

1. Ha LCD-re akarsz írni, akkor először Configurálni kel az LCD-t!
2. Kel a program végére : End 'end program
3. Remélem ezt a sort, már kiszedted?: $lib "mcsbyte.lbx"
4. Alapból a portok bemenetek, kimenetnek configolni kel.
5. Ha szimulátorban futtatod kel a program elejére ez a sor: $sim
Én ugyan Windows 7 alatt futatom, itt jól mükszik.

:wink:
Avatar
ifiszgy
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2009. november 27. péntek, 7:00

Hozzászólás Szerző: ifiszgy »

Köszönöm!

nem gondoltam, hogy ami régebbi BASCOMba ment, az az újabba nem menne esetleg. (Igaz ott is akadt vele gond, dupla kiírás a végén...).

Amit írtál megint segített! :wink:
sikerült a friss bascomban a helloworld - kisöröm is öröm :lol:

Kód: Egész kijelölése

$regfile = "m16def.dat"
$crystal = 4000000
$baud = 19200
$sim
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
Config Lcd = 16 * 2
Cls
Lcd "Hello world."
Wait 1
End

kapu48 írta:1. Ha LCD-re akarsz írni, akkor először Configurálni kel az LCD-t!
2. Kel a program végére : End 'end program
3. Remélem ezt a sort, már kiszedted?: $lib "mcsbyte.lbx"
4. Alapból a portok bemenetek, kimenetnek configolni kel.
5. Ha szimulátorban futtatod kel a program elejére ez a sor: $sim
Én ugyan Windows 7 alatt futatom, itt jól mükszik.

:wink:
Válasz küldése