Hi! Ich hab heute meinen Atmega16(dil 40) bekommen. Mein erster Test, wie immer: Eine Led blinken lassen. Das mit Bascom. Doch warum funktioniert folgendes Beispiel nicht? Anfang: Porta.1 = 1 'waitms 10 Porta.1 = 0 Goto Anfang Der Compiler liefert zwei Mal : Invalid Datatype Doch wie muss ich ein Bit angeben. Ein Byte ist mit einem % gekennzeichnet, hexadezimal mit & aber wie sieht das bei einem Bit aus. Und noch was. muss ich beim Atmega16 beide Gnd's(pin 11,pin31) anschliessen, oder gehört der eine zum A/D wandler? Im Datenblatt finde ich dazu nichts und auch im Block Diagramm ist nur ein Gnd eingezeichnet... Bitte helft mir :) Nik
Hallo Nik Füge oben im Code mal ein lustiges Config Pina.1 = Output ein und probiere dann nochmal. PIN 30 Spannung für den AD Wandler, wird aber glaube ich auch benötigt, wenn du den Port digital verwenden willst. Mußt du aber mal nachlesen. Ich schliesse die immer direkt mit an. PIN 31 ist die Masse für den AD Wandler PIN 11 Masse allgemein MFG Dieter
hi! ich hab nun ziemlich alles versucht, unteranderem auc das;geht aber auch nicht. Trotzdem Danke, denn der Compiler Fehler ist nun weg. Anfang: Config Pinb.1 = Output Set Portb.1 Waitms 1000 Reset Portb.1 Waitms 1000 Goto Anfang jedenfalls im Simulator nicht. Und den ISP werde ich frühstens morgen aufbauen können :-( Nik
Ich kenne Bascom nicht - siehtr aber eigentlich richtig aus. Ich denke schon dass es im Simulator funktioniert, aber eine Sekunde warten kann da ne ganze Weie dauern ... Probiers mal aus, wenn du den ISP aufgebaut hast (oder verkürze doch einfach mal die zeiten auf 5ms oder so für den Simulator).
Hallo Also der Code geht bei mir in Bascom ohne Probleme Config Pina.1 = Output Anfang: Porta.1 = 1 Waitms 10 Porta.1 = 0 Waitms 10 Goto Anfang Immer mit F8 den nächsten Schritt ausführen. Wenn du das Programm in den uC überträgst, ändere die waitms in 500 oder so, sonst geht das zu schnell. MFG Dieter
schade, es klappt immernoch nicht..es liegt jedoch nicht daran das der Simulator überhaupt nicht funktioniert, denn eingaben mit z.b. if portb.1 = 1 then .... funktionieren..Auch das Lcd Display funktioniert tadellos. Ich bin jetzt wieder am isp bauen *fast fertig*:) . Aber kann es sein das ein Prog. im Simulator nicht funktioniert, in Echt aber schon? Vielleicht liegts auch an der Version ich habe : BASCOM-AVR IDE Version : 1.11.7.3 Compiler: Version 1.11.7.3 Oder muss man noch irgendw etwas aktivieren? Mfg Nik
danke nochmal an alle!! nun funktionierts aber etwa mit 3 sekunden on/off obwohl ich es auf 500ms eingestellt habe. Ich hab dann jedoch gemerkt das ich noch keinen Quarz angehängt habe :) komisch-geht trotzdem :) MFG Nik
Hi, standartmäßig ist beim Atmel der interne Oszillator eingeschaltet. -> Funktioniert trotzdem & langsamer. Gruß Oliver
aha, danke, wie kann ich den denn abschalten? denn wenn ich ein programm erstelle indem ein 10mhz quarz angegeben ist,ich verwende natürlich auch so einen, dann läuft alles um den faktor 10 langsamer. Ich muss dann alle wait werte mal zehn rechnen, um herauszufinden, wie lange die pause wirklich dauert...wahrscheinlich macht der dann auch alle anderen Befehle langsamer.... Nik
@ Nik ich kenne Bascom nicht. In C würde man in einem Header-File die Frequenz definieren, um dann in einer Delay-Funktion (oder Waitms) diese Definition zur Berechnung der Wartezeit heranzuziehen. Der Vorteil ist, dass man bei Quarzwechsel nur noch das Define ändern muss und dann verhält sich die Delay-Funktion dementsprechend. Ich hoffe, dass hat dir weitergeholfen. Oliver
Hi! Danke für eure Tipps, das mit der 10 fach langsameren Geschwindigkeit lässt sich liess sich noch nicht ändern, aber ich bin nun zum "hello world" Test fürs lcd weitergegangen. Funktioniert auch ganz toll. Doch ich wollte nun mal n' Taster abfragen. Pullups hab ich eingebaut, Spannung nachgemessen, an den richtigen pins angeschlossen, im simulator klappts...hat jemand noch ne idee? $regfile "m16def.dat" 'Config Portb.3 = Input 'Config Portb.2 = Input Cls Initlcd Home Lcd "Taster abfragen" Anfang: If Portb.2 = 1 Then Goto Taste1 If Portb.3 = 1 Then Goto Taste2 Goto Anfang Taste1: Locate 2 , 1 Lcd "Taste 1" Goto Anfang Taste2: Locate 2 , 1 Lcd "Taste 2" Goto Anfang wenn ich übrigens die remarks bei den config .... weglasse spuckt der compiler nen fehler aus : "can't find hw-register"... Nik
Hallo Nik Wenn du einzelne Pins einstellen willst, geht das über pind.1 'Config Portb.3 = Input 'Config Portb.2 = Input Config Pinb.3 = Input Config Pinb.2 = Input Über Port geht immer nur ein ganzer Port MFG Dieter
Hi, also du musst in BASCOM ebenfalls die Frequenz einstellen, am besten als eines der ersten Befehle: $regfile = "m128def.dat" ' es wird ein atmega 128 verwendet $crystal = 4000000 ' Quarz mit 4MHz $baud = 19200 ' Baud-Rate für UART Dann stimmen auch die Zeiten von Wait und Waitms ;-) Gruß Sebezahn
ok, danke, das funktioniert nun. Jedoch erkennt der Controller die Tasten nicht richtig. Ich hab das so gemacht das er bei dereinen Taste das Display nach rechts shiftet und bei der zweiten nach links. Doch der LCD-Inhalt springt dauern umher. immer einen Schritt rechts, dann einen nach links. als ob ich dauern die Taster drücken würde. Ich hab die Spannungen nachgemessen normal ca 1 volt <- wesshalb? gedrückt 5 volt. Ich hab die Taster so angeshlossen wie im bild im anhang Nik
Hi Nik, falls du dein Problem noch nicht gelöst hast hier der Vorschlag: Wenn du einen physikalischen Zustand eines Pins abfragen willst musst du das unbedingt mit der if pinb.2 = 1 (oder 0) methode abfragen. die portb.2 methode frägt nicht den physikalischen Zustand ab sondern das Register von dem jeweiligen Port. da dieses bei die zuletzt auf 1 gesetzt wurde springt natürlich auch dein Display spazieren. Ich würde mal empfehlen ein paar Stunden in die Hilfe zu investieren, da stehen solche Probleme schoen beschrieben... Falls du trotzdem noch Probleme haben solltest, kannst ja mal mailen oder einfach hier im board fragen. Hier gibts echt ein paar µC Gods! Gruss Alex
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.